Kubernetes Cluster Architecture
Kubernetes Cluster Architecture는 클러스터가 어떻게 구성되고, 요청이 어떻게 처리되며, 각 컴포넌트가 어떤 역할을 하는지를 설명한다.
CKA 시험에서 가장 기본이면서도 가장 많이 연결되는 영역이다.



1. Kubernetes Cluster 구성 개요
Kubernetes 클러스터는 크게 두 영역으로 나뉜다.
🔹 Control Plane (Master Node)
- 클러스터 관리·제어
- 상태 판단 및 의사결정
🔹 Data Plane (Worker Node)
- 실제 애플리케이션(Pod) 실행
2. Control Plane (Master Node)
클러스터의 두뇌 역할
직접 컨테이너를 실행하지 않음
구성 요소 정리
2-1. kube-apiserver
- 모든 요청의 단일 진입점
- 인증(Authentication), 인가(Authorization), 검증(Validation) 수행
- etcd와 통신하는 유일한 컴포넌트
📌 핵심:
- kubectl → kube-apiserver → etcd
2-2. etcd
- 분산 Key-Value 저장소
- 클러스터의 모든 상태 정보 저장
- Nodes, Pods, ConfigMaps, Secrets, RBAC 등
📌 특징:
- Strong Consistency (RAFT)
장애 시 클러스터 치명적
2-3. kube-scheduler
- 새로 생성된 Pod를 어느 Worker Node에 배치할지 결정
- 기준:
- 리소스(CPU, Memory)
- Taints/Tolerations
- Affinity/Anti-Affinity
📌 실행은 하지 않고 결정만 한다
2-4. kube-controller-manager
- 클러스터 상태 감시
- Desired State ≠ Current State → 자동 복구
대표 컨트롤러:
- Node Controller
- Deployment / ReplicaSet Controller
- Job / CronJob Controller
3. Worker Node
실제 컨테이너가 실행되는 노드
구성 요소 정리
3-1. kubelet
- Worker Node의 핵심 에이전트
- 역할:
- Node 등록
- Pod 생성
- Pod 상태를 kube-apiserver에 보고
📌 kubelet이 없으면 Pod 실행 불가
3-2. Container Runtime
- 컨테이너 실행 담당
- 예:
- containerd
- CRI-O
3-3. kube-proxy
- Service 네트워크 담당
- Service IP → Pod IP로 트래픽 전달
- iptables / ipvs 규칙 생성
📌 특징:
- 모든 Worker Node에서 실행
- DaemonSet 형태
- 직접 트래픽 처리 ❌ (규칙만 설정)
4. 요청 흐름 (kubectl → Pod 생성)
아키텍처 이해의 핵심 흐름
- 사용자가 kubectl apply
- kube-apiserver
- 인증 / 인가 / 검증
- etcd에 상태 저장
- kube-scheduler가 노드 선택
- kubelet이 Pod 생성
- 상태를 kube-apiserver에 보고
📌 kube-apiserver 중심 구조
5. Service & Networking 구조
- Pod IP는 휘발성
- Service는 고정된 접근 지점
역할 분리
- CNI: Pod ↔ Pod 통신
- kube-proxy: Service ↔ Pod 연결
6. Master vs Worker 요약 비교
| 구분 | Master | worker |
| 역할 | 관리/제어 | 실행 |
| Pod 실행 | ❌ | ✅ |
| kube-apiserver | ✅ | ❌ |
| etcd | ✅ | ❌ |
| kubelet | ❌ | ✅ |
| kube-proxy | ❌ | ✅ |
7. Cluster Architecture 한 줄 요약
Kubernetes는 모든 판단은 Control Plane에서,
모든 실행은 Worker Node에서 이루어지는 구조다.
8. 실습 명령어 기준 정리
# 클러스터 / 노드
kubectl get nodes
kubectl get nodes -o wide
# Control Plane 컴포넌트
kubectl get pods -n kube-system
kubectl describe pod -n kube-system kube-apiserver-<master-name>
cat /etc/kubernetes/manifests/kube-apiserver.yaml
# etcd
kubectl get pods -n kube-system | grep etcd
kubectl exec -n kube-system etcd-<master-name> -- \
etcdctl get / --prefix --keys-only
ETCDCTL_API=3 etcdctl snapshot save snapshot.db
ETCDCTL_API=3 etcdctl snapshot status snapshot.db
# Scheduler / Pending Pod
kubectl get pods
kubectl describe pod <pod-name>
# Worker Node / kubelet
systemctl status kubelet
ps -ef | grep kubelet
# Container Runtime
kubectl describe node <node-name> | grep -i runtime
crictl info
# kube-proxy
kubectl get pods -n kube-system | grep kube-proxy
kubectl get daemonset kube-proxy -n kube-system
# Service / Networking
kubectl get svc
kubectl get endpoints
kubectl get endpointslices
# Pod 생성 흐름
kubectl apply -f pod.yaml
kubectl get pods
kubectl describe pod <pod-name>
'소소한 IT이야기 > CKA' 카테고리의 다른 글
| [CKA] Helm 정리01 – Chart, Release, Revision 개념과 install / upgrade / rollback (0) | 2025.12.30 |
|---|---|
| [CKA] ETCD 정리 (0) | 2025.12.29 |
| Docker vs containerd 정리 (0) | 2025.12.28 |