Related to: MLOps

개요

Kubernetes - StatefulSet이 롤백이 불가능하다고 여겨지는 이유와 그 설계 철학적 배경을 분석합니다.

핵심 개념

왜 StatefulSet은 롤백이 불가능할까

StatefulSet이 롤백이 불가능하다고 여겨지는 주요 이유는, Deployment와 달리 내부적으로 ReplicaSet을 생성하지 않고 각 파드의 고유성(이름, 네트워크, 스토리지 등)을 보장하기 때문입니다.

  • Deployment의 롤백: Deployment는 새로운 버전의 ReplicaSet을 생성해 롤링 업데이트를 진행하고, 문제가 생기면 이전 ReplicaSet으로 손쉽게 롤백할 수 있습니다.
  • StatefulSet의 한계: StatefulSet은 파드별로 고유한 식별자와 영구 스토리지를 유지해야 하므로, ReplicaSet 기반의 롤백 구조가 적용되지 않습니다.

이로 인해 StatefulSet은 롤링 업데이트 시 파드를 순차적으로 하나씩 교체하고, 각 파드의 데이터와 네트워크 정합성을 반드시 보장해야 합니다. 잘못된 롤백이나 업데이트 전략은 데이터 손실, 불일치, 서비스 중단 등 심각한 문제를 유발할 수 있기 때문에, Deployment처럼 자동화된 롤백이 구조적으로 어렵습니다.

다만, 최근 쿠버네티스에서는 kubectl rollout undo statefulset 명령을 통해 제한적으로 롤백이 지원되기도 하지만, 이 과정 역시 Deployment만큼 간단하거나 안전하지 않으며, 데이터 정합성과 서비스 가용성을 직접 관리해야 합니다.

정리: StatefulSet은 파드의 고유성과 상태, 데이터 정합성 보장이 필수적이기 때문에, Deployment처럼 자유롭고 자동화된 롤백 구조를 기본적으로 제공하지 않으며, 이는 StatefulSet의 설계 철학과 목적에 기인합니다.

관련 개념