实验 2: 本地 Fake GPU 安装 HAMi
入门时长: 约 30 分钟环境: macOS (OrbStack) · Linux (Ubuntu + kind) · 无需 GPU费用: 免费验证于: 2026-05-21作者: @rootsongjc, @maishivamhoo123
本实验将引导你搭建一个纯本地 Kubernetes 集群,使用 OrbStack(macOS)或 kind(Linux/Ubuntu),配合 run-ai/fake-gpu-operator,然后在线安装 HAMi。
这个实验不需要真实 NVIDIA GPU,适合用于课堂预习、讲解 HAMi 组件组成、验证 GPU Pod 调度流程,以及在个人电脑上快速熟悉 HAMi 的基础使用方式。
你将得到什么
完成本实验后,你会得到一个本地 Kubernetes 集群:
- fake-gpu-operator 在 CPU 节点上模拟
nvidia.com/gpu资源 - HAMi scheduler、admission webhook 等控制面组件正常运行
- 普通 Pod 可以通过
nvidia.com/gpu申请模拟 GPU - 可以观察 fake GPU 资源从节点发现、Pod 申请、调度到运行的完整链路
备注
fake GPU 不能代表真实 GPU 的显存隔离、算力隔离、CUDA 运行时和驱动能力。本实验用于理解 HAMi 组成和基础调度链路;涉及真实显存切分、nvidia.com/gpumem、nvidia.com/gpucores、CUDA 程序运行和性能隔离时,仍需要真实 NVIDIA GPU 环境。
安装全景图
整个本地安装过程分 7 步:
| 步骤 | 目的 | 解决什么问题 |
|---|---|---|
| 搭建并确认环境 | 创建/验证集群,检查 kubectl 和 Helm | 确保 Kubernetes 集群可用 |
| 安装 fake-gpu-operator | 模拟 NVIDIA GPU 资源 | 让无 GPU 节点也能上报 nvidia.com/gpu |
| 安装 HAMi | 部署 HAMi 控制面 | 观察 HAMi scheduler、webhook 等组件 |
| 安装 Prometheus | 部署监控栈 | 采集 GPU 指标,给 HAMi WebUI 提供数据源 |
| 运行模拟 GPU 工作负载 | 验证调度链路 | 体验 Pod 申请 GPU 后被调度运行 |
| 安装 HAMi WebUI | 部署可视化管理界面 | 图形化查看 GPU 节点、资源分配和使用趋势 |
| 观察 HAMi 和 fake GPU | 理解组件职责边界 | 明确哪些能力需要真实 GPU |
前提条件
- macOS (OrbStack)
- Linux (Ubuntu + kind)
- macOS,Intel 或 Apple Silicon 均可
- 已安装 OrbStack 并启用内置 Kubernetes
- 能访问 GitHub、GHCR 和 HAMi Helm 仓库
- 本机至少 4 CPU、8 GB 内存可用
为什么用 OrbStack?
OrbStack 自带 Kubernetes(基于 k3s),无需额外安装 kind 或 Docker Desktop。资源占用更少,启动更快,macOS 上做本地实验首选。
检查 Helm(后面安装 fake-gpu-operator 和 HAMi 都需要):
helm version
如果 Helm 未安装:
brew install helm
- Ubuntu 20.04 LTS 或更高版本,x86_64 或 ARM64
- 已安装 Docker Engine 且正在运行
- 已安装
kindv0.20.0 或更高版本 - 已安装
kubectl - 已安装 Helm 3.x 或更高版本
- 能访问 GitHub、GHCR 和 HAMi Helm 仓库
- 本机至少 4 CPU、8 GB 内存可用
为什么用 kind?
kind(Kubernetes IN Docker)在 Docker 容器内运行完整的 Kubernetes 集群。它适用于任何安装了 Docker 的 Linux 发行版,无需特殊系统集成,是 Linux 上本地 Kubernetes 开发的标准工具。
如需安装前置依赖,请执行以下命令:
# Docker Engine
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER
newgrp docker
# kind
KIND_VERSION=v0.23.0
curl -Lo ./kind "https://kind.sigs.k8s.io/dl/${KIND_VERSION}/kind-linux-amd64"
chmod +x ./kind && sudo mv ./kind /usr/local/bin/kind
# kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl && rm kubectl
# Helm
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash