피드로 돌아가기
Kubernetes BlogKubernetes Blog
Infrastructure

Kubernetes v1.35가 PersistentVolume의 node affinity를 불변에서 가변으로 변경해 스토리지 공급자의 온라인 볼륨 마이그레이션 활용 가능

Kubernetes v1.35: Mutable PersistentVolume Node Affinity (alpha)

2026년 1월 8일10intermediate

Context

Kubernetes의 PersistentVolume node affinity 필드는 v1.10부터 존재했으나 불변(immutable)으로 설정되어 있었다. 스토리지 공급자들이 영역 디스크에서 지역 디스크로의 라이브 마이그레이션, 디스크 세대 업그레이드 등 온라인 볼륨 업데이트를 지원하기 시작했지만, Kubernetes의 node affinity 제약으로 Pod을 다른 노드에 스케줄할 수 없는 문제가 발생했다.

Technical Solution

  • PersistentVolume spec.nodeAffinity 필드를 가변으로 변경: API 서버에서 제거한 불변 검증으로 cluster administrator가 PV node affinity를 편집 가능하게 구현
  • 영역 기반 node affinity에서 지역 기반으로 전환: topology.kubernetes.io/zone 필드에서 topology.kubernetes.io/region으로 변경하여 Pod 스케줄링 범위 확대
  • 디스크 세대별 node affinity 갱신: provider.com/disktype.gen1에서 provider.com/disktype.gen2로 변경하여 새로운 디스크에 대응하는 노드 선택 강제
  • MutablePVNodeAffinity 기능 게이트로 점진적 도입: alpha 상태로 API Server에서 기능 게이트 활성화 필요
  • RBAC 권한 기반 접근 제어: cluster administrator만 PV를 편집할 수 있도록 제한

Key Takeaway

Kubernetes stateful 워크로드의 온라인 관리 유연성을 확대하는 첫 단계이나, kubelet의 node affinity 위반 검증 및 CSI 통합을 통한 자동화가 아직 미흡하므로 수동 운영 시 Pod 스케줄링 경쟁 조건을 고려해야 한다.


Kubernetes cluster administrator는 스토리지 공급자가 온라인 볼륨 마이그레이션을 지원할 때, MutablePVNodeAffinity 기능 게이트를 활성화한 후 스토리지 공급자의 볼륨 업데이트를 먼저 완료하고 node affinity를 동기화하되, node affinity 변경 직후 새로운 Pod을 즉시 생성하면 race condition으로 인해 ContainerCreating 상태에서 멈출 수 있으므로 충분한 시간을 두고 모니터링해야 한다.

원문 읽기