kube-controller-manager?

kube-controller-manager의 역할은 Kubernetes를 구성하하는 다양한 컨트롤러들을 관리하는 것입니다. 컨트롤러들은 운용자로부터 주어진 상태(desired state)를 만족시키기 위해 다음과 같은 역할을 합니다.

  • 상태 모니터링
  • 상태에 따른 상태 해결(교정)

node-controller는 Cluster를 구성하는 노드들의 상태를 모니터링 합니다. 모니터링은 kube-apiserver를 통해 수행하며 매 5초 마다 상태관리를 수행합니다. 또한 노드의 이상이 감지될 시 40초간의 Grace period를 두어, 40초 이후에도 health check이 실패할 경우 NotReady Status를 만들어 해당 노드로 스케쥴링이 되지 않도록 합니다.

repliaction-controller는 ReplicaSet관리와 desinered Pod 수를 모니터링하고 관리합니다.

이 외에도 Kubernetes에는 deployment-controller, namespace-controller, job-controller 등 많은 Controller가 존재합니다. 이렇게 많은 컨트롤러들은 kube-controller-manager라는 프로세스로 패키지화 되어 있습니다. Vanilla Kubernetes를 설치했다면 kube-controller-manager-master라는 Pod가 kube-system namespace에서 동작하고 있는것을 확인 할 수 있습니다.

hugh@master:~$ kubectl get po -A
NAMESPACE     NAME                             READY   STATUS              RESTARTS         AGE
kube-system   coredns-787d4945fb-jgwpn         0/1     ContainerCreating   0                9d
kube-system   coredns-787d4945fb-z2km8         0/1     ContainerCreating   0                9d
kube-system   etcd-master                      1/1     Running             23               9d
kube-system   kube-apiserver-master            1/1     Running             22               9d
kube-system   kube-controller-manager-master   1/1     Running             10 (4d13h ago)   9d
kube-system   kube-proxy-9hhnn                 1/1     Running             0                9d
kube-system   kube-proxy-npxnt                 1/1     Running             0                9d
kube-system   kube-proxy-pckqp                 1/1     Running             0                9d
kube-system   kube-proxy-z26nh                 1/1     Running             0                9d
kube-system   kube-scheduler-master            1/1     Running             11 (4d13h ago)   9d
hugh@master:~$