GPU 발견에서 Pod device 주입까지 책임을 나눕니다
Device plugin(장치 자원 제공기): node의 장치를 kubelet에 알리고 container에 장치 접근 정보를 제공하는 확장 구성요소입니다.
host driver가 GPU를 발견하는 단계, device plugin이 kubelet에 resource를 광고하는 단계, scheduler가 Pod request를 맞추는 단계, runtime이 device node를 주입하는 단계는 분리되어 있습니다.
vendor extended resource는 capacity와 allocatable에 정수로 나타나고 일반적으로 overcommit되지 않습니다. label·taint·affinity는 placement를 좁히지만 실제 GPU health와 topology를 자동 검증하지 않습니다.
Pending Pod를 보고 GPU가 없다고 단정하지 않습니다. nvidia-smi, plugin DaemonSet, node allocatable, Pod request, event, runtime allocation을 순서대로 확인합니다.
교육 사례에서 nvidia-smi는 GPU 8개를 보이지만 node allocatable에는 GPU가 없습니다. host driver 인식과 Kubernetes 자원 광고는 별도 경계입니다. device plugin 상태와 kubelet 등록을 확인한 뒤 resource request와 실제 Pod 배치를 대조합니다. request를 적지 않은 Pod가 우연히 GPU에 접근한 사실을 scheduling 보장으로 해석하지 않습니다.
- 왜 이런가
- vendor extended resource는 capacity와 allocatable에 정수로 나타나고 일반적으로 overcommit되지 않습니다. label·taint·affinity는 placement를 좁히지만 실제 GPU health와 topology를 자동 검증하지 않습니다.
- 언제 문제가 되는가
- capacity·request·runtime 불일치 조건이면 진행 근거가 부족합니다.
- 초보자가 자주 하는 오해
- GPU device file을 hostPath로 직접 주입해 scheduler를 우회하지 않습니다. 자원 회계와 격리, health 처리가 깨집니다.
- 직접 확인하는 방법
- host의 GPU UUID와 health를 먼저 확인합니다. device plugin Pod와 kubelet registration log를 확인합니다.