피드로 돌아가기
Kubernetes BlogKubernetes Blog
DevOps

Kubernetes v1.34가 PersistentVolumeClaim 크기 축소 기능을 GA로 승격하여 볼륨 확장 실패 자동 복구 가능

Kubernetes v1.34: Recovery From Volume Expansion Failure (GA)

2025년 9월 19일6intermediate

Context

Kubernetes에서 PersistentVolume 확장 중 사용자 실수(예: 2TB 대신 20TiB 지정)로 인한 확장 실패 시, 클러스터 관리자 권한이 필요하고 수동 복구가 번거로웠다. 이 문제를 해결하기 위해 약 5년간의 개발을 거쳐 베타 기능을 GA로 승격했다.

Technical Solution

  • PVC 크기 감소 메커니즘 구현: 확장 실패 상황에서 원래 크기보다 크기만 하면 사용자가 자유롭게 PVC 요청 크기를 감소시킬 수 있도록 변경
  • 자동 할당량 반환: 실패한 확장으로 인해 임시로 소비된 Kubernetes 할당량을 자동으로 반환
  • 상태 모니터링 API 필드 추가: .status.allocatedResourceStatus['storage']로 확장 진행 상태 조회 가능 (ControllerResizeInProgress, NodeResizePending, NodeResizeInProgress 상태 전이)
  • 확장 불가능 상태 표시: ControllerResizeInfeasible, NodeResizeInfeasible 같은 상태를 통해 확장 불가능 상황 명확히 표시
  • 오류 처리 및 관찰성 개선: PVC 오브젝트의 .status.conditions에 ControllerResizeError, NodeResizeError 같은 오류 키를 저장하여 이벤트보다 오래 지속되도록 개선
  • 실패한 확장 재시도: 저속 재시도 메커니즘 도입으로 스토리지 시스템과 Kubernetes API 서버에 대한 요청 빈도 감소

Impact

Kubernetes issue #115294를 비롯한 오래된 크기 조정 워크플로우 버그 수정.

Key Takeaway

5년간의 개발 과정을 거쳐 베타 기능을 GA로 승격한 사례로, 단순해 보이는 기능이라도 내부 아키텍처의 전면적인 재설계가 필요할 수 있으며, 사용자가 관리자 권한 없이 스스로 실수를 복구할 수 있는 설계가 운영 부담을 크게 줄일 수 있다.


Kubernetes 환경에서 PersistentVolume 크기를 지정할 때 실수를 했다면, v

1.34 이상에서는 클러스터 관리자 개입 없이 PVC 요청 크기를 원래 크기보다 크고 실패한 크기보다 작은 값으로 수정하면 자동으로 복구되고 할당량도 반환된다.

원문 읽기