Related to: MLOps
StatefulSet의 예시와 활용 대상
StatefulSet은 쿠버네티스에서 상태를 유지해야 하는(Stateful) 애플리케이션을 관리하는 컨트롤러 리소스입니다. 아래는 StatefulSet의 대표적인 예시와 실제 YAML 구성을 통한 활용 사례입니다.
대표적인 StatefulSet 활용 예시
- 데이터베이스: MySQL, PostgreSQL, MongoDB, Cassandra, Redis(클러스터 모드) 등 각 인스턴스가 고유한 데이터와 네트워크 ID를 가져야 하는 분산 데이터베이스 시스템
- 분산 메시지 큐: Kafka, RabbitMQ 등 각 노드가 고유 식별자와 로그 데이터를 유지해야 하는 메시지 브로커
- 분산 스토리지 시스템: Ceph, GlusterFS 등 노드별로 고유한 스토리지와 네트워크 정체성이 필요한 스토리지 솔루션
- 머신러닝 워크로드: 분산 학습을 위한 노드별 고유 데이터가 필요한 ML 파이프라인
StatefulSet 리소스 예시
아래는 Nginx를 예시로 한 StatefulSet YAML 구성입니다. 실제 데이터베이스나 메시지 큐도 유사한 구조로 배포합니다.
apiVersion: v1
kind: Service
metadata:
name: nginx
spec:
ports:
- port: 80
name: web
clusterIP: None # 헤드리스 서비스
selector:
app: nginx
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: web
spec:
serviceName: "nginx"
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
terminationGracePeriodSeconds: 10
containers:
- name: nginx
image: registry.k8s.io/nginx-slim:0.8
ports:
- containerPort: 80
volumeMounts:
- name: www
mountPath: /usr/share/nginx/html
volumeClaimTemplates:
- metadata:
name: www
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: "my-storage-class"
resources:
requests:
storage: 1Gi이 예시에서 각 파드는 web-0, web-1, web-2와 같이 고유한 이름과 볼륨(PVC)을 갖게 됩니다.
요약 StatefulSet은 데이터베이스, 메시지 큐, 분산 스토리지 등 파드별로 고유한 정체성과 상태(스토리지, 네트워크 ID 등)를 유지해야 하는 워크로드에 사용됩니다. 각 파드는 고유한 이름과 볼륨을 가지며, 순차적 배포와 종료, 안정적인 스토리지 연결이 보장됩니다[^3][^5].[^7][^8]
https://nearhome.tistory.com/107 https://hackjsp.tistory.com/16 https://kubernetes.io/ko/docs/concepts/workloads/controllers/statefulset/ https://parkadd.tistory.com/156 https://journalctl-xe.tistory.com/entry/Kubernetes-Workload-ResourcesStatefulset https://devriver.tistory.com/75 https://arisu1000.tistory.com/27835 https://malwareanalysis.tistory.com/338