120 分钟 52 页 PPT 3 个 YAML 文件 2 个可视化 HTML
04-kubernetes-gpu/
├── README.md # 本文件
├── syllabus.md # 教学大纲 (120 分钟时间分配)
├── ppt-outline.md # PPT 大纲 (52 页)
├── hands-on-exercise.md # 课堂动手题 (3 个实验)
├── homework.md # 课后练习 (3 个任务)
├── lab-environment.md # 实验环境搭建说明
├── code/ # 配套 YAML 文件 (3 个)
│ ├── README.md # 使用说明 + 运行命令
│ ├── 01_nginx_demo.yaml # Nginx Deployment + Service (PPT 第 16 页 [动手])
│ ├── 02_gpu_pod.yaml # GPU Pod — nvidia-smi 测试 (PPT 第 45 页 [动手 1])
│ └── 03_gpu_deploy.yaml # GPU Deployment — 生产级工作负载 (PPT 第 45-46 页 [动手 1+2])
└── visuals/ # 可视化 HTML (2 个)
├── k8s-gpu-flow.html # K8s GPU 调度全链路: 7 步交互动画 (PPT 第 48 页)
└── device-plugin-sequence.html # Device Plugin 交互时序: 7 步 gRPC 调用流程
| 文件 | 用途 | 教学场景 |
|---|---|---|
| K8s GPU 调度全链路可视化 | K8s GPU 调度全链路 — 7 步可交互动画 | 第 48 页全链路回顾时打开,逐步骤讲解: kubectl → API Server → Scheduler → kubelet → Device Plugin → NVIDIA CTK → 容器启动 |
| Device Plugin 交互时序 | Device Plugin gRPC 接口 — Register / ListAndWatch / Allocate | 讲解 Device Plugin 机制时打开,逐步追踪 GPU 发现与分配全流程 |
交互方式: 点击「下一步」逐步查看每个组件的职责和日志;点击「自动」7 步自动播放 (每步 1.2s)。右侧面板显示每步的详细解释。
| 部分 | 时长 | PPT 页 | 重点内容 | 动手 |
|---|---|---|---|---|
| K8s 入门 | 35 min | 3–18 | Pod/Deployment/Service、声明式、控制循环 | 第 16 页: K8s 初体验 — 部署 Nginx (5min) |
| Device Plugin 机制 | 25 min | 19–28 | ListAndWatch/Allocate、NVIDIA DP 时序、CDI 演进 | — |
| DRA — 动态资源分配 | 30 min | 29–40 | ResourceClaim/ResourceClass、拓扑感知、Kueue 队列 | 第 47 页: DRA Claim 概念演示 (可选, 8min) |
| GPU 调度策略与动手实践 | 30 min | 41–52 | Filter/Score/Bind、GPU 拓扑调度、全链路回顾 | 第 45 页: 部署 GPU Pod (5min) + 第 46 页: 资源争抢 (7min) |
本模块是课程的转折点 —— 从单机 GPU 操作走向集群级 GPU 编排。
核心问题: 「你有 100 台 GPU 服务器,怎么管理 1000 个 GPU 应用?」
解答路线:
与前序模块的关系:
与后续模块的关系:
| 方式 | 说明 |
|---|---|
| Minikube | 单机 K8s 体验 (不支持 GPU) |
| k3s | 轻量级 K8s,支持 GPU |
| Kind | Docker 中运行 K8s (部分 GPU 支持) |
| 可视化 HTML | 浏览器直接打开,无需服务器 |
| 软件 | 版本 | 用途 |
|---|---|---|
| Kubernetes | ≥ 1.28 | 容器编排平台 |
| kubectl | ≥ 1.28 | K8s 命令行工具 |
| Helm | ≥ 3.12 | 包管理 (安装 Device Plugin/Kueue) |
| NVIDIA Device Plugin | latest | GPU 设备发现与管理 |
| Kueue | ≥ 0.6 (可选) | 作业级队列管理 |
| HAMi | ≥ 2.4 (可选) | GPU 虚拟化 (配合模块 3) |
| 实验 | 时长 | 主题 | 核心体验 |
|---|---|---|---|
| 实验 1: K8s 初体验 | 5 min | Nginx 部署 | 体验 kubectl + Pod/Deployment/Service 三个核心对象 |
| 实验 2: GPU Pod 部署 | 5 min | GPU 声明式调度 | 写 nvidia.com/gpu: 1 → 自动找 GPU 节点 → 验证 GPU 可见 |
| 实验 3: GPU 资源争抢 | 7 min | 资源不足时调度行为 | 超量声明 GPU → 观察 Pending → 读 Events 理解排队机制 |
| 作业 | 难度 | 主题 |
|---|---|---|
| 作业 1: K8s 实践 | ★★☆ | 部署 Nginx + GPU 应用全流程 |
| 作业 2: 机制分析 | ★★★ | 阅读 NVIDIA Device Plugin 源码,画出 Allocate 调用时序 |
| 作业 3: 调度方案设计 | ★★★★ | 设计支持 GPU 拓扑感知的调度方案 |
详见 homework.md。