GPU 别再被“抢着用”了:聊聊 K8s 上 AI 任务的调度与隔离那点事

简介: GPU 别再被“抢着用”了:聊聊 K8s 上 AI 任务的调度与隔离那点事

GPU 别再被“抢着用”了:聊聊 K8s 上 AI 任务的调度与隔离那点事


这两年只要你公司一搞 AI,运维就很容易陷入一种状态:

白天看 GPU 利用率,晚上做 GPU 的梦。

你会发现一个很现实的问题:
GPU 明明很贵,但就是用不好

  • 有的 Pod 一把占满 8 张卡
  • 有的训练任务跑着跑着把别人挤死
  • 有的 GPU 100% 显存,算力却只有 20%
  • 老板问:
    👉 “这卡一天烧几千块,真值吗?”

如果你也有类似的经历,那今天这篇文章,基本就是给你写的。


一、先说句大实话:GPU 在 K8s 里,从来就不是“一等公民”

CPU / Memory 在 K8s 里是什么地位?

  • 可压缩 / 不可压缩
  • Requests / Limits
  • CFS 调度
  • QoS 等级

而 GPU 呢?

👉 本质上是个“整块资源”

  • 不能被 kube-scheduler 原生切
  • 不能像 CPU 一样时间片抢占
  • 不能像内存一样 swap

所以 K8s 一开始的态度是:

“GPU?我不懂,你自己搞。”

于是,Device Plugin 就登场了。


二、Device Plugin:GPU 能进 K8s 的“通行证”

我一直把 Device Plugin 理解成一句话:

“把物理设备,翻译成 K8s 能听懂的资源。”

NVIDIA Device Plugin 做了什么?

简单拆一下:

  1. 探测节点上的 GPU
  2. 向 kubelet 注册资源:

    nvidia.com/gpu
    
  3. kube-scheduler 看到这个资源
  4. Pod 通过 requests / limits 申请 GPU
  5. kubelet 在容器启动时完成设备注入

一个最经典的 GPU Pod 示例

apiVersion: v1
kind: Pod
metadata:
  name: gpu-train
spec:
  containers:
  - name: trainer
    image: pytorch/pytorch:latest
    resources:
      limits:
        nvidia.com/gpu: 1

关键点只有一个:

👉 GPU 只能写在 limits,不能写在 requests

因为 GPU 不能被超卖。


这套机制解决了什么?

  • ✅ GPU 不会被多个 Pod 同时占
  • ✅ 调度器知道哪台机器还有卡
  • ✅ 运维终于不用靠“人肉记忆”卡在哪

但注意,这只是“能用”,离“好用”还差得远。


三、问题来了:一张 GPU,真的只能一个任务用吗?

这是我最常被问的一句:

“Echo,GPU 能不能像 CPU 一样分着用?”

答案是:
能,但 K8s 不原生支持,需要 NVIDIA 帮你兜底。


四、GPU 隔离的三种境界(非常真实)

第一层:整卡独占(最简单,也最浪费)

  • 一 Pod = 一 GPU
  • 适合大模型训练
  • 问题是:

    • 推理任务太浪费
    • 小模型“杀鸡用牛刀”

第二层:MIG(硬隔离,强推荐)

如果你用的是 A100 / H100:

  • MIG(Multi-Instance GPU)
  • 一张卡切成:

    • 1g.5gb
    • 2g.10gb
    • 7g.40gb

👉 这是“真隔离”,不是时间片

K8s 里表现为:

nvidia.com/mig-1g.5gb
nvidia.com/mig-2g.10gb

Pod 示例:

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

我个人评价一句:

MIG 是目前最“像 CPU 的 GPU”。


第三层:时间片 / 共享(高级玩法,风险也高)

  • CUDA MPS
  • GPU Time Slicing
  • 适合推理高并发

但说句良心话:

👉 共享 GPU = 运维背锅概率直线上升

性能抖动、OOM、不可预测,是家常便饭。


五、NVIDIA DCGM:GPU 世界的“Node Exporter”

说完“能调度、能隔离”,我们聊点运维最关心的

“这 GPU 到底用得咋样?”

这时候,DCGM(Data Center GPU Manager) 就必须登场了。


DCGM 解决的不是“能不能用”,而是“用得好不好”

它能给你什么?

  • GPU 利用率
  • 显存占用
  • Tensor Core 使用率
  • PCIe 带宽
  • 温度 / 功耗
  • ECC 错误

👉 一句话:GPU 的体检报告


DCGM + K8s + Prometheus 的经典组合

部署 DCGM Exporter 后,你会看到类似指标:

DCGM_FI_DEV_GPU_UTIL
DCGM_FI_DEV_FB_USED
DCGM_FI_DEV_POWER_USAGE

