2025 06 26
2025-06-26¶
k8s statefulSet¶
참고: https://nearhome.tistory.com/107
- 개요
- 쿠버에서 상태를 가지는 어플리케이션을 관리하기 위한 워크로드 오브젝트
- 주로 DB, MQ, 분산 저장소 등 각 인스턴스가 고유한 신원(이름/네트워크/스토리지) 상태를 가져야 하는 서비스에 사용
- Deployment를 왜 안쓰고...?
- Stateless 웹 서버/API 서버라면 deployment로 충분
- 파드 죽어도 상관없고, 아무파드나 요청 처리해도 상관 X
- 하지만, DB나 분산 시스템 처럼 각 파드가 고유한 역할 & 데이터 가진다면 문제 발생
- 파드 재시작할 때 기존에 사용하던 볼륨에 접근해야 데이터 유지됨
- 각 파드가 고유한 네트워크 이름을 가져야 함
- 파드 생성/종료/업데이트가 순서가 필요하다면
- 해당 요구사항을 statefulSet이 해결
- Stateless 웹 서버/API 서버라면 deployment로 충분
- StatefulSet의 핵심 기능
- 자동화된 고유 식별자 관리
- StatefulSet 컨트롤러가 Pod 생성시
-0,-1같은 순차적 식별자 자동 부여 - DNS와 연동되어 안정적인 네트워크 접근 보장
- StatefulSet 컨트롤러가 Pod 생성시
- 스토리지 라이프사이클 자동화
- volumeClaimTemplates 활용해 각 Pod마다 전용 PV 프로비저닝
- Pod 재생성 시, 동일 볼륨 자동 마운트
- 순차적 오케스트레이션
- 스케일링 시:
pod NRunning/Ready =>pod N+1생성 - 업데이트 시: 역순 (
Pod2->Pod1->Pod0) 롤링 업데이트 - 삭제 시: 역순으로 종료 확인 후 다음 pod 종료
- 스케일링 시:
- 자동화된 고유 식별자 관리
- ACL을 위한 IP 대역 관리
- 고정 IP 할당