Kube Controller Manager

Yu Sang Min·2025년 5월 16일

CKA

목록 보기
4/110
post-thumbnail

📌 kube-controller Manager

  • 노드나 컨테이너의 생성과 삭제를 관리
  • 노드의 상태를 감시한다
  • 상황을 재조정하기 위해 필요한 조치를 취한다
  • 쿠버네티스 컨트롤러 매니저는 시스템 내 다양한 구성 요소(컴포넌트)의 상태를 지속적으로 모니터링하고 시스템 전체를 원하는 기능 상태로 만든다
  1. watch Status
    ⬇️
  2. Remediate Situation

👨🏻‍💻 Node Controller

  • 노드의 상태를 모니터링
  • 응용 프로그램이 계속 실행 되도록 필요한 행동을 함
  • kube-apiserver를 통해서 실행
  • 5초마다 노드의 상태를 확인한다 (Node Monitor Period = 5s)
$ kubectl get nodes
…
  • 노드의 heartbeat가 멈추면 unreachable로 표시
  • 40초 후에 신호가 잡힘(Node Monitor Grace Period = 40s)
  • 노드가 수신 불가로 표시되면 다시 뜰때까지 5분 소요 (POD Eviction Timeout = 5m)
  • 그렇지 않으면 해당 노드에 할당된 Pod를 제거하고 replicaset의 건강한 노드에 프로비전

👨🏻‍💻 Replication Controller

  • ReplicaSet의 상태를 모니터링
  • 원하는 수의 Pod가 Set내에서 항상 사용 가능하도록 함
  • Pod가 죽으면 다른 Pod가 자동으로 생성

K8S에는 이외에도 많은 컨트롤러가 존재 (deployment, namespace, endpoint, Job, PV-Protection, PV-Binder, Service-Account, Stateful-set, ReplicaSet, CronJob controller 등등)

❓많은 컨트롤러는 어떻게 확인하고 클러스터의 어디에 위치할까?

👉 kube-controller-manager 라는 하나의 프로세스로 패키지화 때문에, kube-controller-manager를 설치하면 다른 컨트롤러도 설치됨

🔨 Installing kube-controller-manager

$ wget https://storage.googleapis.com/kubernetes-release/v1.13.0/bin/linux/amd64/kube-controller-manager
  • 쿠버네티스 릴리스 페이지에서 kube 컨트롤러 관리자를 다운로드해 서비스로 추출해 실행
  • 여기서 컨트롤러의 사용자 추가 옵션 제공
# 노드 컨트롤러의 모니터링 옵션과 동일함

--node-monitor-periods=5s
--node-monitor-grace-periods=40s
--pod-eviction-timeout=5m0s
  • 이외에 컨트롤러 옵션을 활성화 할지 비활성화 할지 결정하는 옵션
  • 전부 default로 활성화 되지만 몇개만 활성화하고 선택 할 수 있음
  • 컨트롤러가 작동하지 않거나 존재하지 않을경우 이걸 확인 할 것

⚙️ View kube-controller-manager - kubeadm

$ kubectl get pods -n kube-system
NAMESPACE      NAME                                                   READY      STATUS       RESTARTS        AGE
…
kube-system      kube-controller-manager-master      1/1             Running           0          1m
  • kubeadm에서는 마스터노드의 kube-system 네임스페이스에 Pod로 kube-controller-manager를 배포함
  • Pod의 definition 파일(yaml)에서 옵션확인 가능
# kubeadm 사용시
$ cat /etc/kubernetes/manifests/kube-controller-manager.yaml

# non-kubeadm 옵션 확인시
$ cat /etc/systemd/system/kube-controller-manager.service

# 프로세스 실행과 옵션 확인
$ ps -aux | grep kube-controller-manager // 마스터 노드 에서 실행
profile
React, Node.js, AWS, Git, Github, Github Action, Docker, K8S

0개의 댓글