Udemy의 Certified Kubernetes Administrator (CKA) with Practice Tests 강의의 17. Kube Controller Manager 챕터를 공부한 내용으로 강의 내용과 다를 수 있습니다. 정확한 내용은 강의를 들으시는 것을 추천드립니다.
kube controller manager는 다양한 컨트롤러를 관리한다.
- 지속적으로 node의 상태를 모니터링
- 상황을 개선하기 위한 조치
다양한 컴포넌트들의 상태를 모니터링하고 전체 시스템이 의도 된 기능과 상태로 작동하게 하는 프로세스 이다.
1. Controller 종류
1-1) Node Controller
어플리케이션이 계속 정상적으로 실행 될 수 있도록 노드의 상태를 모니터링하고 Kube API Server와 함께 조치를 취한다.
node-controller → api-server → node → api-server → node-controller
Node controller는 5초마다 node의 상태(health)를 테스트한다.
40초 동안 통신이 안되면 접근 불가 표시(NotReady)가 뜬다.
Node 접근 불가 표시 후 5분이 지나면 node의 pod에서 제거하고 pod가 replica set의 일부이면 replica set의 정상적인 pod를 제공한다.
1-2) Replication Controller
Resplica sets의 상태를 모니터링하고 replica set 내의 정해진 pod 수를 보장한다.
Pod가 죽으면 pod를 만든다.
1-3) Other Controllers
쿠버네티스엔 상단 controller 말고 다른 사용 가능한 controller가 많다.
배포, 서비스, 네임스페이스, 영구 볼륨 등 어떤 개념, 구조든 다양한 컨트롤러를 통해 구현된다.
이러한 컨테이너들은 쿠버네티스 뒤에서 뇌의 역할을 한다.
Controller들은 Kubernetes Controller Manager라는 단일 프로세스로 패키징 되어있다.
2. Controller 다뤄보기
2-1) kube-Controller-Manager 설치
kubernates 릴리즈 페이지에서 kube-control-manager를 다운 받고, extract 하고, 서비스 실행한다.
wget <https://storage.googleapis.com/kubernetes-release/release/v1.13.0/bin/linux/amd64/kube-controller-manager>
kube-controller-manager.serviceve 파일에서 컨트롤러를 커스터마이징 하거나 원하는 컨트롤러만 활성화 할 수 있다.
# cat /etc/systemd/system/kube-controller-manager.service
--node-monitor-period=5s, --node-monitor-grace-period=40s, --pod-eviction-timeout=5m0s 와 같이 노드 컨트롤러 모니터링의 몇몇 디폴트 세팅들이 여기에 옵션으로 들어간다.
--controllers 라는 추가 옵션은 활성화할 컨트롤러를 지정하는데 사용할 수 있다.
디폴트는 모두 활성화되어 있다.
만약 컨트롤러가 잘 작동하지 않거나 존재하지 않으면 --controllers 옵션을 먼저 보는게 좋다.
2-2) Kubeadm으로 kube-controller-manager 설치하기
Kubeadm으로 세팅 시 kube-controller-manager는 maste node에 있는 kube-system namespace에 파드로 배포된다.
# kubectl get pods -n kube-system
<kubeadm 설치 시 options 확인>
kubeadm으로 세팅 시 kube-controller-manager 서버 옵션은 /etc/kubernetes/manifests 경로의 pod 설정 파일에서 볼 수 있다.
# cat /etc/kubernetes/manifests/kube-controller-manager.yaml
<kubeadm로 설치 하지 않았을 때 options 확인>
kubeadm 으로 세팅하지 않았으면 kube-controller-manager.service 파일에서 옵션을 볼 수 있다.
# cat /etc/kubernetes/manifests/kube-controller-manager.yaml
마스터 노드에 있는 프로세스를 리스트로 보여주고, kube-apiserver를 살펴봄으로써 실행 중인 프로세스와 옵션들을 확인 할 수 있다.
# ps -aux | grep kube-controller-manager
'IT 강의 > 도커 쿠버' 카테고리의 다른 글
[CKA 강의 요약] Kublet (0) | 2024.03.14 |
---|---|
[CKA 강의 요약] Kube Scheduler (0) | 2024.03.07 |
[CKA 강의 요약] Kube-apiserver (0) | 2024.03.07 |
[CKA 강의 요약] ETCD (0) | 2024.03.07 |
[CKA 강의 요약] 쿠버네티스 구조 이해하기 (0) | 2024.03.06 |