2편 · 약 7분
클러스터 아키텍처
컨트롤 플레인과 노드
쿠버네티스 클러스터는 크게 두 부분이다. 컨트롤 플레인은 클러스터의 "두뇌"로 원하는 상태(desired state)를 관리하고, 워커 노드는 실제 컨테이너(Pod)를 실행한다.
컨트롤 플레인API Serveretcdscheduler
⇄
워커 노드 ×Nkubeletkube-proxyPod
컨트롤 플레인 구성요소
- 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 wideReferences
- https://kubernetes.io/docs/concepts/architecture/
- https://kubernetes.io/docs/concepts/overview/components/