版本:下一个
快速部署
本指南介绍如何使用 Helm 安装 HAMi,并以 NVIDIA GPU 为例运行 Pod、检查容器可见的显存容量。
先决条件
- 满足集群要求,包括 Kubernetes、Helm、
kubectl和安装权限。 - NVIDIA GPU:按节点准备指南完成环境配置,并将适用的 HAMi values 保存为
hami-nvidia-values.yaml,供安装时使用。 - 其他设备:从设备前置条件目录进入对应文档,完成驱动、容器运行时、节点标签等环境配置,再回到本文的使用 Helm 部署 HAMi章节继续安装。安装时需使用设备文档要求的 Helm 参数。
为 NVIDIA GPU 节点打标签
HAMi 的 NVIDIA Device Plugin 默认使用 gpu=on 节点标签。为需要由 HAMi 管理的节点添加标签:
kubectl label nodes <node-name> gpu=on
如果自定义了 devicePlugin.nvidiaNodeSelector,使用与选择器匹配的标签。
使用 Helm 部署 HAMi
添加 Helm 仓库:
helm repo add hami-charts https://project-hami.github.io/HAMi/
helm repo update
按设备补充安装参数,然后执行安装命令:
- NVIDIA GPU:在下方命令中添加
--values hami-nvidia-values.yaml,使用前面准备的配置文件。 - 其他设备:在下方命令中添加对应设备文档要求的
--values或--set参数。
helm install hami hami-charts/hami -n kube-system
Chart 会自动选择与 Kubernetes 服务端版本匹配的 scheduler 镜像。需要手动覆盖时,参阅在线安装指南。
检查 hami-scheduler 和所用设备的 Device Plugin Pod 是否处于 Running 和 Ready 状态。NVIDIA Device Plugin 的 Pod 名称包含 hami-device-plugin:
kubectl get pods -n kube-system
NVIDIA GPU 示例
其他设备的资源名称和验证方式请参阅对应设备文档。
提交演示任务
以下 Pod 通过 nvidia.com/gpu 申请 1 个 vGPU,并通过 nvidia.com/gpumem 将显存设为 10240 MiB。将配置保存为 gpu-pod.yaml:
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 # 申请 1 个 vGPU
nvidia.com/gpumem: 10240 # 每个 vGPU 的显存为 10240 MiB(可选)
创建 Pod 并等待就绪:
kubectl apply -f gpu-pod.yaml
kubectl wait --for=condition=Ready pod/gpu-pod --timeout=120s
如果等待超时,查看 Pod 状态和 Events 中的错误信息,排查调度或容器启动问题。Pod 就绪后再执行下一步。
kubectl describe pod gpu-pod
检查容器可见的显存容量
在容器中运行 nvidia-smi:
kubectl exec -it gpu-pod -- nvidia-smi
检查输出中 Memory-Usage 一栏的总显存是否为配置的 10240MiB。以下是输出示例,GPU 型号、驱动版本和时间以实际环境为准:
[HAMI-core Msg(28:140561996502848:libvgpu.c:836)]: Initializing.....
Wed Apr 10 09:28:58 2024
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.54.15 Driver Version: 550.54.15 CUDA Version: 12.4 |
|-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 Tesla V100-PCIE-32GB On | 00000000:3E:00.0 Off | 0 |
| N/A 29C P0 24W / 250W | 0MiB / 10240MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| No running processes found |
+-----------------------------------------------------------------------------------------+
[HAMI-core Msg(28:140561996502848:multiprocess_memory_limit.c:434)]: Calling exit handler 28
清理
验证完成后,删除示例 Pod:
kubectl delete pod gpu-pod