개요
Pod는 Kubernetes에서 배포 가능한 가장 작은 단위이며, 하나 이상의 컨테이너를 포함할 수 있어.
이와 달리, Static Pod는 API Server를 거치지 않고 kubelet이 직접 실행하는 특별한 유형의 Pod야.
Pod의 개념 및 특징
Pod란?
- 컨테이너를 감싸는 논리적 단위로, Kubernetes에서 컨테이너를 직접 배포하지 않고 Pod 단위로 관리해.
- 하나의 Pod에는 단일 컨테이너 또는 여러 개의 컨테이너가 포함될 수 있어.
Pod의 주요 특징
특징 | 설명 |
---|---|
단일 네트워크 공간 | Pod 내의 모든 컨테이너는 같은 네트워크 네임스페이스를 공유하여 localhost 로 통신 가능 |
공유 스토리지 사용 | emptyDir , hostPath , Persistent Volume 을 사용하여 컨테이너 간 데이터 공유 |
라이프사이클 관리 | Pending → Running → Succeeded/Failed 의 상태를 가짐 |
Ephemeral (휘발성) | 기본적으로 Pod는 장애 발생 시 재생성되지 않으며, 이를 위해 ReplicaSet 또는 Deployment를 사용해야 함 |
Pod의 구성 요소
- spec: 컨테이너, 볼륨, 네트워크 설정을 정의
- status: Pod의 현재 상태 (
Running
,Pending
,Failed
등) - metadata: Pod 이름, 레이블, 어노테이션 등
단일 컨테이너 vs 다중 컨테이너 Pod
Pod 유형 | 설명 |
---|---|
단일 컨테이너 Pod | 하나의 애플리케이션 컨테이너만 포함 |
다중 컨테이너 Pod | 보조 컨테이너(Sidecar, Adapter 등)를 포함하여 함께 동작 |
💡 다중 컨테이너 Pod 예제:
- Sidecar Pattern: 로그 수집기, 프록시 등을 추가
- Adapter Pattern: 데이터를 변환하여 다른 컨테이너에 전달
Static Pod
Static Pod란?
- kubelet이 직접 실행하는 Pod으로, Kubernetes API Server를 거치지 않고 관리됨.
- 일반적인 Pod와 달리, Deployment, ReplicaSet 등의 컨트롤러로 관리되지 않음.
Static Pod의 특징
특징 | 설명 |
---|---|
API Server 없이 실행 | kubelet이 직접 YAML 파일을 읽어 Pod를 실행 |
Manifest 파일 기반 | /etc/kubernetes/manifests/ 경로에 있는 YAML 파일을 기반으로 Pod 실행 |
자동 복구 없음 | Pod가 종료되면 자동으로 복구되지 않음 |
로그 확인 방법 다름 | kubectl 이 아닌 kubelet 로그 (journalctl -u kubelet )로 확인 |
Static Pod 예제
📌 /etc/kubernetes/manifests/static-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: static-pod-example
labels:
app: static-test
spec:
containers:
- name: busybox
image: busybox
command: ["sleep", "3600"]
💡 해당 파일을 /etc/kubernetes/manifests/
폴더에 저장하면 kubelet이 자동으로 실행해.
Static Pod의 활용 사례
- Kubernetes Control Plane 노드 구성 (API Server, Controller Manager, etcd 등)
- 테스트 및 디버깅 목적
Pod 및 Static Pod의 차이점
비교 항목 | 일반 Pod | Static Pod |
---|---|---|
생성 방식 | kubectl apply -f | kubelet이 직접 실행 |
관리 주체 | Kubernetes API Server | kubelet |
컨트롤러 사용 | Deployment, ReplicaSet 가능 | 불가능 |
배포 방식 | YAML 파일로 선언 후 kubectl apply | /etc/kubernetes/manifests/ 폴더에 YAML 배치 |
API 조회 가능 여부 | kubectl get pods 가능 | kubectl get pods 로 조회 가능하나 관리되지 않음 |
정리
✅ Pod는 Kubernetes에서 가장 기본적인 배포 단위이며, 여러 컨테이너가 함께 실행될 수 있어.
✅ Static Pod는 kubelet이 직접 실행하는 Pod로, API Server 없이도 동작 가능해.
✅ Static Pod는 컨트롤러가 관리하지 않기 때문에 주로 Kubernetes Control Plane에서 사용돼.