
Cluster
- 마스터 노드 + 워커 노드들 + 그 위에서 돌아가는 모든 것의 집합 (컬렉션 세트)
- 배포 혹은 원하는 최종 상태(desired state)를 구성하는 전체
- 이 모든 것이 연결된 하나의 네트워크
Node
- 하나 또는 여러 개의 Pod를 호스팅하는 물리 머신 또는 가상 머신
- 특정 하드웨어 용량(CPU·메모리)을 가짐
- 클러스터와 통신하거나 클러스터 내에서 통신
- 역할에 따라 마스터 노드(컨트롤 플레인) 와 워커 노드로 나뉨
Pod
- 쿠버네티스에서 배포할 수 있는 가장 작은 단위
- 애플리케이션 컨테이너 + 요구 리소스가 결합된 유닛 (컨테이너를 감싼 껍질)
- 컨테이너 1개 이상 보유 가능 → 같은 Pod 안의 컨테이너는 네트워크·스토리지 공유
- Pod를 생성하면 그 안에 정의된 컨테이너가 실행됨
Worker Node
- Pod가 실제로 실행되는 머신 (물리 서버 또는 가상 인스턴스, 예: AWS EC2)
- 하나의 노드 위에 여러 Pod를 동시에 실행 가능 (자원이 허락하는 만큼 빽빽하게 배치)
- 각 워커 노드에서 항상 함께 도는 3종 세트가 존재
워커 노드 3종 세트
- kubelet — 컨트롤 플레인과 통신하며 이 노드 위 Pod를 실제로 띄우고 관리하는 에이전트 (노드의 핵심 일꾼)
- container runtime — 컨테이너를 실제로 실행하는 엔진. CRI 규격을 따르는 containerd, CRI-O 등 (예전엔 Docker도 dockershim을 거쳐 사용했으나 1.24부터 제거됨)
- kube-proxy — 노드의 네트워크 규칙(iptables/IPVS)을 설정해, Service로 들어온 트래픽을 올바른 Pod로 라우팅하는 도구
Master Node (Control Plane)
- 워커 노드와 Pod를 제어하는 컨트롤 센터 → 보통 워커 노드·Pod와 직접 상호작용하지 않고 여기를 통해 작업
- 워커 노드와 분리된 별도 서버(리모트 머신)
- 큰 배포에서는 고가용성(HA)을 위해 여러 머신으로 분산 가능 → 워커 노드가 죽어도 컨트롤 플레인은 살아있음
구성요소 4종
- API Server — 모든 요청이 들어오는 입구. kubectl로 상호작용하는 대상
- etcd — 클러스터의 모든 상태를 저장하는 키-값 DB
- Scheduler — 새 Pod를 어느 워커 노드에 올릴지 결정
- Controller Manager — 실제 상태를 원하는 상태로 맞춰주는 관리자
클라우드 배포 시 Controller Manager는 둘로 보강됨. kube-controller-manager = K8s 내부 컨트롤러 / cloud-controller-manager = 클라우드 연동 전용(클라우드 환경에서만 존재)
Service
- 여러 Pod를 하나로 묶어 고정된 IP·DNS 이름을 부여하는 추상화 계층
- Pod는 죽고 새로 뜰 때마다 IP가 바뀌므로, 변하지 않는 진입점이 필요함 → 그 역할
- 들어온 요청을 뒤에 붙은 Pod들에 분배(로드밸런싱)
- 호출하는 쪽은 Pod의 실제 IP를 몰라도 Service 주소로 접근 가능
'Study > Docker&Kubernetes' 카테고리의 다른 글
| [Docker] Docker Compose & 유틸리티 컨테이너 (0) | 2026.06.22 |
|---|---|
| [Docker] 컨테이너 통신 (0) | 2026.03.04 |
| [Docker] .dockerignore&.env&ARG 작업 (0) | 2026.03.03 |
| [Docker] Volume (0) | 2026.03.03 |
| [Docker] Docker Hub (0) | 2026.02.20 |