IT 강의/도커 쿠버

[CKA 강의 요약] Kube Controller Manager

rnany 2024. 3. 7. 13:53

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