然后你就可以:

  • 做 Grafana 大盘
  • 给 GPU 过热报警
  • 找出“占着卡不干活”的作业

六、调度才是灵魂:别让 GPU 看“运气”

很多团队 GPU 用不好,不是卡的问题,是调度策略太佛系

1️⃣ 节点分池(非常重要)

  • gpu-train-node
  • gpu-infer-node
  • gpu-mig-node

配合:

nodeSelector:
  gpu-type: train

👉 别让训练和推理混在一起打架


2️⃣ 用好 Taint / Toleration

tolerations:
- key: "gpu"
  operator: "Exists"
  effect: "NoSchedule"

GPU 节点不是公共厕所,
不是谁想上就能上。


3️⃣ 调度 ≠ 公平,调度是“业务优先级的体现”

  • 离线训练:可以等
  • 在线推理:不能抖
  • Demo 项目:别来抢卡

👉 PriorityClass 一定要用


七、我个人的一点感受(很真实)

做 GPU 运维这几年,我最大的感触是:

GPU 管理,本质上是“组织管理问题”,不是技术问题。

  • 技术能解决 60%
  • 剩下 40% 是:

    • 谁能用
    • 谁先用
    • 谁为浪费买单

K8s + Device Plugin + DCGM
只是帮你把“账算清楚”。

真正决定 GPU 效率的,是:

  • 调度策略
  • 资源边界
  • 团队共识

八、最后一句话

GPU 贵不可怕,可怕的是贵,还用得一塌糊涂。

如果你正在:

  • 搭 AI 平台
  • 管 GPU 集群
  • 被 GPU 利用率折磨

那请记住一句话:

先让 GPU 进 K8s,
再让 GPU 被隔离,
最后让 GPU 被看清。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
1月前
|
人工智能 安全 API
Nacos 安全护栏:MCP、Agent、配置全维防护,重塑 AI Registry 安全边界
Nacos安全新标杆:精细鉴权、无感灰度、全量审计!
868 70
|
18天前
|
存储 弹性计算 数据挖掘
阿里云最便宜的元服务器选择:38元、99元、199元购买资格与选择策略参考
目前阿里云推出了多款低价云服务器,包括轻量应用服务器适合轻量级应用,200M带宽,抢购价38元/年;经济型e实例满足中小企业日常应用,3M带宽,优惠价99元/年;通用算力型u1实例则适合高性能需求企业,5M带宽,优惠价199元/年。用户可根据需求、购买资格和预算进行选择,同时,阿里云还提供其他多种规格实例优惠,满足不同阶段业务需求。
|
17天前
|
SQL 算法 搜索推荐
模型复现翻车的第一现场:不是代码,而是你没管好训练数据
模型复现翻车的第一现场:不是代码,而是你没管好训练数据
95 9
|
Kubernetes 安全 网络协议
【K8S系列】深入解析k8s网络插件—Calico
【K8S系列】深入解析k8s网络插件—Calico
5620 0
|
26天前
|
存储 弹性计算 人工智能
阿里云服务器租用价格表(2026年最新)轻量、ECS、GPU 收费标准
阿里云服务器涵盖轻量应用服务器、云服务器ECS及GPU服务器三大类,适配从个人开发到企业核心业务的不同需求,价格差异显著。以下结合最新收费信息,用通俗语言梳理各机型配置与价格,包含优惠活动、续费规则及附加资源成本,帮助用户精准把控预算。
462 4
|
29天前
|
存储 缓存 Python
优雅的魔法:用Python装饰器为函数“穿新衣”
优雅的魔法:用Python装饰器为函数“穿新衣”
210 136
|
24天前
|
域名解析 安全 搜索推荐
新手如何在1panel上部署SSL证书
本文详解如何在1Panel中快速部署SSL证书:登录后台→进入网站管理→上传key和pem文件(注意对应关系),实现HTTPS加密,提升网站安全性与搜索引擎收录率。零基础也能轻松上手!
176 2
|
29天前
|
机器学习/深度学习 运维 数据可视化
基于 YOLOv8 的桥梁病害(八类缺陷、病害高精度)自动检测 [目标检测完整源码]
基于YOLOv8的桥梁病害自动检测系统,可精准识别裂缝、腐蚀、混凝土退化等八类缺陷,融合PyQt5可视化界面,支持图片、视频及摄像头实时检测。提供完整源码、预训练模型与数据集,适用于桥梁巡检、科研教学与智能运维,提升检测效率与标准化水平。
213 22
基于 YOLOv8 的桥梁病害(八类缺陷、病害高精度)自动检测 [目标检测完整源码]
|
22天前
|
Kubernetes 安全 API
Kubernetes API 扩展与安全:别让谁都能对集群“下手”
Kubernetes API 扩展与安全:别让谁都能对集群“下手”
124 15

热门文章

最新文章