피드로 돌아가기
Kubernetes BlogKubernetes Blog
Infrastructure

Kubernetes v1.34가 DRA Consumable Capacity를 도입해 여러 ResourceClaim 간 디바이스 공유와 세밀한 용량 할당 지원

Kubernetes v1.34: DRA Consumable Capacity

2025년 9월 18일9intermediate

Context

Kubernetes 1.33의 partitionable devices는 디바이스를 슬라이스로 노출할 수 있었지만, 네트워크 대역폭처럼 디바이스 드라이버가 동적으로 관리하는 세밀한 리소스 공유와 ResourceClaim의 네임스페이스 제약을 넘어선 공유를 지원하지 못했다. 따라서 여러 ResourceClaim이나 DeviceRequest 간 동일 디바이스의 일부를 독립적으로 공유할 방법이 없었다.

Technical Solution

  • DRA Consumable Capacity 알파 기능 추가: 디바이스에 AllowMultipleAllocations 플래그를 true로 설정해 여러 ResourceClaim에 동시 할당 가능하도록 변경
  • 용량 정책 메커니즘 도입: DeviceCapacity의 RequestPolicy 필드에서 Default, Min, Step 값을 정의해 디바이스별 소비 규칙 강제 (예: GPU 40GiB에서 최소 5GiB씩, 5GiB 단위로만 할당)
  • 스케줄러 할당 알고리즘 확장: 디바이스의 capacity 필드 기반으로 동작해 총 할당 용량이 디바이스 총 용량을 초과하지 않도록 검증
  • ShareID 필드 추가: 할당된 디바이스의 소비 용량 정보를 할당 상태에 기록
  • DistinctAttribute 제약 조건 신규 도입: 단일 ResourceClaim 내에서 동일 디바이스가 여러 번 할당되는 것을 방지해 각 할당이 고유 리소스를 참조하도록 보장
  • ResourceClaim 상태 확장: DRAResourceClaimDeviceStatus 기능 게이트 활성화 시 .status.devices 필드로 ShareID 외 디바이스별 정보(예: 할당된 IP 주소) 노출 가능

Key Takeaway

DRA Consumable Capacity는 Node의 공유 리소스 할당 모델을 Device 수준으로 확장해 멀티테넌트 환경에서 네임스페이스 간 디바이스 공유와 대역폭·메모리 같은 동적 용량 기반 할당을 안전하게 지원하는 설계 원칙을 제시한다.


Kubernetes 환경에서 가상 GPU, 가상 네트워크 인터페이스 등 분할 가능한 리소스를 운영하는 드라이버 개발자는 AllowMultipleAllocations와 RequestPolicy를 조합해 설정하면, 동일 물리 디바이스를 여러 Pod이 지정된 용량 단위로 안전하게 공유할 수 있으며 DistinctAttribute 제약으로 중복 할당을 방지할 수 있다.

원문 읽기