Related to: MLOps

StatefulSet은 쿠버네티스에서 상태를 유지해야 하는(stateful) 애플리케이션을 관리하기 위해 사용하는 워크로드 API 오브젝트입니다. 일반적인 Deployment와 달리, StatefulSet은 파드 각각의 고유성(이름, 네트워크 ID, 스토리지)을 보장하며, 파드의 생성, 업데이트, 스케일링, 종료 과정에서 순서와 일관성을 유지합니다.

주요 특징

•	파드의 고유성 보장: 각 파드는 고유한 이름(예: pod-0, pod-1 등)과 네트워크 식별자를 가지며, 재생성되어도 동일한 이름과 네트워크 ID를 유지합니다.
•	순차적 배포 및 종료: 파드의 생성, 업데이트, 삭제가 순차적으로 이루어져야 할 때 사용합니다. 예를 들어, 파드-0이 준비되어야 파드-1이 생성되는 식입니다.
•	영구 스토리지(Persistent Volume) 연동: 각 파드별로 고유한 영구 볼륨(PVC)을 할당하여, 파드가 재시작되거나 재스케줄되어도 기존 데이터를 그대로 사용할 수 있습니다.
•	헤드리스 서비스와 연동: 일반 서비스와 달리, StatefulSet은 헤드리스 서비스(ClusterIP: None)와 함께 사용하여 각 파드별로 고정된 DNS를 제공합니다. 이를 통해 파드별 직접 통신이 가능합니다.

사용 예시

StatefulSet은 다음과 같은 워크로드에 적합합니다. • 데이터베이스(예: MySQL, MongoDB, Cassandra) • 분산 메시지 큐(예: Kafka, RabbitMQ) • 분산 스토리지(예: Ceph, GlusterFS) • 노드별로 고유한 데이터와 네트워크 식별자가 필요한 시스템

요약

StatefulSet은 파드의 고유성과 순서, 영구 스토리지 연동이 필수적인 상태 저장(Stateful) 애플리케이션을 위한 쿠버네티스의 핵심 리소스입니다. 각 파드는 항상 고유한 정체성을 유지하며, 데이터베이스나 분산 시스템 등에서 안정적이고 일관된 서비스 운영을 가능하게 합니다.