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