Kubernetes CKA발행일 2026. 1. 5.원본 https://blog.naver.com/jword_/224135466861 ↗

[CKA] 1.3 kube Controller Manager 기본

[CKA] 1.3 kube Controller Manager 기본 — #개발자의도구들 #kube-controller #cka #쿠버네티스 Controller 컨트롤러란 무엇인가? 쿠버네티스에서 컨...

#Cloud#Naver Blog

#개발자의도구들 #kube-controller #cka #쿠버네티스

​

Controller

컨트롤러란 무엇인가?

쿠버네티스에서 컨트롤러란, 클러스터의 상태를 지속적으로 감시하면서 "현재 상태"를 "원하는 상태"로 맞춰주는 역할을 합니다.

​

항구로 비유하자면

  • 선박 상태를 점검하는 선박 관리자
  • 컨테이너 수량을 맞추는 물류 관리자
  • 창고 공간을 관리하는 창고 관리자

​

각 관리자는 맡은 영역을 계속 살펴보며, 문제가 생기면 바로 조치를 취합니다. 이와 같이 쿠버네티스에는 많은 관리자(컨트롤러)가 존재하며 각자 담당영역에서 문제가 생기면 자동으로 해결해줍니다.

​

대표적인 컨트롤러

  1. 노드 컨트롤러

이미지

노드 컨트롤러는 워커 노드들의 건강 상태를 감시합니다.

​

각 노드의 kubelet은 주기적으로 kube-apiserver에게 상태 신호(heart-beat)를 보냅니다. 노드 컨트롤러는 이 하트비트를 통해 현재 노드가 정상인지 파악합니다.

이미지

만약 어떤 노드로부터 하트 신호가 끊기면 다음과 같은 조치를 취합니다.

  1. 40초 대기: 일시적인 네트워크 문제라고 가정하고 대기합니다.
  2. 연결 불가 표시: 40초가 지나도 응답이 없으면, 해당 노드를 "Unreachable"로 표시합니다.
  3. 5분 유예: 노드가 다시 살아날 수 있도록 5분의 시간을 부여합니다.
  4. 파드 재배치: 5분이 지나도 복구되지 않으면, 그 노드에 있던 파드들을 제거하고 다른 정상 노드에 새로 만들어줍니다.

​

2. Replication 컨트롤러

이미지

Replication 컨트롤러는 파드의 갯수를 원하는 만큼 유지시켜줍니다.

​

예를 들어 "front server pod"를 항상 3개로 유지시켜 달라고 할 수 있습니다.

​

  • 파드 하나가 죽으면? → 새로운 파드를 만들어서 3개를 맞춥니다.
  • 실수로 파드가 4개가 됐다면? → 하나를 제거해서 3개로 맞춥니다.

​

​

이 외에도 쿠버네티스에는 수많은 컨트롤러가 존재합니다.

​

  • Deployment 컨트롤러: 배포와 롤링 업데이트 관리
  • Service 컨트롤러: 서비스와 로드밸런싱 관리
  • Namespace 컨트롤러: 네임스페이스 관련 리소스를 관리
  • PersistentVolume 컨트롤러: 스토리지 볼륨 관리
  • Job 컨트롤러: 일회성 작업들 관리

​

kube-controller-manager

kube-controller-manager

많은 컨트롤러들이 각각 따로 실행되고 있으면 관리하기가 어렵습니다. 그래서 쿠버네티스는 모든 컨트롤러를 하나의 프로세스로 묶어서 실행합니다. 이게 바로 kube-controller-manger입니다.

​

kube-controller-manger를 설치하면, 그 안에 포함된 모든 컨트롤러가 함께 설치되고 실행됩니다.

​

설정 확인 법

  1. kubeadm

kube-controller-manager는 마스터 노드의 kube-system 네임스페이스에 Pod 형태로 배포됩니다.

text 코드 예제
                                    /etc/kubernetes/manifests/kube-controller-manager.yaml

​

2. 수동으로 설치

systemd 서비로 실행되며, 설정은 아래에서 확인 가능합니다.

text 코드 예제
                                    /etc/systemd/system/kube-controller-manager.service

실행중인 옵션 확인

text 코드 예제
                                    ps aux | grep kube-controller-manager

정리

컨트롤러는 클러스터의 상태를 지속적으로 감시하며, 현재 상태를 원하는 상태로 맞춰주는 역할을 합니다. 노드 컨트롤러는 노드의 건강상태를, 레플리케이션 컨트롤러는 파드의 개수를 관리합니다.

​

이런 수많은 컨트롤러들이 하나의 프로세스로 묶인 것이 kube-controller-manager입니다. 쿠버네티스가 알아서 자동으로 복구하고, 상태를 유지하는 self-healing 능력의 핵심이 바로 여기에 있습니다.

​