기존에 정리해놓고 또 잊어먹어 리마인드차 꼼꼼히 정리해본다.
오브젝트 | 목적 | 특징 | 비유 |
---|---|---|---|
Pod | 가장 작은 실행 단위 | 1개 이상 컨테이너 + 공유 네트워크/스토리지 | 컨테이너 박스 1개 |
ReplicaSet | Pod 개수 보장 | 항상 N개 유지 (죽으면 새로 생성) | 예비 병력 유지 |
Deployment | ReplicaSet 관리 + 업데이트/롤백 | 롤링 업데이트/버전 관리 지원 | 부대 운영+교대 |
Service | Pod 집합 네트워크 접근점 제공 | ClusterIP/NodePort/LoadBalancer 지원 | 고정 전화번호 |
Ingress | 외부 트래픽 라우팅 | 도메인/경로 기반 L7 라우팅 | 건물 입구 안내원 |
ConfigMap | 일반 설정 값 관리 | ENV/파일로 주입 | 메뉴얼 |
Secret | 민감정보 관리 | Base64 저장, 마운트/ENV | 금고 |
Volume/PV/PVC | 데이터 영속성 | Pod 재시작 후에도 데이터 유지 | 외장하드 |
Job | 일회성 작업 | 완료되면 종료 | 택배 1회 배송 |
CronJob | 주기적 작업 | 스케줄 기반 반복 실행 | 정기 구독 배송 |
Namespace | 리소스 논리적 격리 | 팀/환경별 분리 | 아파트 단지 동 |
예: nginx 웹서버를 배포한다고 하면:
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
- name: nginx
image: nginx:1.25
컨테이너 하나만 실행. 죽으면 수동으로 다시 만들어야 함.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deploy
spec:
replicas: 3
selector:
matchLabels: { app: nginx }
template:
metadata: { labels: { app: nginx } }
spec:
containers:
- name: nginx
image: nginx:1.25
항상 3개 유지, 자동 복구, 버전 업/롤백 가능.
apiVersion: v1
kind: Service
metadata:
name: nginx-svc
spec:
selector: { app: nginx }
ports:
- port: 80
targetPort: 80
type: NodePort
Pod들이 죽고 새로 떠도, nginx-svc라는 안정된 주소로 접근 가능.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx-ing
spec:
rules:
- host: nginx.local
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nginx-svc
port:
number: 80
외부에서 http://nginx.local 로 들어오면 Service로 연결.