Kubernetes는 컨테이너화된 애플리케이션을 자동으로 배포, 스케일링, 관리하는 오픈소스 플랫폼입니다. 아키텍처는 마스터 노드(Control Plane)와 워커 노드(Worker Node)로 나뉘며, 이들이 상호작용하여 클러스터를 구성합니다.
마스터 노드는 클러스터를 관리하는 핵심 컴포넌트를 포함합니다.
워커 노드는 애플리케이션 실행을 담당합니다.
사용자가 kubectl apply 명령어를 실행하여 애플리케이션을 배포
2️⃣ API 서버(kube-apiserver)가 요청을 받아 etcd에 저장
3️⃣ 스케줄러(kube-scheduler)가 적절한 워커 노드를 선택하여 파드 배포
4️⃣ Kubelet이 노드에서 파드를 실행
5️⃣ Kube Proxy가 네트워크 설정을 적용하여 통신 가능하게 함
6️⃣ 서비스(Service)와 인그레스(Ingress)를 통해 외부에서 접근 가능
| 구분 | 컴포넌트 | 설명 | 위치 |
|---|---|---|---|
| 마스터 노드 | API Server | 클러스터의 모든 요청을 처리하고 상태를 관리 | Control Plane |
| etcd | 클러스터 상태를 저장하는 분산 데이터베이스 | Control Plane | |
| Controller Manager | 클러스터 상태를 원하는 상태로 유지 (레플리카, 노드 관리 등) | Control Plane | |
| Scheduler | 파드를 적절한 워커 노드에 배치 | Control Plane | |
| 워커 노드 | Kubelet | 파드의 실행 상태를 관리하고 API 서버와 통신 | Worker Node |
| Kube-Proxy | 네트워크 트래픽 관리 (서비스와 파드 간 연결) | Worker Node | |
| Container Runtime | 컨테이너 실행 환경 (Docker, containerd 등) | Worker Node | |
| Pod | 하나 이상의 컨테이너를 포함하는 최소 배포 단위 | Worker Node | |
| 네트워크/스토리지 | CNI | 파드 간 네트워크 통신을 위한 플러그인 (Flannel, Calico 등) | 클러스터 전반 |
| PV/PVC | 데이터 저장을 위한 퍼시스턴트 볼륨 및 클레임 | 클러스터 전sion |
kubectl get nodes, kubectl get pods 명령으로 컴포넌트를 확인해보세요.궁금한 점이 있거나 특정 컴포넌트에 대해 더 자세히 알고 싶다면 말씀해주세요!