클러스터란?

시작하기전




클러스터 정보

# kubectl cluster-info

클러스터 상태

# kubectl version
# kuebtctl get componentstatuses 
NAME STATUS MESSAGE ERROR 
scheduler Healthy ok 
controller-manager Healthy ok 
etcd-0 Healthy {"health": "true"}

※ controller-manager : 클러스터의 동작을 제어, 다양한 컨트롤러를 실행하는 역할.

※ sheduler : 클러스터의 다른노드에 다른 pod 배치 및 로드밸런싱 역할.

※ etcd : 모든 API객체가 저장된 클러스터 저장소.

클러스터 이벤트 목록


# kubectl get events

클러스터 노드 목록

# kubectl get nodes

클러스터 노드 상세

# kubectl describe node {Node Name}
Name:               NodeName
Roles:              <none>
Labels:             beta.kubernetes.io/arch=amd64
                    beta.kubernetes.io/os=linux
                    kubernetes.io/hostname=NodeName
Annotations:        node.alpha.kubernetes.io/ttl=0
                    volumes.kubernetes.io/controller-managed-attach-detach=true
CreationTimestamp:  Mon, 09 Jul 2018 13:32:05 +0900
Taints:             <none>
Unschedulable:      false


//운영정보 확인
Conditions:
  Type             Status  LastHeartbeatTime                 LastTransitionTime                Reason                       Message
  ----             ------  -----------------                 ------------------                ------                       -------
  OutOfDisk        False   Tue, 31 Jul 2018 11:12:06 +0900   Mon, 09 Jul 2018 13:32:05 +0900   KubeletHasSufficientDisk     kubelet has sufficient disk space available
  MemoryPressure   False   Tue, 31 Jul 2018 11:12:06 +0900   Mon, 09 Jul 2018 13:32:05 +0900   KubeletHasSufficientMemory   kubelet has sufficient memory available
  DiskPressure     False   Tue, 31 Jul 2018 11:12:06 +0900   Mon, 09 Jul 2018 13:32:05 +0900   KubeletHasNoDiskPressure     kubelet has no disk pressure
  PIDPressure      False   Tue, 31 Jul 2018 11:12:06 +0900   Mon, 09 Jul 2018 13:32:05 +0900   KubeletHasSufficientPID      kubelet has sufficient PID available
  Ready            True    Tue, 31 Jul 2018 11:12:06 +0900   Mon, 09 Jul 2018 13:32:15 +0900   KubeletReady                 kubelet is posting ready status
Addresses:
  InternalIP:  100.00.00.00
  Hostname:    NodeName


//용량정보
Capacity:
 cpu:                8
 ephemeral-storage:  79140092Ki
 hugepages-2Mi:      0
 memory:             8008968Ki
 pods:               110
Allocatable:
 cpu:                8
 ephemeral-storage:  72935508667
 hugepages-2Mi:      0
 memory:             7906568Ki
 pods:               110


//리눅스커널 버전 정보 및 SW현황
System Info:
 Machine ID:                 346dde...
 System UUID:                346DDE...
 Boot ID:                    3945db...
 Kernel Version:             3.10.0...
 OS Image:                   CentOS Linux 7 (Core)
 Operating System:           linux
 Architecture:               amd64
 Container Runtime Version:  docker://17.3.2
 Kubelet Version:            v1.10.3
 Kube-Proxy Version:         v1.10.3
ExternalID:                  NodeName
Non-terminated Pods:         (4 in total)
  Namespace                  Name                CPU Requests  CPU Limits  Memory Requests  Memory Limits
  ---------                  ----                ------------  ----------  ---------------  -------------
  default                    kuard               0 (0%)        0 (0%)      0 (0%)           0 (0%)
  default                    kuard-config        0 (0%)        0 (0%)      0 (0%)           0 (0%)
  kube-system                kube-proxy-l2xlf    0 (0%)        0 (0%)      0 (0%)           0 (0%)
  kube-system                weave-net-kfg4n     20m (0%)      0 (0%)      0 (0%)           0 (0%)
Allocated resources:
  (Total limits may be over 100 percent, i.e., overcommitted.)
  CPU Requests  CPU Limits  Memory Requests  Memory Limits
  ------------  ----------  ---------------  -------------
  20m (0%)      0 (0%)      0 (0%)           0 (0%)
Events:         <none>

프록시

클러스터 내 서비스의 로드밸런싱을 위한 네트워크 트래픽을 라우팅.

클러스트의 모든 노드에 프록시가 존재해야 함.

쿠버네티스는 데몬세트 API객체를 가지고 있어 많은 클러스터에서 프록시 기능을 수행함.

다음과 같이 프록시 확인 가능

# kubectl get daemonSets --namespace=kube-system kube-proxy
NAME         DESIRED   CURRENT   READY     UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
kube-proxy   2         2         2         2            2           <none>          1h

DNS

클러스터에 정의된 서비스의 이름 지정과 검색을 제공.

DNS서버는 클러스터에서 복제된 서비스로 실행.

크기에 따라 클러스터에 하나 이상의 DNS 서버가 실행중임을 확인.

DNS 서비스는 복제본을 관리하는 deployment 로 실행.

# kubectl get deployments --namespace=kube-system kube-dns
NAME       DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
kube-dns   1         1         1            1           1h

DNS에 대한 로드밸런싱 수행.

# kubectl get services --namespace=kube-system kube-dns
NAME       TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)         AGE
kube-dns   ClusterIP   10.96.0.10   <none>        53/UDP,53/TCP   2h

Dashboard

쿠버네티스 GUI. 

디플로이먼트로 관리

# kubectl get deployments --namespace=kube-system kubernetes-dashboard
NAME                   DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
kubernetes-dashboard   1         1         1            1           13d

Dashboard Service 수행.

# kubectl get services --namespace=kube-system kubernetes-dashboard
NAME                   TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)   AGE
kubernetes-dashboard   ClusterIP   10.104.99.3   <none>        443/TCP   13d



  • No labels
Write a comment…