개발 이야기/[자격증] 쿠버네티스

[CKA with Practice Tests] Section 2. Core concepts - (4) Kube Controller Manager

경이로운아일라 2024. 8. 22. 21:04

이 글은 <Certificated Kubernetes Administrator (CKA) with Practice Test, Mumshad Mannambeth, Kode Kloud Training> 섹션 2. Core concepts를 참고하여 작성하였습니다.

 

[CKA with Practice Tests] Section 2. Core concepts - (4) Kube Controller Manager

 

What is Kube Controller Manager

마스터 노드는 컨테이너 혹은 노드가 잘못되지는 않았는지 확인하고 잘못된 게 있음 바로 잡는 역할도 합니다. 마스터 노드에서 앞서 말한 역할을 담당하고 있는 것이 Kube Controller Manager입니다. 하지만 팔로 업해야 하는 상태값은 많기에, 각 모니터링하는 대상 따라 별도의 Controller가 존재하며, 정확히 말하면 이 모든 Controller를 담고 있는 패키지가 Kube Controller Manager입니다.

 

Controllers

대표적인 Controller 두 개만 알아보겠습니다.

Node Controller

노드 컨트롤러는 노드의 상태를 계속 모니터링하고 비정상적 시그널을 감지하면 그에 맞는 조치까지 진행합니다. 간단히 상황을 살펴볼게요. 만약 Node Controller에 아래와 같이 옵션을 설정했다면,

Node Monitor Period = 5s
Node Monitor Grace Period = 40s
POD Eviction Timeout = 5m

 

Node controller는 API 서버를 통해서 5초마다 노드의 상태를 확인합니다. 만약 40초 이상 특정 노드로부터 상태 확인이 제대로 되지 않는다면, 해당 노드가 UNREACHABLE 하다고 판단합니다. 그리고 5분 동안 UNREACHABLE 상태로 유지된다면 이를 새로 띄우죠.

 

Replication Controller

Replication Controller는 Replication Set의 상태를 모니터링하고 요구되는 만큼의 Pod이 항상 떠있을 수 있도록 보장하는 역할을 담당하고 있습니다.

 

위 두 컨트롤러 말고도, CronJob, Service-Account Controller, Namespace Controller, Job Controller, Stateful-Set, PV-Binder Controller, Endpoint Controller 등 다양한 컨트롤러가 있습니다.

 

How to install

# 바이너리 파일 다운
wget https://storage.googleapis.com/kubernetes-release/release/v1.13.0/bin/linux/amd64/kube-controller-manager

# kube controller manager가 잘 떠있는지 확인
kubectl get pods -n kube-system

# kube controller manager 옵션 확인 방법 1
cat /etc/kubernetes/manifests/kube-controller-manager.yaml

# kube controller manager 옵션 확인 방법 2
ps-aux | grep kube-controller-manage​

 

 

만약 Kube Controller Manager가 잘 돌아가지 않는다면, 아래 옵션을 모범 예시로 삼아 비교해보는 것도 좋습니다.

--controllers stringSlice
 Default: [*]
 A list of controllers to enable. '*' enables all on-by-default controllers, 'foo' enables the controller 
named 'foo', '-foo' disables the controller named 'foo'.
 All controllers: attachdetach, bootstrapsigner, clusterrole-aggregation, cronjob, csrapproving, 
csrcleaner, csrsigning, daemonset, deployment, disruption, endpoint, garbagecollector, 
horizontalpodautoscaling, job, namespace, nodeipam, nodelifecycle, persistentvolume-binder, 
persistentvolume-expander, podgc, pv-protection, pvc-protection, replicaset, replicationcontroller, 
resourcequota, root-ca-cert-publisher, route, service, serviceaccount, serviceaccount-token, statefulset, 
tokencleaner, ttl, ttl-after-finished
 Disabled-by-default controllers: bootstrapsigner, tokencleaner