HAMi Kubernetes GPU 共享调度完整指南从零部署到快速上手【免费下载链接】HAMiHeterogeneous GPU Sharing on Kubernetes项目地址: https://gitcode.com/GitHub_Trending/ha/HAMiHAMi 是面向 Kubernetes 的 GPU 共享与异构设备调度组件让一块物理 GPU 按显存和算力百分比切分给多个 Pod应用代码无需任何修改。跟着本教程完成环境核对、节点容器运行时配置、Helm 一键安装与验证最后掌握升级与回滚操作。它是什么、值不值得装HAMiHeterogeneous AI Computing Virtualization Middleware是一个 CNCF 孵化项目主仓库 charts/hami/ 提供标准 Helm Chart调度器、Webhook 与 device plugin 均由 Go 语言实现。它解决的典型问题是小任务独占整卡导致 GPU 闲置、多团队争抢同一块卡、不同厂商设备各用一套调度逻辑。它的工作链路是Mutating Webhook 拦截带 GPU 请求的 Pod调度器扩展程序完成设备感知的 filter 与 scoredevice plugin 把设备以nvidia.com/gpu、nvidia.com/gpumem等扩展资源注册给 kubelet容器内的 HAMi-core 组件再在 CUDA 层真正执行显存与算力上限。适合它的场景共享推理集群、多租户 Notebook/训练平台、需要按卡型或 UUID 定向调度的混合卡池。如果你只是独占整卡跑训练原生 device plugin 已够用HAMi 的价值在切片、限额、定向调度。动手前环境核对清单逐项打勾后再动手缺一项都会让 device plugin 起不来或 Pod 拉不起。组件最低版本说明NVIDIA 驱动440每个 GPU 节点都要装好NVIDIA Container Toolkit1.x提供容器内的 nvidia 运行时Kubernetes1.18Chart 要求的 kubeVersion 下限Helm3.0安装入口glibc2.17HAMi-core 运行库依赖Linux 内核3.10节点内核下限节点环境配置目标只有一个让容器运行时能注入 NVIDIA 驱动。改错位置Pod 里就会报找不到libcuda。Docker 节点用 nvidia-ctk 重写运行时配置改什么/etc/docker/daemon.json把默认运行时指向 nvidia。为什么HAMi 只负责分卡驱动注入仍依赖容器运行时。操作nvidia-ctk runtime configure --runtime docker sudo systemctl restart docker如何确认docker info | grep -i runtime输出中出现nvidia运行时即生效。containerd 节点改 config.toml 后重启改什么/etc/containerd/config.toml的[plugins.io.containerd.grpc.v1.cri.containerd.runtimes]段。为什么kubelet 走 CRI 创建容器nvidia 运行时必须在这里注册。操作nvidia-ctk runtime configure --runtime containerd sudo systemctl restart containerd如何确认containerd config dump | grep -A5 nvidia看到nvidiaruntime 配置段即通过。两种运行时二选一按你集群实际使用的那个配置即可。安装与验证节点就绪后按编号步骤执行每步都有对应的成功标志。1. 给 GPU 节点打标Chart 中 device plugin 的nvidiaNodeSelector默认是gpuon没打标的节点不会跑 vGPU 组件。kubectl label nodes 节点名 gpuon预期输出node/节点名 labeled。2. 添加 HAMi Helm 仓库helm repo add hami-charts https://project-hami.github.io/HAMi/ helm repo update预期输出hami-charts has been added to your repositories。3. Helm 一键安装helm install hami hami-charts/hami -n kube-system旧版本集群可加--set scheduler.kubeScheduler.imageTagv1.16.8让 kube-scheduler 镜像与集群版本对齐。预期输出NAME: hami、STATUS: deployed。4. 验证组件状态kubectl get pods -n kube-system看到hami-scheduler-*与hami-device-plugin-*均为Running才算通过。5. 验证 GPU 资源上报kubectl describe node 节点名 | grep -A1 nvidia.comnvidia.com/gpu应显示为物理卡数 × 切分数默认 10例如 4 卡节点显示 40。6. 提交切片 Pod 做端到端验证仓库自带示例 examples/nvidia/default_use.yaml申请 1 块物理 GPU、3000Mi 显存kubectl apply -f examples/nvidia/default_use.yamlPod 状态变为Running且kubectl describe pod gpu-pod的 limits 里同时出现nvidia.com/gpu与nvidia.com/gpumem: 3000即完成安装闭环。之后可通过节点端口31993的/metrics或 WebUI 面板观察各容器显存占用升级、回滚与卸载升级helm upgrade hami hami-charts/hami -n kube-system先执行helm repo update回滚helm rollback hami 上一版本号 -n kube-system卸载helm uninstall hami -n kube-system注意卸载只清理集群内资源节点上的daemon.json、config.toml改动和节点标签不会回退需要自行保留或恢复。更多行为细节可以看仓库内的 charts/hami/values.yaml 逐项注释如deviceSplitCount、migStrategy、scheduler.defaultSchedulerPolicyMIG 动态生命周期说明在 docs/develop/dynamic-mig-lifecycle.md完整配置项参考 charts/hami/README.md。装好之后建议先在一台节点上用切片 Pod 压一轮显存上限再扩到整个 GPU 池。【免费下载链接】HAMiHeterogeneous GPU Sharing on Kubernetes项目地址: https://gitcode.com/GitHub_Trending/ha/HAMi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考