피드로 돌아가기
Kubernetes BlogInfrastructure
원문 읽기
Kubernetes v1.35가 PersistentVolume의 node affinity를 불변에서 가변으로 변경해 스토리지 공급자의 온라인 볼륨 마이그레이션 활용 가능
Kubernetes v1.35: Mutable PersistentVolume Node Affinity (alpha)
AI 요약
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 상태에서 멈출 수 있으므로 충분한 시간을 두고 모니터링해야 한다.