안녕하세요! '오늘은 쿠버네티스 워크로드 관리의 핵심인 4대 파드 컨트롤러를 완벽하게 정리해 드립니다.
단순히 파드를 띄우는 것을 넘어, 각 상황에 맞는 최적의 도구를 선택하는 것이 클라우드 보안 및 인프라 설계의 시작입니다. 약 15분 정도면 실무와 시험(CKAD)에 필요한 핵심을 모두 마스터하실 수 있습니다.

📑 목차
- 개요: 왜 컨트롤러를 써야 할까? (Desired State)
- Deployment: 무상태(Stateless) 애플리케이션의 제왕
- StatefulSet: 상태(Stateful)가 있는 전문가들의 관리자
- DaemonSet: 모든 노드를 지키는 파수꾼
- Job & CronJob: 짧고 굵게 일하는 배치 처리의 달인
- [부록] 컨트롤러 선택 가이드 및 실전 팁
0. 개요: 왜 컨트롤러를 써야 할까? 🤔
쿠버네티스에서 파드는 언제든 죽을 수 있는 소모품입니다. 강사님께서 강조하시듯, 우리는 파드를 하나하나 수동으로 관리하지 않습니다. 대신 컨트롤러에게 "내가 원하는 상태(Desired State)"를 선언하고, 컨트롤러가 현재 상태를 감시하며 그 상태를 유지하게 만듭니다.
1. Deployment: 무상태(Stateless) 애플리케이션의 제왕 👑
가장 흔히 쓰이는 컨트롤러입니다. 웹 서버나 API 서버처럼 파드끼리 서로 구분될 필요가 없는 무상태 애플리케이션에 최적화되어 있습니다.
- 주요 기능: 셀프 힐링(Self-healing), 스케일링, 롤링 업데이트 및 롤백.
- 핵심 리소스: 내부적으로 ReplicaSet을 생성하여 파드의 개수를 유지합니다.
💡 실전 코드 (YAML)
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deploy
spec:
replicas: 3
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: nginx
image: nginx:1.21
2. StatefulSet: 상태(Stateful)가 있는 전문가들의 관리자 🏛️
데이터베이스(MySQL, MongoDB)나 메시지 큐(Kafka)처럼 파드마다 고유한 이름과 영구적인 데이터가 필요한 경우에 사용합니다.
- 주요 기능: 파드에 순차적인 인덱스 부여(pod-0, pod-1), 안정적인 네트워크 식별자(Headless Service 연동), 개별 볼륨 할당(volumeClaimTemplates).
- 차이점: Deployment와 달리 파드가 재시작되어도 이름과 연결된 볼륨이 그대로 유지됩니다.
3. DaemonSet: 모든 노드를 지키는 파수꾼 🛡️
클러스터 내의 모든(또는 특정 조건을 만족하는) 노드에 파드를 딱 하나씩 띄워야 할 때 사용합니다.
- 용도: 로그 수집기(Fluentd), 모니터링 에이전트(Prometheus Node Exporter), 네트워크 플러그인.
- 특징: 노드가 새로 추가되면 자동으로 파드가 배포되고, 노드가 삭제되면 파드도 함께 제거됩니다.
4. Job & CronJob: 배치 처리의 달인 🏃♂️⏰
24시간 떠 있는 서비스가 아니라, 특정 작업이 끝나면 스스로 종료되는 작업을 관리합니다.
- Job: 일회성 작업 (예: 데이터 마이그레이션, 배치 리포트 생성). 성공적으로 완료되면 파드를 종료합니다.
- CronJob: 정해진 시간에 반복 실행되는 작업 (예: 매일 새벽 3시 etcd 백업).
💡 실전 코드 (CronJob)
apiVersion: batch/v1
kind: CronJob
metadata:
name: nightly-backup
spec:
schedule: "0 3 * * *" # 매일 새벽 3시
jobTemplate:
spec:
template:
spec:
containers:
- name: backup
image: busybox
command: ["sh", "-c", "echo Backup Complete!"]
restartPolicy: OnFailure
📊 컨트롤러 한눈에 비교하기
| 컨트롤러 | 주 용도 | 파드 식별자 | 데이터 보존 |
| Deployment | 웹 서버, API (무상태) | 랜덤 해시 | 휘발성 |
| StatefulSet | DB, 분산 시스템 (상태 유지) | 고유 인덱스 (0, 1, 2) | 영구적 (PVC 매핑) |
| DaemonSet | 로그/모니터링 에이전트 | 노드별 고정 | 노드 종속적 |
| Job/CronJob | 백업, 배치 처리 | 일회성/반복 | 결과 저장 후 종료 |
Tags: 쿠버네티스, CKAD, Deployment, StatefulSet, DaemonSet, Job, CronJob, 클라우드인프라, 자격증준비, 파드컨트롤러
'클라우드 > 쿠버네티스' 카테고리의 다른 글
| [Mac] Podman + Kind + Cilium으로 끝내는 CKAD 완벽 실습 환경 구축 가이드 (0) | 2026.02.06 |
|---|---|
| [CKAD] DaemonSet: 노드 레벨 인프라 에이전트의 보장된 배포 및 관리 (0) | 2026.02.06 |
| [CKAD] 쿠버네티스의 심장, Deployment로 선언적 배포 마스터하기 (0) | 2026.02.05 |
| [CKAD] 내 데이터는 소중하니까! 영구 볼륨(PV/PVC)과 임시 볼륨(emptyDir) 완벽 정리 (0) | 2026.02.05 |
| [CKAD] 한 번만 실행되는 Job부터 주기적인 CronJob까지 배치 작업 마스터하기! (0) | 2026.02.05 |