如何限制Kubernetes GPU用量

GPU
小华
2026-10-02

在 Kubernetes 中“限制 GPU 用量”通常分为 限制 GPU 数量(显存/算力不可再分) 和 限制 GPU 显存/算力(细粒度,需额外方案) 两类。下面按常见场景系统说明。

一、原生 Kubernetes 的 GPU 限制方式(最常用)

1. 限制 GPU 卡数(Node + Device Plugin)

Kubernetes 原生只支持整卡分配(如 1 块 NVIDIA GPU)。

前提

  • 安装 NVIDIA Device Plugin
kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/master/nvidia-device-plugin.yml

Pod 示例(限制使用 1 张 GPU)

resources:
limits:
nvidia.com/gpu: 1
  • nvidia.com/gpu: 1 表示 独占 1 张物理 GPU
  • 不能写 0.5

✅ 适用:训练任务、推理服务

❌ 不支持:显存限制、算力限制

二、限制「GPU 显存 / 算力」(细粒度)

方案 1:NVIDIA MIG(推荐,物理隔离)

适合 A100 / H100 等支持 MIG 的卡

特点

  • 将 1 张 GPU 拆成多个 独立实例
  • 每个实例有固定显存和算力
  • Kubernetes 原生支持

启用 MIG 后资源示例

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

✅ 强隔离

❌ 仅限特定 GPU

方案 2:NVIDIA Time-Slicing(共享 GPU)

适合推理、开发测试

原理

  • 多 Pod 共享同一张 GPU
  • 通过时间片调度(非显存隔离)

配置 Device Plugin

version: v1
sharing:
timeSlicing:
resources:
- name: nvidia.com/gpu
replicas: 4

Pod 仍可写:

nvidia.com/gpu: 1

✅ 提升利用率

❌ 无显存隔离,可能 OOM

方案 3:显存限制(非官方,需 Sidecar)

常用工具:

  • NVIDIA vGPU
  • CUDA MPS
  • 开源方案(如 HAMi / Volcano GPU 调度)

HAMi(原 kubernetes-gpu-sharing)

支持:

  • 限制显存(如 2Gi)
  • 限制算力(如 30%)

示例:

resources:
limits:
nvidia.com/gpu: 1
nvidia.com/gpumem: 2000
nvidia.com/gpucores: 30

✅ 灵活

❌ 需额外组件

三、通过调度层限制 GPU 使用

1. Node 级限制(最简单)

kubectl label node gpu-node1 gpu-type=training
nodeSelector:
gpu-type: training

2. 配额限制(Namespace)

apiVersion: v1
kind: ResourceQuota
metadata:
name: gpu-quota
spec:
hard:
nvidia.com/gpu: "4"

四、推荐实践组合

场景推荐方案
训练任务整卡 + ResourceQuota
推理服务MIG 或 Time-Slicing
多租户HAMi / vGPU
成本敏感MIG + 配额

五、常见问题

Q:能否限制 GPU 显存 50%?
原生不行,需 MIG / HAMi / vGPU
Q:Pod 超卖 GPU 会怎样?

可能显存 OOM,被驱动杀掉

如果你能告诉我:

  • GPU 型号(如 V100 / A100)
  • 使用场景(训练 / 推理 / 多租户)
  • 是否允许多组件

我可以给你一套 可直接用的 YAML 方案。

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

售前业务咨询

售后技术保障

400-100-2938

7*24小时售后电话

官方微信小程序