kube-controller-manager는 쿠버네티스의 컨트롤러(controller)들을 관리하고 실행하는 핵심 구성 요소이다.
controller는 쿠버네티스 클러스터에서 원하는 상태(desired state)와 실제 상태(actual state)가 일치하도록 보장하는 역할을 한다.
역할과 기능
1. 컨트롤러 통합 실행: 쿠버네티스에서 여러 컨트롤러를 실행하며, 각각의 컨트롤러는 특정 리소스의 상태를 모니터링하고 이를 조정합니다.
2. 상태 일치 보장: 선언정 방식 동작, 사용자가 원하는 상태를 정의하면, 컨트롤러가 클러스터의 실제 상태를 지속적으로 관찰하고 수정하여 원하는 상태를 유지한다.
3. 자율 동작: kube-controller-manager는 자동으로 상태를 조정하며, 클러스터 관리자가 개입하지 않아도 작업을 수행한다.
kube-controller-manager는 여러 컨트롤러를 포함한다.
(1) Node Controller
- 기능:
- 클러스터의 노드 상태를 모니터링
- 노드가 응답하지 않으면, 일정 시간 이후 해당 노드에서 실행 중인 파드를 다른 노드로 이동(evict)
(2) Replication Controller
- 기능:
- 파드의 개수가 사용자가 정의한 복제본 수(replicas)와 일치하도록 보장
- 파드가 삭제되거나 실패하면 새로운 파드를 생성
(3) Deployment Controller
- 기능:
- 애플리케이션의 디플로이먼트를 관리
- 업데이트, 롤백, 스케일링 작업 처리
(4) Job Controller
- 기능:
- 일회성 작업(Job) 관리
- 작업이 완료되거나 실패 상태로 끝날 때까지 실행 상태 모니터링
(5) Service Account Controller
- 기능:
- 각 네임스페이스에 기본 서비스 계정(Service Account)을 생성
- 파드가 API 서버와 통신할 때 사용할 인증 토큰 관리
(6) Endpoints Controller
- 기능:
- 각 서비스와 연결된 파드의 네트워크 엔드포인트 관리
- 서비스와 관련된 파드 목록을 자동으로 업데이트
(7) Persistent Volume Controller
- 기능:
- PersistentVolume(PV)과 PersistentVolumeClaim(PVC)를 연결
- PVC 요청에 적합한 PV를 자동으로 바인딩(binding)
(8) Horizontal Pod Autoscaler Controller
- 기능:
- 애플리케이션의 리소스 사용량(CPU, 메모리 등)을 기반으로 파드를 자동으로 스케일링
(9) Garbage Collector Controller
- 기능:
- 더 이상 필요하지 않은 리소스를 자동으로 삭제
- 예: 삭제된 디플로이먼트와 연결된 파드 제거
(10) CronJob Controller
- 기능:
- 정해진 일정에 따라 주기적으로 작업(CronJob) 실행
kube-controller-manager와 기타 컴포넌트의 관계
- kube-apiserver:
- kube-controller-manager는 kube-apiserver와 통신하여 클러스터 상태 정보를 확인하고 업데이트한다.
- etcd:
- 클러스터 상태 데이터는 kube-apiserver를 통해 etcd에 저장된다.
- kube-controller-manager는 직접적으로 etcd와 상호작용하지 않는다.
- 노드 및 파드:
- 컨트롤러는 노드와 파드의 상태를 관리하고, 스케일링, 복제 등의 작업을 수행한다.
반응형
'Container > Kubernetes' 카테고리의 다른 글
[K8S] Deployment (0) | 2024.12.31 |
---|---|
[K8S] kube-proxy (0) | 2024.12.28 |
[K8S] Kube-API Server (0) | 2024.12.24 |
[K8S] ETCD (1) | 2024.12.24 |
[K8S] 컨테이너 런타임 (0) | 2024.12.24 |