수많은 컨테이너를 여러 대의 서버에 분산 배치하고, 장애 시 자동으로 복구하며, 무중단 배포를 실현하기 위해서는 정교한 관리 체계가 필요합니다. Kubernetes는 이러한 복잡한 문제를 선언적 방식으로 해결하는 오케스트레이션 도구입니다
아키텍처 구조: Control Plane과 Data Plane
Kubernetes 클러스터는 역할을 기준으로 관리 계층과 실행 계층으로 나뉩니다
flowchart TB
subgraph cp [Control Plane]
API["kube-apiserver"]
ETCD[("etcd (Storage)")]
SCHED["kube-scheduler"]
CM["controller-manager"]
end
subgraph node [Worker Node]
KUBELET["kubelet"]
PROXY["kube-proxy"]
CRI["Container Runtime"]
POD["Pods"]
end
USER["User / CI / CD"] --> API
API <--> ETCD
SCHED --> API
CM --> API
KUBELET -.-> API
KUBELET --> CRI --> POD
classDef primary fill:#2563eb,stroke:#1e40af,color:#ffffff
classDef success fill:#059669,stroke:#047857,color:#ffffff
classDef neutral fill:#475569,stroke:#334155,color:#ffffff
class API,SCHED,CM primary
class KUBELET,PROXY,CRI,POD success
class ETCD neutral
| 영역 | 역할 | 주요 컴포넌트 |
|---|---|---|
| Control Plane | 클러스터의 상태 관리 및 의사 결정 | API 서버, 스케줄러, 컨트롤러 매니저, etcd |
| Data Plane | 실제 컨테이너 워크로드 실행 | kubelet, kube-proxy, 컨테이너 런타임 |
제어 영역 핵심 컴포넌트
kube-apiserver
모든 통신의 중앙 접점입니다. 사용자 요청이나 내부 컴포넌트의 신호를 받아 유효성을 검증하고 그 결과를 저장소에 반영합니다. 상태 변경의 유일한 경로이며 수평 확장이 가능합니다
etcd
클러스터의 모든 데이터가 보관되는 분산 키-값 저장소입니다. Raft 알고리즘을 통해 일관성을 유지하며, 이 데이터가 유실되면 클러스터 복구가 불가능해지므로 철저한 백업과 HA 구성이 필수입니다
kube-scheduler
생성된 Pod를 어떤 노드에 배치할지 결정합니다. 리소스 여유 공간, 선호도(Affinity), 제약 조건 등을 종합적으로 고려하여 최적의 위치를 할당합니다
controller-manager
시스템의 실제 상태를 사용자가 정의한 상태로 맞추기 위해 끊임없이 대조하고 행동하는 루프를 실행합니다. 노드 장애 감지나 배포 개수 유지 등이 여기서 처리됩니다
실행 영역 핵심 컴포넌트
kubelet
각 노드의 대리인입니다. API 서버와 통신하며 자신에게 할당된 Pod의 상태를 관리하고, 컨테이너가 정상적으로 작동하도록 런타임을 제어합니다
kube-proxy
네트워크 규칙을 관리하여 Pod 간 통신이나 외부 트래픽이 적절한 대상으로 전달되도록 돕습니다. 주로 iptables나 IPVS를 활용하여 서비스 추상화를 구현합니다
선언적 동작: Reconcile 루프
Kubernetes는 “어떻게 해라”라는 명령이 아닌 “이 상태로 유지해라”라는 선언을 기반으로 움직입니다
- 사용자가 원하는 상태를 API 서버에 등록합니다
- 컨트롤러가 현재 상태와 비교합니다
- 차이가 발견되면 이를 해소하기 위한 행동을 즉시 수행합니다
이러한 지속적인 동기화 과정 덕분에 시스템은 장애 상황에서도 스스로 복구되는 자가 치유(Self-healing) 능력을 갖게 됩니다
정리
- Kubernetes는 선언적 API와 Reconcile 루프를 통해 클러스터를 관리합니다
- Control Plane은 의사 결정을, Data Plane은 워크로드 실행을 담당합니다
- etcd는 시스템의 유일한 진실 공급원(SSOT)으로 매우 중요합니다
- 모든 컴포넌트는 유기적으로 맞물려 시스템을 안정적인 상태로 유지합니다
다음 글에서는 이 플랫폼 위에서 실제 서비스를 구성하는 다양한 워크로드 오브젝트들을 정리합니다