验证

使用此页面确认 Alauda Build of NPU Operator 已安装 NPU 软件栈,并且工作负载可以消费 NPU 资源。

验证 operator 状态

检查 NPUOperatorCtl 实例:

kubectl -n npu-operator get npuoperatorctl

Deployed 条件应为 True。新安装的 NPUOperatorCtl 会报告原因 InstallSuccessful;在 Helm release 成功升级后,会报告 UpgradeSuccessful

检查已部署命名空间中的组件 Pod:

kubectl -n npu-operator get pods
kubectl -n kube-system get pods -l name=ascend-device-plugin-ds
kubectl -n npu-exporter get pods -l app=npu-exporter
kubectl -n mindx-dl get pods
kubectl -n default get daemonset mindio-tft mindio-acp --ignore-not-found

在默认安装情况下,Operator、Driver、Runtime 和 NPU Feature Discovery 运行在 npu-operator 中;如果你选择了其他安装命名空间,这些资源会跟随 Operator 的安装命名空间。Ascend Device Plugin 运行在 kube-system,NPU Exporter 运行在 npu-exporter,可选的 MindCluster 组件运行在 mindx-dl,可选的 MindIO DaemonSet 运行在 default 中。当对应组件已启用时,Pod 应处于 Running;如果这些可选组件被禁用,返回空结果是预期行为。

验证节点资源

检查节点的可分配资源:

kubectl get node ${nodeName} -o jsonpath='{.status.allocatable}'

预期示例:

{
  "huawei.com/Ascend910": "8",
  "huawei.com/Ascend310P": "1"
}

具体的 key 和 value 取决于芯片型号、device plugin 版本以及卡数量。910 系列节点(包括 910B 节点)可能会报告 huawei.com/Ascend910。请使用目标节点可分配资源中实际出现的资源 key。

验证 driver 就绪状态

检查 driver DaemonSet 是否已在 NPU 节点上就绪:

kubectl -n npu-operator get pods -l app=npu-driver-daemonset -o wide

当启用 runtime driver tree 模式时,driver Pod 会在主机上的 /run/ascend/.ready/driver-ready 写入就绪门,并从 /run/ascend/driver 暴露 runtime driver tree。

NOTE

对于 Ascend 910B,由于芯片 PHY 启动速度慢于 310P,节点重启后 driver 初始化可能需要几分钟。请等待 driver Pod 变为 Ready 后,再检查工作负载注入。

验证 RuntimeClass 集成

检查目标业务集群上的 RuntimeClass 和 runtime 集成 DaemonSet:

kubectl get runtimeclass ascend
kubectl -n npu-operator get ds ascend-runtime-containerd
kubectl -n npu-operator logs ds/ascend-runtime-containerd -c prepare-config --tail=100
kubectl -n npu-operator logs ds/ascend-runtime-containerd -c inject --tail=100

RuntimeClass 的名称和 handler 都应为 ascend。在 v26.6.0 中,请保留交付的 operator.runtimeClass 值为 ascend,以便其与 runtime 集成 DaemonSet 注册的 containerd handler 匹配。该 DaemonSet 会安装 ascend-docker-runtime 负载,并维护相应的 containerd handler 配置。在预编译 driver 模式下,主机侧 runtime Driver tree 暂存于 /run/ascend/driver。在预安装 Driver 和普通 OS managed install 模式下,runtime 使用 /usr/local/Ascend/driver 下的 Host Driver。

验证工作负载

在 NPU 节点上运行一个小型工作负载镜像。请使用节点实际声明的资源 key。不同的 Ascend 资源池可能会报告不同的 huawei.com/Ascend* key,因此请先检查节点的可分配资源,而不是为每个集群硬编码一个 key。

如果你的集群是 air-gapped,或者启用了镜像白名单策略,请将镜像替换为内部镜像。

NOTE

在启用默认 admission webhook 的情况下,不要在此示例中添加 runtimeClassName。webhook 在检测到 Ascend 资源请求后会自动添加 runtimeClassName: ascend。如果 webhook 被禁用,请显式设置 runtimeClassName: ascend

apiVersion: v1
kind: Pod
metadata:
  name: npu-smoke
spec:
  restartPolicy: Never
  containers:
  - name: probe
    image: <your-npu-image>
    command: ["/bin/bash", "-lc"]
    args:
    - |
      set -euo pipefail
      echo "=== devices ==="
      ls -la /dev/davinci* /dev/davinci_manager /dev/devmm_svm /dev/hisi_hdc 2>/dev/null
      echo "=== Ascend runtime paths ==="
      grep -E '/usr/local/(bin/npu-smi|Ascend/driver)' /proc/mounts || true
      echo "=== npu-smi ==="
      /usr/local/bin/npu-smi info
    resources:
      limits:
        <huawei.com/Ascend-resource-key>: 1

应用 YAML,然后检查日志:

kubectl get pod npu-smoke -o jsonpath='{.spec.runtimeClassName}{"\n"}'
kubectl logs npu-smoke

被准入的 Pod 应使用 ascend RuntimeClass。随后它应达到 Completed,列出 /dev/davinci*,并输出 NPU 状态。npu-smi 可在工作负载中的 /usr/local/bin/npu-smi 处使用,Driver 库挂载在 /usr/local/Ascend/... 下。在预编译 Driver 模式下,runtime Driver tree 的主机侧源路径为 /run/ascend/driver

验证监控

如果启用了 NPU Exporter 且 monitoring 命名空间存在,operator 会在该命名空间中创建其 ServiceMonitor

kubectl -n monitoring get servicemonitor npu-exporter-servicemonitor

使用 ACP 监控页面管理监控面板。有关监控面板操作,请参见 管理监控面板