K8s集群GPU成本优化:从监控到调度实战指南

K8s集群GPU成本优化:从监控到调度实战指南

K8s集群GPU成本优化的核心结论很直接:先确认GPU是否真的被用满,再决定是共享、调度还是缩容。
如果GPU平均利用率低于30%,大多数情况下不需要加卡,而是通过共享调度、自动缩容和按需实例把闲置资源释放掉。
本文按“监控→配置→验证→避坑”的顺序展开,适合有基础Linux和K8s操作经验、但没做过GPU成本治理的运维人员。

第一步:先看清GPU到底浪费在哪里

优化前必须拿到数据,否则容易把“业务低峰”误判成“资源浪费”。
在装有NVIDIA驱动的节点上,登录节点执行:

nvidia-smi --query-gpu=index,name,utilization.gpu,memory.used,memory.total --format=csv -l 5

这条命令每5秒输出一次GPU利用率和显存占用。
观察5-10分钟,重点看两个指标:利用率长期低于20% 和 显存占用远大于计算占用。
前者说明计算资源闲置,后者说明任务只是占着显存但没真正算。

如果节点多,不建议逐台登录。
部署DCGM Exporter并把指标接入Prometheus,查询语句示例:

avg(DCGM_FI_DEV_GPU_UTIL) by (node)

这个查询能按节点看到GPU平均利用率。判断标准:连续一周平均利用率低于30%的节点,才纳入优化范围;
低于10%的节点优先处理。

第二步:根据任务类型选择共享或调度策略

确认浪费后,不要直接删任务,而是按任务类型处理。

推理类任务(如模型服务):多数时间利用率低但要求随时响应,适合开启GPU共享。
如果使用NVIDIA A100/A30等支持MIG的卡,可切分MIG实例:

nvidia-smi mig -cgi 1g.5gb,1g.5gb -C

执行后把每个MIG实例作为独立资源暴露给K8s,多个小模型可跑在同一张卡上互不干扰。
注意MIG切分后单实例显存和算力固定,不适合需要大显存的任务。

训练类任务:通常需要整卡或整机,优化方向是排队和抢占,而不是共享。
配置优先级让高优任务优先调度,低优任务在资源不足时自动让出。

时间片共享方案:如果卡不支持MIG,可在Device Plugin中启用时间片。
修改DaemonSet环境变量:

env:
- name: SHARED_DEVICE
  value: "true"

应用后重启Device Plugin Pod。
时间片共享的代价是任务之间会互相争抢算力,只建议给低优先级、能容忍延迟波动的任务使用。

第三步:用自动缩容和竞价实例压掉固定成本

共享只解决单卡利用率,集群层面还要减少闲置节点。

配置Cluster Autoscaler缩容:确保GPU节点池开启缩容,并设置合理的缩容阈值。
关键参数:

--scale-down-utilization-threshold=0.5
--scale-down-unneeded-time=10m

含义是节点连续10分钟利用率低于50%就触发缩容。注意:如果任务没有配置资源请求(requests),Autoscaler无法判断节点是否空闲,缩容会失效。
务必给GPU Pod设置:

resources:
  limits:
    nvidia.com/gpu: 1

使用竞价实例或抢占式实例:训练和批处理任务对中断不敏感,可放到竞价节点池。
在节点标签中标记:

kubectl label nodes  node-type=spot

再用nodeSelector把任务调度过去。避坑:推理服务和有状态服务不要放竞价节点,实例被回收时会导致服务不可用。

第四步:验证优化效果并设置告警

调整后不要凭感觉判断,用数据复查。
重新执行第一步的利用率查询,对比优化前后的两个数字:GPU平均利用率和单位任务成本。
如果利用率从20%提升到60%以上,或者同等工作量下GPU节点数减少,说明优化有效。

设置告警规则,避免优化后出现资源不够:

avg(DCGM_FI_DEV_GPU_UTIL) by (node) > 85

当节点利用率持续超过85%时告警,提醒可能又要加卡或扩容。
同时监控Pod的Pending数量,如果大量GPU Pod排队,说明缩容过头。

常见问题与避坑清单

问题一:开启MIG后任务报显存不足。 检查MIG切分规格是否小于任务实际需求,大模型任务应使用整卡或大规格MIG实例,不要为了省成本强行切小。

问题二:Autoscaler不缩容。 优先检查Pod是否设置了resources.requests,以及是否有PodDisruptionBudget阻止驱逐。
GPU节点上的DaemonSet也可能让节点一直“非空”,需要确认DaemonSet是否被正确忽略。

问题三:共享后任务变慢。 时间片共享本质是分时复用,多个任务同时跑会互相影响。
对延迟敏感的服务,建议单独占用MIG实例或整卡,不要混部。

避坑提醒:任何缩容、改调度策略前,先确认业务低峰期和回滚方案。
GPU任务重启成本高,训练任务尤其要保留checkpoint。
不要在生产集群一次性全量开启共享,先拿一个节点池灰度验证。
如果涉及删除节点或改DaemonSet,建议先备份相关YAML:

kubectl get daemonset -n kube-system nvidia-device-plugin -o yaml > nvidia-device-plugin-backup.yaml

收尾建议

服务器K8s集群GPU成本优化的顺序不能颠倒:先监控拿到利用率,再按任务类型选共享或调度,最后用自动缩容和竞价实例降低固定支出。
每做完一步都要用Prometheus数据验证,避免“看起来省了”但业务变慢。
如果你的集群还没有GPU监控,建议先把DCGM Exporter和告警搭起来,再动调度配置。

分享到:
上一篇
K8s集群GPU弹性伸缩配置实战:从驱动安装到HPA自动扩缩容
下一篇
K8s集群GPU算力调度:从插件安装到多卡分配实操
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意