피드로 돌아가기
Kubernetes BlogDevOps
원문 읽기
Kubernetes v1.34가 PersistentVolumeClaim 크기 축소 기능을 GA로 승격하여 볼륨 확장 실패 자동 복구 가능
Kubernetes v1.34: Recovery From Volume Expansion Failure (GA)
AI 요약
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 요청 크기를 원래 크기보다 크고 실패한 크기보다 작은 값으로 수정하면 자동으로 복구되고 할당량도 반환된다.