Page 43 -
P. 43
19.5 kube-controller-manager
K ubernetes P erfect G uide
kube-controller-manager는 다양한 컨트롤러를 실행하는 구성 요소다. 디플로이먼트 컨트롤
러나 레플리카셋 컨트롤러에서는 디플로이먼트나 레플리카셋 상태를 모니터링하면서 필요에 따
라 레플리카셋이나 파드를 생성한다. 예를 들어, 레플리카셋 요구 파드 수(Desired)가 3, 현재 기
동 중인 파드 수(Running)가 1인 경우에는 부족한 두 개의 파드를 PodTemplate을 사용하여 생
성한다. 이때 kube-controller-manager는 kubectl 명령어로 등록할 때와 마찬가지로 파드만
등록하고, 실제 스케줄링은 kube-scheduler가 한다. 이외에도 노드 상태를 모니터링하는 노드
컨트롤러(Node Controller)나 서비스 어카운트 토큰을 생성하는 서비스 어카운트와 토큰 컨트롤러
등의 다양한 컨트롤러가 하나의 바이너리로 합쳐져 동작하고 있다. 각종 컨트롤러는 옵션에 따라
활성화/비활성화하는 것이 가능하다.
kube-controller-manager도 리더 선출 구조를 가지고 있어 한 대만 리더가 되어 기록함으로써
이중화를 할 수 있다.
19.6 kubelet K ubernetes P erfect G uide 19
kubelet은 각 쿠버네티스 노드에서 동작하는 구성 요소다. 도커 등의 컨테이너 런타임과 연계하 쿠버네티스 아키텍처의 이해
여 실제 컨테이너에 대한 기동과 정지 등을 관리한다. kube-apiserver를 통해 파드가 등록된 후
kube-scheduler에 의해 해당 파드가 기동되는 노드가 결정되면 kubelet은 그것을 감지하고 자
신의 노드에서 기동해야 하는 컨테이너를 기동한다.
기본적으로는 이런 순서로 컨테이너를 기동시키지만, 자신의 노드에 정적으로 기동시키고 싶은
컨테이너가 있다면 노드의 특정 경로에 매니페스트를 배치하여 kube-scheduler에 의존하지 않
2
고 항상 자신의 노드에 기동시키는 것도 가능하다(스태틱 파드(Static Pod) ). 예를 들어 kube-
2 https://kubernetes.io/ko/docs/tasks/configure-pod-container/static-pod/
797
쿠버네티스_04.indd 797 2021-07-20 오후 1:34:56