쿠버네티스를 처음 접하면 kube-apiserver, etcd, kubelet, scheduler 같은 이름들이 쏟아져 나옵니다.
“이게 다 뭐고, 서로 어떻게 연결되는 거야?”라는 생각이 드셨다면 이 글이 딱 맞습니다.
오늘은 쿠버네티스의 핵심 구성요소를 정리하고, 각 요소들이 어떻게 맞물려 돌아가는지를 직관적으로 이해할 수 있도록 풀어보겠습니다.
쿠버네티스는 크게 두 축으로 나눌 수 있습니다.
| 구성요소 | 역할 |
|---|---|
| kube-apiserver | 모든 요청이 통과하는 게이트웨이. kubectl 명령도 여기로 들어옴 |
| etcd | 클러스터 상태를 저장하는 Key-Value DB |
| kube-scheduler | 새 파드를 어떤 노드에 배치할지 결정 |
| kube-controller-manager | 파드 복제, 노드 상태 감시, 장애 복구 등 다양한 컨트롤러 실행 |
| cloud-controller-manager | (선택) 클라우드 환경과 통합 |
| 구성요소 | 역할 |
|---|---|
| kubelet | 해당 노드에서 파드가 정상 실행되도록 보장, 컨트롤 플레인과 통신 |
| kube-proxy | 네트워크 규칙 관리, 서비스 IP와 파드 간 트래픽 라우팅 |
| 컨테이너 런타임 | Docker, containerd 등 실제 컨테이너 실행 담당 |
사용자 → API Server
kubectl apply 같은 명령이 들어오면 API Server가 이를 받아들임 API Server ↔ etcd
Scheduler → API Server
Controller Manager → API Server
API Server → Kubelet
Kubelet → Container Runtime
Kube-proxy
👉 이렇게 톱니바퀴처럼 맞물려 돌아가면서 쿠버네티스 클러스터는 안정적으로 동작합니다.
💡 다음 글에서는 이 구성요소들이 실제로 어떻게 동작하는지, kubectl get nodes, kubectl get pods 출력과 연결해서 실습 기반으로 해석하는 방법을 다뤄보겠습니다.