이 글은 아래 자료를 참고하여 작성되었습니다.
Udemy [Certified Kubernetes Administrator (CKA) with Practice Tests]
1. Kube Controller Manager란?
Kube Controller Manager는 여러 컨트롤러를 하나의 프로세스로 패키징한 구성 요소로, 각 컨트롤러는 시스템 내의 다양한 구성 요소들의 상태를 지속적으로 모니터링하고(Watch Status), 원하는 상태로 유지하기 위해 필요한 조치를 자동으로 실행한다(Remediate Situation). 이를 통해 Kubernetes 클러스터의 안정성과 일관성을 보장한다.
2. Kube Controller Manager의 주요 역할
- 노드 관리:
- 노드 컨트롤러(Node Controller): 노드 컨트롤러는 클러스터 내 노드의 상태를 주기적으로(Node Monitor Period = 5s) 모니터링하고, 문제가 발생했을 때 필요한 조치를 취한다. 예를 들어, 노드가 일정시간(Node Monitor Grace Period = 40s) 동안 응답하지 않으면 노드를 접근 불가로 표시하고, 일정 시간(POD Eviction Timeout = 5m) 안에 복구되지 않으면 해당 노드에 할당된 파드를 다른 정상 노드로 재배치한다.
- 파드 관리:
- 복제 컨트롤러(Replication Controller): 복제 컨트롤러는 특정 레플리카셋 내의 파드가 항상 원하는 개수만큼 존재하도록 보장한다. 만약 파드가 실패하거나 종료되면, 복제 컨트롤러는 즉시 새로운 파드를 생성하여 레플리카셋의 상태를 유지한다.
- 리소스 관리:
- 디플로이먼트(Deployment) 및 서비스 관리: 다양한 컨트롤러들이 디플로이먼트, 서비스, 네임스페이스, 영구 볼륨 등의 리소스를 관리한다. 이들 컨트롤러는 리소스의 상태를 모니터링하고, 필요할 경우 자동으로 조정하여 시스템의 일관성을 유지한다.
- 시스템 전반의 관리:
- 다양한 컨트롤러의 조정: Kube Controller Manager는 다양한 컨트롤러를 통해 시스템 내 리소스와 구성 요소를 조정하여, Kubernetes 클러스터가 항상 예상대로 동작하도록 관리한다. 각 컨트롤러는 클러스터의 특정 영역을 책임지며, 클러스터의 상태를 지속적으로 모니터링하고 필요한 조치를 취한다.
- 가용성 및 장애 대응: 여러 컨트롤러가 협력하여 클러스터의 가용성을 높이고, 예상치 못한 장애 상황에서도 신속하게 대응할 수 있도록 지원한다. 예를 들어, 노드 컨트롤러가 노드 장애를 감지하고, 복제 컨트롤러가 사망한 파드를 자동으로 복구하는 등의 작업이 이루어진다.
3. Kube Controller Manager의 설치 및 구성
- 설치 방법: Kube Controller Manager는 Kubernetes 릴리스 페이지에서 바이너리 파일로 제공되며, 이를 다운로드한 후 마스터 노드에서 서비스로 실행하거나 Kubeadm을 활용할 수 있다. 설치 시 다양한 옵션을 통해 컨트롤러의 동작을 사용자 정의할 수 있다.
- 주요 설정 옵션:
- 노드 모니터 주기(Node Monitor Period), 유예 기간(Node Monitor Grace Period), 퇴출 타임아웃(POD Eviction Timeout) 등의 설정이 가능하며, 이는 노드 컨트롤러의 동작 방식을 조정하는 중요한 옵션들이다.
- 컨트롤러 활성화 옵션: 기본적으로 모든 컨트롤러가 활성화되지만, 특정 컨트롤러만 선택적으로 활성화할 수도 있다. 특정 컨트롤러가 예상대로 동작하지 않는 경우, 이 옵션을 확인하는 것이 좋다.
- 옵션 조회 방법:
- 바이너리 설치 시: /etc/systemd/system/kube-controller-manager.service 파일에서 옵션을 확인할 수 있다.
- Kubeadm 설치 시: Kube Controller Manager는 master node의 kube-system 네임스페이스에 pod로 배포된다. 관련 옵션은 /etc/kubernetes/manifests/kube-controller-manager.yaml 파일에서 확인할 수 있다.
- process 조회로 알아보기: master node에서
ps -aux | grep kube-controller-manager
'Kubernetes' 카테고리의 다른 글
20. Core Concepts - Kubelet (3) | 2024.09.25 |
---|---|
19. Core Concepts - Kube Scheduler (0) | 2024.09.25 |
17. Core Concepts - Kube API Server (1) | 2024.09.20 |
16. Core Concepts - ETCD (0) | 2024.09.19 |
15. Kubernetes Overview - Docker vs Containerd (2) | 2024.09.18 |