본문 바로가기
클라우드/쿠버네티스

[CKAD] 쿠버네티스 워크로드를 지배하는 4대 파드 컨트롤러 총정리

by gasbugs 2026. 2. 6.

안녕하세요! '오늘은 쿠버네티스 워크로드 관리의 핵심인 4대 파드 컨트롤러를 완벽하게 정리해 드립니다.

단순히 파드를 띄우는 것을 넘어, 각 상황에 맞는 최적의 도구를 선택하는 것이 클라우드 보안 및 인프라 설계의 시작입니다. 약 15분 정도면 실무와 시험(CKAD)에 필요한 핵심을 모두 마스터하실 수 있습니다.

 

 


📑 목차

  1. 개요: 왜 컨트롤러를 써야 할까? (Desired State)
  2. Deployment: 무상태(Stateless) 애플리케이션의 제왕
  3. StatefulSet: 상태(Stateful)가 있는 전문가들의 관리자
  4. DaemonSet: 모든 노드를 지키는 파수꾼
  5. Job & CronJob: 짧고 굵게 일하는 배치 처리의 달인
  6. [부록] 컨트롤러 선택 가이드 및 실전 팁

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, 클라우드인프라, 자격증준비, 파드컨트롤러