如何优化Kubernetes GPU分配

GPU
小华
2026-09-03

优化 Kubernetes 中的 GPU 分配,核心目标是提高 GPU 利用率、降低成本、避免资源浪费,同时保证任务隔离与调度正确性。下面从资源模型、调度策略、共享与隔离、监控与弹性几个层面系统说明。

一、明确 GPU 资源模型(基础)

1. 使用官方 Device Plugin

  • NVIDIA:nvidia-device-plugin
  • 每个 GPU 作为 nvidia.com/gpu: 1
  • Pod 只能整卡申请(默认)
resources:
limits:
nvidia.com/gpu: 1

✅ 适合:训练任务

❌ 问题:推理/小任务浪费严重

二、GPU 共享(提升利用率的关键)

1. 时间片 / 算力切分(推荐)

NVIDIA MPS / MIG

✅ MIG(A100 / H100)

  • 物理切分 GPU
  • 示例:
  • 1×A100 → 7 个实例
  • 资源变成:
nvidia.com/mig-1g.5gb: 1

✅ 强隔离
✅ 高利用率

❌ 仅限特定卡

✅ NVIDIA MPS(软共享)

  • 多进程共享一张卡
  • 适合推理

⚠️ 隔离性差,需配合限流

2. 显存级共享(社区方案)

  • Aliyun GPU Share
  • Volcano GPU Share
  • 支持:
aliyun.com/gpu-mem: 4096  # 4GB

✅ 低成本推理

❌ 无算力隔离

三、调度优化(避免“占而不用”)

1. 使用 Volcano / Koordinator

  • 支持:
  • Gang Scheduling
  • GPU 拓扑感知
  • Binpack / Spread
schedulerName: volcano

✅ 减少碎片化

✅ 训练任务友好

2. 节点亲和 & 污点

nodeSelector:
gpu-type: a100
tolerations:
- key: nvidia.com/gpu

✅ 防止非 GPU 任务占用

3. 设置 GPU 请求 ≠ 限制

resources:
requests:
nvidia.com/gpu: 1
limits:
nvidia.com/gpu: 1

避免“超额预约”

四、提高利用率的工程实践

1. 推理 & 训练分离

  • 训练:整卡 / MIG
  • 推理:共享 / 小卡

2. 自动缩容

  • KEDA + GPU 指标
  • 无请求时缩到 0

3. 队列与优先级

  • 高优训练
  • 低优推理可抢占

五、监控与诊断(必须做)

核心指标

  • GPU 利用率(DCGM)
  • 显存占用
  • 空转 Pod

工具

  • dcgm-exporter
  • Prometheus + Grafana
  • kubectl describe node

六、典型优化方案组合

场景推荐方案
大模型训练A100 + MIG + Volcano
推理服务GPU Share + KEDA
混合负载Koordinator
成本敏感MPS + 显存共享

七、常见坑

  • ❌ GPU 被 Init 容器占用
  • ❌ 只设 limits 不设 requests
  • ❌ 不监控导致“假繁忙”
  • ❌ 推理用整卡

如果你愿意,我可以:

  • 给你一套 生产级 GPU 调度 YAML
  • 按你的 卡型(T4/A10/A100) 定制方案
  • 对比 MIG vs MPS vs GPU Share

你现在的 GPU 使用场景是训练还是推理?用的什么卡?

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

售前业务咨询

售后技术保障

400-100-2938

7*24小时售后电话

官方微信小程序