如何配置Kubernetes GPU配额

GPU
小华
2026-09-03

在 Kubernetes 中配置 GPU 配额(GPU Resource Quota),通常分为 三个层面

  1. 节点层面:让 Kubernetes 能识别 GPU
  2. Pod 层面:容器如何申请 GPU
  3. 集群/命名空间层面:如何通过 ResourceQuota 限制 GPU 使用

下面以 NVIDIA GPU 为例说明。

一、前提条件(节点侧)

1. 安装 NVIDIA 驱动

每个 GPU 节点需:

  • 安装 NVIDIA 驱动
  • 安装 nvidia-container-toolkit

2. 安装 GPU 设备插件

使用官方插件:

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"

二、Pod 如何申请 GPU(基础)

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

⚠️ 注意:

  • limitsrequests 必须一致
  • 不能申请 0.5 GPU(除非使用 MIG 或第三方方案)

三、通过 ResourceQuota 限制 GPU 配额

1. 创建 Namespace

kubectl create namespace gpu-team-a

2. 配置 ResourceQuota

apiVersion: v1
kind: ResourceQuota
metadata:
name: gpu-quota
namespace: gpu-team-a
spec:
hard:
requests.nvidia.com/gpu: "2"
limits.nvidia.com/gpu: "2"

含义:

  • 该 namespace 最多使用 2 张 GPU
  • 所有 Pod 的 GPU 请求总和不能超过 2

3. 应用

kubectl apply -f gpu-quota.yaml

4. 查看配额

kubectl describe resourcequota gpu-quota -n gpu-team-a

四、配合 LimitRange(可选)

虽然 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

效果:

  • 每个容器必须且只能申请 1 张 GPU

五、常见限制与注意事项

❌ 不支持的内容

  • 不支持 GPU 时间片/算力配额(原生)
  • 不支持小数 GPU(原生)

✅ 进阶方案

需求方案
多用户共享 GPUNVIDIA MIG
显存/算力隔离Volcano / Kubeflow
动态 GPU 调度NVIDIA GPU Operator
fractional GPUAnt Group gpu-share / vGPU

六、示例:MIG(多实例 GPU)

如果启用了 MIG:

resources:
limits:
nvidia.com/mig-1g.10gb: 1

ResourceQuota:

hard:
nvidia.com/mig-1g.10gb: "4"

七、排错建议

kubectl describe pod gpu-pod
kubectl get events --sort-by=.lastTimestamp

常见错误:

  • Insufficient nvidia.com/gpu
  • failed to allocate device

如果你有具体场景(比如:多租户、训练/推理分离、云厂商 EKS/GKE/AKS),我可以给你更针对性的配置方案。

亿速云提供售前/售后服务

售前业务咨询

售后技术保障

400-100-2938

7*24小时售后电话

官方微信小程序