← 스터디 홈
2편 · 약 7분

클러스터 아키텍처

컨트롤 플레인과 노드

쿠버네티스 클러스터는 크게 두 부분이다. 컨트롤 플레인은 클러스터의 "두뇌"로 원하는 상태(desired state)를 관리하고, 워커 노드는 실제 컨테이너(Pod)를 실행한다.

컨트롤 플레인API Serveretcdscheduler
워커 노드 ×Nkubeletkube-proxyPod
컨트롤 플레인이 원하는 상태를 관리하고, 워커 노드가 Pod를 실행한다

컨트롤 플레인 구성요소

  • kube-apiserver: 모든 요청이 거치는 정문. 상태 변경은 전부 여기로.
  • etcd: 클러스터의 모든 상태를 담는 키-값 저장소.
  • kube-scheduler: 새 Pod를 어느 노드에 둘지 결정.
  • controller-manager: 현재 상태를 원하는 상태로 수렴시키는 제어 루프.

노드 구성요소

  • kubelet: 노드에서 Pod가 명세대로 떠 있는지 책임지는 에이전트.
  • kube-proxy: 서비스 네트워킹 규칙을 노드에 반영.
  • 컨테이너 런타임: 실제 컨테이너를 실행(containerd 등).

선언형 모델

쿠버네티스의 핵심 사고방식은 "명령형"이 아니라 "선언형"이다. 사용자는 kubectl apply로 원하는 상태를 YAML로 선언하고, 컨트롤러들이 끊임없이 현재 상태와 비교해 그 차이를 메운다. Pod가 죽으면 누가 시키지 않아도 다시 생성되는 이유다.

kubectl apply -f deployment.yaml
kubectl get pods -o wide

References

  • https://kubernetes.io/docs/concepts/architecture/
  • https://kubernetes.io/docs/concepts/overview/components/