08 的设备权限只是前提:GPU 工作还依赖真实设备、宿主驱动、用户空间库、设备节点与 runtime 注入路径。CDI(Container Device Interface)提供描述第三方设备怎样被运行时注入的接口;一个 CDI 名称或 Pod 请求字段存在,不证明容器已获得可用的驱动堆栈。

将注入分解成四个核对点

先记录宿主 GPU 型号/驱动与设备节点,再查看 CDI 描述是否指向实际设备以及需要哪些 mount/env/permissions,运行时是否把这些要求应用到进程,最后运行一个小规模受控功能请求并保存错误/成功。Kubernetes 设备插件宣告的 allocatable 资源也不能代替容器内驱动库可加载证据。正例应在专用 GPU 节点固定驱动、CUDA/runtime/CDI spec 版本,使用同一探针只做设备可见和最小调用;边界案例撤去自建 CDI 描述的一项库挂载或让设备权限拒绝,定位失败层。不可卸载共享节点驱动或抢占他人的 GPU。

设备、驱动与清理表、应用侧探针包仅是素材;本机尚未发现 GPU/运行时、没有执行过设备注入与 CUDA 调用,吞吐、隔离和功能结果全部 `NOT_RUN`。即使能静态解析 CDI 文件,也不能声称 GPU 可用。
现象 核查 不可推出
看见设备节点 库、驱动与权限 计算请求一定成功
CDI 解析通过 实际设备与注入后 mount 节点有 GPU
Pod Pending device plugin allocatable 是应用内部驱动错误

练习

  1. 预测 CDI 描述可解析但没有物理 GPU 的节点会在哪层失败;在独立 GPU VM 核对声明、实际节点设备与 runtime 返回。
  2. 预测驱动和用户态库版本不匹配时设备可见与计算结果的区别,固定版本做小负载,不编造性能数据。

先修:17:运行时、27:节点资源。下一篇:E06:Wasm/WASI。

系列总目录:从进程隔离到运行时与编排。

参考资料