配置 Driver 模式
Alauda GPU Management 支持三种 driver 模式。driver 来源和准备方式会因模式而异。在创建 ClusterPolicy 实例之前,请先选择一种模式;本页记录每种模式的工作机制。关于如何做出选择,请参见 Install 中的模式表。
模式 1:预编译 driver(不可变 OS)
对于 SUSE Linux Micro 这类不可变操作系统,请使用此模式,因为主机镜像必须保持不变。operator 会部署一个预编译的 driver 镜像,其 kernel module 是针对目标 node 的确切 kernel 构建的。
预编译 driver 镜像具有特定 kernel 依赖性:为某个 kernel 构建的镜像无法在其他任何 kernel 上加载。其 tag 编码了 driver 版本(包括 Alauda 修订版本)、完整的 kernel release(SUSE -default flavor 是 kernel release 的一部分,而不是 OS)以及操作系统:
-
产品包随附本版本验证过的 driver tuple:
580.126.09.1-5.14.21-150500.55.166-default-sle-micro5.5(R580、SUSE Linux Micro 5.5、kernel5.14.21-150500.55.166)。为控制包大小,不会捆绑其他 tuple。 -
其他 tuple 已发布到 Docker Hub:
alaudadockerhub/nvidia-driver。对于此 kernel,R570 版本发布为570.172.08.1-5.14.21-150500.55.166-default-sle-micro5.5。请导入所需版本并将其映射到集群 registry:已发布的 tag 只是镜像清单中的一项记录,本身并不代表对你的集群已获得支持或验证。使用前,请确认 driver 版本、kernel 和 OS 与你的 node 匹配。
-
driver 版本由你选择;kernel 和 OS 是 node 的事实。 请提供工作负载所需的 driver 版本——例如 R580(
580.126.09.1,随产品包提供)或 R570(570.172.08.1,从 Docker Hub 导入)。tag 中的 kernel 和 OS 部分必须与 node 完全一致,这不是你可以选择的值。如果你的 node kernel 没有已发布的 tuple,请提供uname -r和 GPU 型号联系 Alauda Customer Support 申请按需构建;对于未经测试的 kernel,不会预先发布 tuple。 -
内容:SUSE 签名的开源 kernel module(MIT/GPLv2)以及未修改的 NVIDIA 官方 user-space 包。每个 tuple 镜像都包含
/licenses/,其中提供完整的 NVIDIA driver 许可证和包清单。使用该镜像即表示接受该许可证,包括仅限与 NVIDIA 硬件一起使用。 -
选择方式:通过 driver spec 配置 driver(
ClusterPolicy.spec.driver,或者在useNvidiaDriverCRD=true时使用NVIDIADriverCR;deployDefaultCR=false表示不会自动部署 driver)。将repository设置为你复制镜像到的 registry(例如<your-cluster-registry>/mlops),将image设置为nvidia-driver,并将version设置为 tag 中的 driver-version 部分(例如580.126.09.1或570.172.08.1)。operator 会直接从该 registry 解析并拉取<repository>/<image>:<version>-<node-kernel>-<node-os>。如果 ACP 实施了镜像白名单策略,也请将导入的 driver tag 添加到ImageWhiteList中。
driver Pod 启动后,请同时验证已准入的 Pod image 和运行时的 imageID。仅重写 Pod image 并不能证明已拉取到预期镜像:
模式 2:预安装的主机 driver
当 GPU driver 在 operator 之外完成安装和升级时,请使用此模式。operator 仅管理运行时集成以及面向 Kubernetes 的组件。
-
在
ClusterPolicy中设置driver.enabled=false。 -
operator 不会创建 driver DaemonSet。在启用 device plugin、runtime integration 或 metrics 之前,请先确认每个 GPU node 上都已安装并健康运行主机 driver:
-
driver 生命周期(安装、升级、kernel 兼容性)遵循安装主机 driver 的系统流程。关于此模式下 operator 负责与不负责的内容,请参见 driver / toolkit boundary。
模式 3:上游 driver(可变 OS)
对于可变操作系统(如 Ubuntu),请使用此模式。driver 镜像由 NVIDIA 在 nvcr.io 上提供;Alauda 不会复制或托管该镜像。这与 Red Hat OpenShift certified GPU Operator 使用的模型一致。此模式可配置,但在本版本中未验证。
在线集群 — 在 ClusterPolicy.spec.driver 上设置 driver 值,以便 operator 拉取上游镜像并在 node 上构建 module:
最终生成的组合(例如 nvcr.io/nvidia/driver:580.126.20-ubuntu22.04)必须存在于 NGC 中。node 会在运行时拉取该镜像;拉取动作即为客户接受 NVIDIA 条款的时点。
空气隔离集群 — cluster administrator 按照 NVIDIA 的空气隔离文档,从可访问互联网的机器将镜像镜像到私有 registry:
请保持镜像后的 tag 与 NVIDIA 原始 tag 完全一致,以便进行版本跟踪和升级。在此模式下,driver 会在 node 上编译 kernel module,因此空气隔离集群还需要将 driver.repoConfig 指向内部 package source,该 source 必须包含目标 kernel headers;否则 driver 无法完成安装。
配置 toolkit 和 driver 路径
container toolkit 的安装路径与 driver 的安装路径是相互独立的设置。仅当 node 布局要求的路径与默认值不同时,才需要进行配置。
spec.toolkit.installDir控制 toolkit binaries 和 containerd runtime 的BinaryName。在 Ubuntu 这类可变系统上,默认值为/usr/local/nvidia。在 SUSE Linux Micro 这类不可变系统上,随附的 profile 使用/run/nvidia/toolkit-install,因为/usr/local是只读的。spec.hostPaths.driverInstallDir指定 operator 管理的 driver 组件的 driver 文件根目录。当driver.enabled=false且 driver 已预安装在主机上时,不需要此项。其默认值为/run/nvidia/driver。- 自定义路径必须存在于主机上,且对安装文件的组件可写;如果其中包含会被 operator 或 runtime 调用的程序,则挂载必须具有可执行权限(
exec)。诸如0755的目录模式无法覆盖noexec挂载。
例如,在 /run 以 noexec 挂载的 Ubuntu node 上,除非 driver 本身存在独立的 /run 执行失败问题,否则请保持 driver 路径不变,并将 toolkit 路径设置为可变文件系统:
更改路径后,请验证 ClusterPolicy、渲染后的 Toolkit DaemonSet 以及 containerd drop-in。runtime 的 BinaryName 必须引用所选的 toolkit 目录,且目标挂载不能包含 noexec:
支持边界
- NVIDIA driver software 仅授权用于 NVIDIA 硬件(NVIDIA Driver License)。
- GeForce/Titan 系列 software 不授权用于数据中心部署(blockchain-processing 场景除外)。受支持的目标 GPU model 遵循发布兼容性矩阵。
- 预编译 driver 镜像中的 NVIDIA binaries 未作修改。Alauda 不会修改或逆向工程 NVIDIA driver 本身。