Published on

쿠버네티스의 다양한 Pod 정리

🚀 쿠버네티스의 다양한 Pod 관리 방식

쿠버네티스에서는 Pod을 직접 운영하지 않고, 다양한 컨트롤러를 통해 관리한다. 각 컨트롤러는 목적에 따라 다르게 설계되어 있으며, 장단점을 고려하여 적절히 사용하는 것이 중요함.


1️⃣ Standalone Pod

✅ 개념

  • 컨트롤러 없이 직접 생성한 단일 Pod

✅ 장점

  • 빠르게 생성 가능
  • 디버깅, 테스트용으로 간단히 활용 가능

🚨 단점

  • 자동 복구 미지원
  • 스케일링 불가
  • 롤링 업데이트 미지원
  • 노드 장애 시 재배치 불가
  • 운영 효율성 낮음

✅ 언제 사용하나?

  • 테스트, 실험용 환경
  • 간단한 디버깅 목적

2️⃣ ReplicaSet

✅ 개념

  • 동일한 Pod을 여러 개 복제하여 실행
  • Pod이 죽으면 자동으로 새로 생성

✅ 장점

  • Pod 수를 항상 일정하게 유지
  • 장애 발생 시 자동 복구

🚨 단점

  • 롤링 업데이트나 롤백 미지원
  • 직접 관리하려면 복잡
  • 실무에서는 Deployment를 주로 사용

✅ 언제 사용하나?

  • Deployment 내부에서 자동 사용됨
  • 특정 상황에서 수동 Pod 복제 관리

3️⃣ Deployment

✅ 개념

  • ReplicaSet을 포함한 컨트롤러
  • 가장 일반적인 애플리케이션 배포 방식

✅ 장점

  • 롤링 업데이트, 롤백 지원
  • 자동 복구 및 스케일링 가능
  • 선언적 구성으로 운영 편의성 높음

🚨 단점

  • 상태가 필요한 앱(DB 등)에는 부적합

✅ 언제 사용하나?

  • 대부분의 무상태 애플리케이션
  • 웹 서버, 백엔드 API 등

4️⃣ StatefulSet

✅ 개념

  • 각 Pod에 고유한 ID와 볼륨을 제공
  • 상태가 있는 앱을 위한 컨트롤러

✅ 장점

  • 고정된 네트워크 이름
  • 재시작해도 동일한 볼륨 사용 가능
  • 순차적 배포/종료 지원

🚨 단점

  • 설정 복잡
  • 빠른 확장 어려움

✅ 언제 사용하나?

  • 데이터베이스, Kafka, Redis 등
  • 상태 유지를 요구하는 앱

5️⃣ DaemonSet

✅ 개념

  • 모든 노드에 하나씩 Pod을 배포
  • 노드 추가 시 자동으로 배포됨

✅ 장점

  • 로그 수집, 모니터링 등에 필수
  • 시스템 전반에 필요한 Pod 실행 가능

🚨 단점

  • 리소스 사용이 높을 수 있음
  • 노드 선택 세부 설정 필요

✅ 언제 사용하나?

  • Fluentd, Filebeat, Prometheus Node Exporter
  • 클러스터 시스템 수준의 에이전트

6️⃣ Job / CronJob

✅ 개념

  • Job: 한 번 실행 후 종료되는 작업
  • CronJob: 정기적으로 실행되는 Job

✅ 장점

  • 일회성 및 스케줄 기반 작업 처리에 적합
  • 완료 시 자동 종료

🚨 단점

  • 충돌 제어 및 실패 재처리 필요
  • 자주 실행 시 리소스 낭비 가능

✅ 언제 사용하나?

  • 데이터 마이그레이션, 정기 백업
  • 로그 정리, 반복 배치 작업

✅ 요약 정리

컨트롤러장점단점대표 용도
Standalone Pod빠르고 간단한 실행운영에 부적합, 자동화 미지원테스트, 디버깅
ReplicaSetPod 개수 유지, 자동 복구롤링 업데이트 등 직접 구현 필요동일한 Pod 복제 유지
Deployment스케일링, 롤링 업데이트, 롤백 지원상태 앱에는 부적합웹 앱, API 서버 등 일반 서비스
StatefulSet고유 ID, 스토리지 유지복잡한 설정, 느린 확장DB, 캐시 등 상태 유지 앱
DaemonSet모든 노드 배포, 자동 노드 대응리소스 과다 사용 가능로그 수집, 모니터링
Job일회성 작업 처리지속 서비스에는 부적합데이터 마이그레이션, 배치
CronJob반복 작업 자동화리소스 낭비 가능, 충돌 제어 필요예약 백업, 정기 정리 작업