news 2026/8/23 14:35:44

如何从零跑通 HAMi GPU 共享调度:K8s 安装配置实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何从零跑通 HAMi GPU 共享调度:K8s 安装配置实战指南

如何从零跑通 HAMi GPU 共享调度:K8s 安装配置实战指南

【免费下载链接】HAMiHeterogeneous GPU Sharing on Kubernetes项目地址: https://gitcode.com/GitHub_Trending/ha/HAMi

HAMi(异构 AI 计算虚拟化中间件)解决 K8s 集群 GPU 无法共享、整卡占用的浪费问题。本文带你把 HAMi GPU 共享调度跑起来:环境自检、最小安装、运行时配置、验证闭环。

环境自检清单(装之前先排雷)

HAMi 的 GPU 虚拟化依赖容器运行时把设备文件注入容器,所以驱动和运行时工具链是地基。下面这张表我一般会先逐条确认,全部通过再往下走:

依赖项最低版本检查命令预期输出
NVIDIA 驱动>= 440nvidia-smiDriver Version 不低于 440
nvidia-container-runtime> 2.0nvidia-ctk --version版本号 2.x 且可正常执行
Kubernetes>= 1.23kubectl versionServer Version v1.23+
Helm(K8s 的包管理器)> 3.0helm versionv3.x
glibc>= 2.17ldd --version2.17 及以上
Linux 内核>= 3.10uname -r3.10 及以上

任一不满足,后续步骤全部无效。

3 条命令跑通最小安装

先加 HAMi 的 chart 仓库(chart 就是一套打包好的部署清单):

helm repo add hami-charts https://project-hami.github.io/HAMi/

这一步只是登记仓库地址,不会改动集群任何内容。

接着一条命令装完所有组件:

helm install hami hami-charts/hami -n kube-system

HAMi 会同时拉起两块核心组件:接管调度的 vGPU 调度器(通过 webhook 拦截 Pod 创建请求来改写设备分配),以及部署在每个 GPU 节点上的 Device Plugin(K8s 用来把硬件资源暴露给容器的插件机制,负责上报 GPU 容量)。

最后验证:

kubectl get pods -n kube-system

看到hami-schedulerhami-device-plugin均为Running,安装就算成功。

节点侧运行时配置(Docker 为例)

HAMi 的虚拟化需要容器运行时把 GPU 设备注入容器,所以每个 GPU 节点都要先装 NVIDIA Container Toolkit:

echo 'deb https://nvidia.github.io/libnvidia-container/stable $(lsb_release -cs) main' | sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit

然后改 Docker 的 daemon.json,把默认运行时切到 nvidia,让容器里的进程默认就能摸到 GPU(改完systemctl restart docker生效):

{ "default-runtime": "nvidia", "runtimes": { "nvidia": { "path": "/usr/bin/nvidia-container-runtime", "runtimeArgs": [] } } }

如果你的节点跑的是 containerd,用nvidia-ctk runtime configure --runtime containerd生成配置并重启 containerd 即可,效果相同,不再展开。

打标节点 → 提交测试 Pod → 看调度结果

闭环验证分三步。先给节点打标,让调度器识别出 GPU 节点——这里有个小坑:漏了这一步 Pod 会一直 Pending 且不报明确原因:

kubectl label nodes <节点名> gpu=on

再提交一个只占单卡 50% 显存的测试 Pod(gpumem-percentage就是共享的精髓,两个 Pod 可以塞进同一张卡):

apiVersion: v1 kind: Pod metadata: name: gpu-pod spec: containers: - name: ubuntu-container image: ubuntu:22.04 command: ["bash", "-c", "sleep 86400"] resources: limits: nvidia.com/gpu: 1 nvidia.com/gpumem-percentage: 50 nvidia.com/gpucores: 30
kubectl apply -f gpu-pod.yaml kubectl describe pod gpu-pod

Pod 进入 Running 后,看下面这张对比图理解调度结果:没有 HAMi 时两个用户各占 2 张整卡、利用率 50%;有了 HAMi,两个负载被打包进 2 张卡且互相隔离,利用率直接拉满。

日常运维:升级回滚卸载

场景操作
升级刷新仓库后用 upgrade 覆盖部署,Pod 滚动重建:helm repo update && helm upgrade hami hami-charts/hami -n kube-system
回滚一条命令退回上一个 release 版本:helm rollback hami -n kube-system
卸载清掉调度器、Device Plugin 与监控资源:helm uninstall hami -n kube-system

HAMi GPU 共享调度到此已跑通,更多共享策略(显存/算力配比、MIG、多厂商异构设备)的配置项见官方仓库 README 与 docs 目录。

【免费下载链接】HAMiHeterogeneous GPU Sharing on Kubernetes项目地址: https://gitcode.com/GitHub_Trending/ha/HAMi

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/23 14:35:07

Shepherd.js 用户引导库:快速构建应用内引导式导航的完整指南

Shepherd.js 用户引导库&#xff1a;快速构建应用内引导式导航的完整指南 【免费下载链接】shepherd Guide your users through a tour of your app 项目地址: https://gitcode.com/gh_mirrors/sh/shepherd 产品上线后&#xff0c;新用户常常不知道从哪里点起。Shepherd…

作者头像 李华
网站建设 2026/8/23 14:33:38

3 分钟免费完成鼠标键盘自动录制:KeymouseGo 替你点完剩下 99 次

3 分钟免费完成鼠标键盘自动录制&#xff1a;KeymouseGo 替你点完剩下 99 次 【免费下载链接】KeymouseGo 类似按键精灵的鼠标键盘录制和自动化操作 模拟点击和键入 | automate mouse clicks and keyboard input 项目地址: https://gitcode.com/gh_mirrors/ke/KeymouseGo …

作者头像 李华
网站建设 2026/8/23 14:31:01

TP6-Vue-Admin 安装配置教程:从零到可访问的实操指南

TP6-Vue-Admin 安装配置教程&#xff1a;从零到可访问的实操指南 【免费下载链接】tp6-vue-admin 基于thinkphp6vue2.6element2.13 前后端分离落地解决方案 项目地址: https://gitcode.com/gh_mirrors/tp/tp6-vue-admin 这篇文章只解决一个问题&#xff1a;带你把 tp6-v…

作者头像 李华