Search

Kube Controller Manager

Created
2023/08/10 10:12
Tags
k8s
CKA
Mumshad Mannambeth
Core Concept

1) About

Controller의 경우 노드가 적정 수의 Container를 보유하고 있는지, 노드의 상태가 Healthy인지, 노드가 보유하고 있는 Container들의 상태엔 문제가 없는지 등의 다양한 모니터링을 수행
이러한 Controller는 하나만 존재하는 것이 아니라 Node Controller, Replication Controller 등 다양하게 존재
*Node Controller의 기본 설정대로라면, 5초에 한 번씩 노드들이 살아있는지 확인하며, 40초 동안 응답이 없는 노드는 Unhealthy로 판별하고, Unhealthy인 노드들은 5분 내로 내부에 있는 Pod들을 다른 노드로 옮기도록 지시
*Replication Controller는 한 노드 내에 적절한 수의 Pod들을 구성하고 유지할 수 있도록 도움
쿠버네티스를 제어하는 이와 같은 Controller들은 개별적인 프로세스로 존재하는 것이 아니라 Kube Controller Manager라는 단일 프로세스 내에 패키지화 되어 존재
따라서 Kube Controller Manager의 설치만으로 다른 모든 Controller를 설치할 수 있음

2) System

클러스터 내에서 Kube Controller Manager가 어떻게 설정되었는지 보고 싶다면 확인할 수 있음 (단, 클러스터를 어떻게 구성했는지에 달려 있는데 kubeadmin을 사용한 경우와 그렇지 않은 경우로 나뉨)
kubeadmin을 사용한 경우엔 Kube Controller Manager를 마스터 노드 내에 kube-system 네임스페이스의 Pod로써 배포하게 되는데, /etc/kubernetes/manifests/kube-controller-manager.yaml 라는 Pod 정의 파일을 보면 Kube Controller Manager 설정 값들을 확인할 수 있음 (위에서 설명한 5초, 40초, 5분 등의 값들을 상세히 설정하고 확인할 수 있음)
kubeadmin을 사용하지 않은 경우엔 Kube Controller Manager를 Pod가 아닌 별도의 데몬으로 구동되기 때문에 /etc/systemd/system/kube-controller-manager.service 경로의 서비스 정의 파일을 통해 설정 값을 확인할 수 있음
*혹은 마스터 노드 내에서 ps -aux | grep kube-controller-manager 를 통해 Kube Controller Manager를 구동한 옵션들을 확인할 수 있음