升级容器化 Driver

此操作步骤仅适用于由 operator 管理的容器化 Driver,且满足 spec.driver.installMode=containerizedspec.driver.usePrecompiled=true,并且 spec.images.precompiledDriver.tag 为空。在此模式下,修改 spec.driver.version 会选择新的预编译 Driver 镜像,而 Driver 升级策略负责控制替换和重启批准。

不要将此操作步骤用于 installMode=host。在 v26.6.0 中,spec.driver.version 仅用于预编译镜像 tag 解析,而 spec.driver.upgradePolicy 仅在容器化模式下管理替换。托管的 Host Driver 变更需要单独规划的节点维护操作步骤。如果 spec.driver.enabled=false,请遵循安装 Host Driver 的系统生命周期流程。

本页中的命令使用默认 Operator 命名空间 npu-operator。如果 Operator 安装在其他命名空间中,请将 npu-operator 替换为该命名空间。

升级前准备

  1. 检查 版本和组件兼容性
  2. 为每个 NPU 节点配置文件镜像新 Driver 镜像 tag。
  3. 如果 ACP 强制执行镜像白名单策略,请更新目标业务集群中的 ImageWhiteList 条目。
  4. 规划由 Operator 为每个升级节点执行 cordon,并驱逐该节点上请求 huawei.com/Ascend* 资源的 Pods。这不是完整的节点 drain。请在维护窗口前停止不得被驱逐的工作负载,确保 PodDisruptionBudgets 允许预期的驱逐,并处理使用 emptyDir 的 Pods。默认情况下,emptyDir 工作负载会阻止替换,除非显式接受 spec.driver.upgradePolicy.podDeletion.deleteEmptyDir=true
  5. 备份 NPUOperatorCtl 实例 YAML。

触发预编译 Driver 升级

NEW_VERSION 设置为预编译 Driver 镜像所使用的目标 HDK 版本,然后选择重启策略:

NEW_VERSION=25.5.0

kubectl -n npu-operator patch npuoperatorctl <npuoperatorctl-name> --type=merge \
  -p "{\"spec\":{\"driver\":{\"version\":\"${NEW_VERSION}\",\"upgradePolicy\":{\"autoUpgrade\":false}}}}"

对于生产集群,除非已批准自动节点重启,否则请使用 autoUpgrade: false

批准节点重启

在手动模式下,在更改目标 Driver 版本后,批准每个预期升级的节点。批准注解是 v26.6.0 创建替换事务的输入;npu.openfuyao.com/reboot-required=true 标签会在批准被消耗后出现。

NODE_NAME=<npu-node-name>
kubectl annotate node ${NODE_NAME} npu.openfuyao.com/approve-reboot=true --overwrite

只批准当前维护窗口包含的节点。不要将原始的 approve-reboot=true 注解应用到所有 NPU 节点:对于当前不需要替换的节点,该注解可能会保留,并批准后续事务。

验证升级

检查 operator 管理的重启事务状态。v26.6.0 不会写入 driver-upgrade-state 标签:

kubectl get nodes -l openfuyao.com/npu.present \
  -o custom-columns=NAME:.metadata.name,REBOOT-REQUIRED:.metadata.labels.npu\.openfuyao\.com/reboot-required,REBOOT-REASON:.metadata.annotations.npu\.openfuyao\.com/reboot-reason,TARGET-DRIVER-ID:.metadata.annotations.npu\.openfuyao\.com/target-driver-id

检查 Driver Pod 镜像:

kubectl get pod -n npu-operator -l app=npu-driver-daemonset \
  -o jsonpath='{range .items[*]}{.spec.nodeName}{"\t"}{.spec.containers[0].image}{"\n"}{end}'

在 NPU 节点上运行 npu-smi,并确认期望的 Driver 版本。

回滚说明

容器化 Driver 回滚是节点生命周期操作,而不仅仅是对象回滚。在尝试回滚之前:

  • 确认目标旧 Driver 镜像仍然可用,并且在目标业务集群中仍被 ImageWhiteList 允许;
  • 考虑 NPU 请求型工作负载的驱逐,并停止不得被驱逐或重启的工作负载;
  • spec.driver.version 重新修补回之前的版本;
  • 再次批准所需的节点重启流程。

如果先前的 Driver 版本与当前内核、固件或节点 OS 不兼容,请在回滚前联系 Alauda 客户支持。