1. GPU资源概述
1.1 GPU在Kubernetes中的核心价值
GPU(图形处理器)已从单纯的图形渲染硬件演变为高性能并行计算引擎。在Kubernetes集群中引入GPU资源,使得容器化工作负载能够直接利用GPU的并行计算能力,支撑AI训练、深度学习推理、科学计算和实时渲染等场景。
K8s集群中GPU资源的核心价值体现在以下三个维度:
| 价值维度 | 具体表现 | 典型场景 |
|---|---|---|
| 算力密度提升 | 单GPU卡可提供数千个CUDA核心,并行处理能力远超CPU | 大模型训练、分子动力学模拟 |
| 资源利用率优化 | 通过K8s调度实现GPU资源池化,避免物理机独占导致的闲置 | 多租户推理服务、批量离线任务 |
| 弹性扩缩容 | 结合K8s HPA与GPU指标,实现算力按需分配 | 在线推荐系统、视频转码集群 |
关键数据: 在AI训练场景中,单张NVIDIA A100 GPU可提供312 TFLOPS的FP16算力,相当于数十颗CPU的并行处理能力。K8s集群通过GPU资源管理,可将整体算力利用率从物理机模式的30%~40%提升至70%~85%。
1.2 GPU与CPU的架构差异
理解GPU与CPU的本质差异,是进行K8s GPU资源调优的前提。两者在设计哲学、计算模型和内存架构上存在根本区别:
| 对比维度 | CPU | GPU |
|---|---|---|
| 核心设计 | 少量高性能核心(4~64核),侧重低延迟串行执行 | 大量简单核心(数千个),侧重高吞吐并行计算 |
| 控制单元 | 复杂分支预测、乱序执行、大缓存 | 简单控制逻辑,依赖线程级并行隐藏延迟 |
| 内存架构 | 统一内存空间,大容量缓存(L1/L2/L3) | 独立显存(VRAM),高带宽但容量有限 |
| 任务模型 | 适合逻辑控制、I/O密集型、单线程任务 | 适合数据并行、矩阵运算、SIMT模式 |
| 功耗与散热 | 单CPU 65~280W,风冷即可 | 单GPU 150~700W,需液冷或高风量散热 |
调度视角: CPU调度关注的是核数和内存,而GPU调度必须额外关注显存容量、CUDA计算能力版本、NVLink拓扑和MIG(多实例GPU)分区状态。K8s默认调度器无法感知这些GPU专属属性,需要借助设备插件和扩展调度器。
1.3 GPU资源管理的核心挑战
在Kubernetes集群中管理GPU资源,远比管理CPU和内存复杂。以下是生产环境中常见的五大挑战:
- 资源抽象粒度粗:K8s默认将整张GPU卡作为最小分配单位,无法满足多Pod共享单卡的需求,导致显存和算力浪费。
- 显存与算力解耦困难:不同工作负载对显存和算力的需求比例差异大(如推理服务重显存、训练任务重算力),缺乏精细化调度能力。
- 设备拓扑感知缺失:K8s默认调度器不感知GPU之间的NVLink连接、PCIe拓扑和NUMA亲和性,可能导致跨节点通信瓶颈。
- 故障检测与自愈:GPU硬件故障(如XID错误、ECC校验失败)难以被K8s原生机制捕获,可能导致Pod反复CrashLoopBackOff。
- 多租户隔离:在共享GPU集群中,如何保证不同租户的算力隔离、显存隔离和故障隔离,是安全合规的关键。
常见误区: 很多团队认为只要安装了NVIDIA设备插件,K8s就能完美管理GPU。实际上,设备插件仅解决了“设备发现与分配”这一基础问题。真正的容量调优需要结合MIG、时间切片、GPU Operator、拓扑感知调度和自定义调度器扩展。
1.4 GPU资源管理技术栈全景
为了应对上述挑战,K8s生态中形成了分层管理的技术栈。下表梳理了从底层硬件到上层调度的关键组件:
| 层级 | 组件/技术 | 核心功能 | 适用场景 |
|---|---|---|---|
| 硬件层 | NVIDIA GPU (A100/H100/L40S) | 提供CUDA核心、Tensor Core、显存、NVLink | 所有GPU工作负载 |
| 驱动层 | NVIDIA Driver + CUDA Toolkit | GPU设备初始化、CUDA运行时支持 | 节点基础配置 |
| 容器运行时层 | nvidia-container-toolkit | 将GPU设备挂载到容器,设置LD_LIBRARY_PATH | Docker/containerd集成 |
| 设备发现层 | NVIDIA Device Plugin | 向K8s上报GPU资源,响应Pod调度请求 | 整卡分配模式 |
| 虚拟化层 | MIG / Time-Slicing / vGPU | 将单张GPU切分为多个独立实例 | 多租户共享、资源碎片消除 |
| 调度增强层 | GPU Operator / Volcano / Kueue | 拓扑感知调度、批量调度、配额管理 | 大规模集群、混合负载 |
| 监控层 | DCGM-Exporter + Prometheus | 采集GPU利用率、显存温度、功率、ECC错误 | 容量规划、告警、成本分析 |
课程路线图: 本章作为开篇,建立了GPU资源管理的全局认知。后续章节将逐一深入:设备插件配置(第2章)、MIG与时间切片(第3~4章)、拓扑感知调度(第5章)、GPU Operator部署(第6章)、监控与告警(第7章)以及容量规划实战(第8章)。