Uninstall

Uninstalling Alauda Build of NPU Operator removes the product-managed controller and NPU components. It does not automatically make existing workloads portable to non-NPU nodes.

Commands on this page use the default Operator namespace npu-operator. If the Operator was installed in another namespace, replace npu-operator with that namespace.

Before you uninstall

  1. Stop or move workloads that request NPU resources such as huawei.com/Ascend910, huawei.com/Ascend310P, or another huawei.com/Ascend* key reported by the installed device plugin.
  2. Record the current NPUOperatorCtl YAML.
  3. Check whether the host driver is managed by the operator or installed out of band.
  4. Check whether ACP quota metadata or dashboards should be kept for a later reinstall.

Uninstall flow

  1. Delete the NPUOperatorCtl instance.
  2. Wait for product-managed DaemonSets and pods to be removed.
  3. Uninstall Alauda Build of NPU Operator from OperatorHub.
  4. Remove NPU-specific node labels only after confirming no other product relies on them.
  5. Remove product-specific dashboards or alerts if they are no longer used.

Driver cleanup

When the operator-managed driver pod is removed, kernel modules already loaded on the host may remain loaded until the node reboots. To fully clear driver state from a host, plan a node reboot after uninstall.

Do not remove vendor driver files or firmware manually unless your operations plan explicitly owns that driver lifecycle.

Verify uninstall

kubectl -n npu-operator get pods
kubectl -n kube-system get daemonset ascend-device-plugin --ignore-not-found
kubectl -n npu-exporter get daemonset npu-exporter --ignore-not-found
kubectl -n monitoring get servicemonitor npu-exporter-servicemonitor --ignore-not-found
kubectl -n mindx-dl get deployment ascend-operator-manager clusterd resilience-controller --ignore-not-found
kubectl -n mindx-dl get daemonset noded --ignore-not-found
kubectl -n default get daemonset mindio-tft mindio-acp --ignore-not-found
kubectl get node ${nodeName} -o jsonpath='{.status.allocatable}'

The product workloads should be gone from all component namespaces. NPU allocatable resources should disappear after the Device Plugin is removed and kubelet reports updated node status.