Cloudera ECS 워커 노드에 A100 을 붙였는데 nvidia-device-plugin 컨테이너 로그에 Insufficient Permissions 가 나오고 GPU 가 쿠버네티스 리소스로 등록되지 않는다. 처음에는 Fabric Manager 나 Confidential Computing 문제로 의심했지만, A100 PCIe 구성이라 NVSwitch 가 없어 fabric manager 는 애초에 필요 없는 환경이었다(그래서 fabricmanager 기동도 실패했다). 실제 원인은 플러그인 컨테이너가 NVML 로 GPU 메모리를 읽지 못하는 권한 문제였다.
NVIDIA_VISIBLE_DEVICES=all, NVIDIA_DRIVER_CAPABILITIES=all 환경변수와 RuntimeClass: nvidia, privileged 를 주자 GPU 2장이 인식됐다(nvidia.com/gpu: 2).MIG_STRATEGY=single 을 추가하자 MIG 인스턴스 14개가 모두 인식됐다(nvidia.com/gpu: 14).ContainerCreating 에서 죽었다. nodeSelector 로 GPU 노드에만 스케줄되게 분리해 마무리했다.nodeSelector:
feature.node.kubernetes.io/pci-10de.present: "true"
10de 는 NVIDIA 의 PCI 벤더 ID 이며 Node Feature Discovery 가 이 라벨을 붙인다.
kubectl get nodes -o custom-columns='NODE:.metadata.name,GPU:.status.allocatable.nvidia\.com/gpu'
kubectl -n kube-system logs -l name=nvidia-device-plugin-ds --tail=50
kubectl -n kube-system describe pod <plugin-pod> | grep -A 20 Events