在 Kubernetes 中配置 GPU 配额(GPU Resource Quota),通常分为 三个层面:
每个 GPU 节点需:
nvidia-container-toolkit使用官方插件:
kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.14.0/nvidia-device-plugin.yml验证:
kubectl get nodes -o json | jq '.items[].status.allocatable'应能看到:
"nvidia.com/gpu": "1"GPU 是 Extended Resource,只能整卡申请:
apiVersion: v1
kind: Pod
metadata:
name: gpu-pod
spec:
containers:
- name: cuda-container
image: nvidia/cuda:11.8.0-base
resources:
limits:
nvidia.com/gpu: 1⚠️ 注意:
limits 和 requests 必须一致kubectl create namespace gpu-team-aapiVersion: v1
kind: ResourceQuota
metadata:
name: gpu-quota
namespace: gpu-team-a
spec:
hard:
requests.nvidia.com/gpu: "2"
limits.nvidia.com/gpu: "2"含义:
kubectl apply -f gpu-quota.yamlkubectl describe resourcequota gpu-quota -n gpu-team-a虽然 GPU 不能做软限制,但可强制规范:
apiVersion: v1
kind: LimitRange
metadata:
name: gpu-limit
namespace: gpu-team-a
spec:
limits:
- max:
nvidia.com/gpu: "1"
min:
nvidia.com/gpu: "1"
type: Container效果:
| 需求 | 方案 |
|---|---|
| 多用户共享 GPU | NVIDIA MIG |
| 显存/算力隔离 | Volcano / Kubeflow |
| 动态 GPU 调度 | NVIDIA GPU Operator |
| fractional GPU | Ant Group gpu-share / vGPU |
如果启用了 MIG:
resources:
limits:
nvidia.com/mig-1g.10gb: 1ResourceQuota:
hard:
nvidia.com/mig-1g.10gb: "4"kubectl describe pod gpu-pod
kubectl get events --sort-by=.lastTimestamp常见错误:
Insufficient nvidia.com/gpufailed to allocate device如果你有具体场景(比如:多租户、训练/推理分离、云厂商 EKS/GKE/AKS),我可以给你更针对性的配置方案。