피드로 돌아가기
Running Production-Grade Databases on K8s
Dev.toDev.to
Database

StatefulSet과 Operator를 통한 K8s 기반 고가용성 DB 아키텍처 구현

Running Production-Grade Databases on K8s

KALPESH2026년 5월 3일14intermediate

Context

Stateless 워크로드 중심으로 설계된 Kubernetes의 특성으로 인해 데이터 보존과 Primary-Replica 구조 유지가 어려움. 단순 Deployment 사용 시 Pod의 랜덤한 식별자와 저장소 휘발성으로 인한 Data Corruption 및 Split-brain 위험 존재.

Technical Solution

  • Stable Identity 부여를 통한 예측 가능한 Pod 명명 규칙 및 DNS 주소 확보
  • Ordered Startup 메커니즘을 통한 Primary Pod 선행 기동 및 Replica의 안정적인 데이터 동기화 보장
  • Pod별 독립적인 PersistentVolumeClaim(PVC) 할당으로 스케줄링 변경 시에도 데이터 연속성 유지
  • Read/Write 트래픽 분리를 위해 Primary 전용 DNS와 Headless Service 기반의 Read Load Balancing 구조 설계
  • Readiness Probe 설정을 통한 Replica 동기화 완료 시점까지의 트래픽 유입 차단으로 Read Inconsistency 방지
  • 운영 복잡도 해결을 위해 CRD 기반의 Kubernetes Operator를 도입하여 DBA 수준의 자동화된 라이프사이클 관리

- DB 워크로드 배포 시 Deployment 대신 반드시 StatefulSet 사용 여부 검토 - 쓰기 트래픽의 단일 진입점(myapp-0) 확보 및 Replica의 Read-only 설정 강제화 - PodDisruptionBudget 설정을 통해 최소 가용 Pod 수를 2개 이상으로 유지하여 고가용성 확보 - 수동 운영의 한계를 극복하기 위한 DB 전용 Operator 도입 및 CRD 최적화 검토

원문 읽기