Troubleshooting#
This guide provides steps to diagnose and resolve common issues with the AMD GPU Operator.
Checking Operator Status#
To check the status of the AMD GPU Operator:
kubectl get pods -n kube-amd-gpu
Collecting Logs#
To collect logs from the AMD GPU Operator:
kubectl logs -n kube-amd-gpu <pod-name>
Potential Issues with DeviceConfig#
Please refer to Typical Deployment Scenarios for more information and get corresponding
helm installcommands and configs that fits your specific use case.If operand pods (e.g. device plugin, metrics exporter) are stuck in
Init:0/1state, it means your GPU worker doesn’t have GPU driver loaded or driver was not loaded properly.If you try to use inbox or pre-installed driver please check the node
dmesgto see why the driver was not loaded properly.If you want to deploy out-of-tree driver, we suggest check the Driver Installation Guide then modify the default
DeviceConfigto ask Operator to install the out-of-tree GPU driver for your worker nodes.
kubectl edit deviceconfigs -n kube-amd-gpu default
Verify that the DeviceConfig has been applied successfully across all nodes by checking its status. Any configuration issues (such as field validation errors) will be reported in the status section with the
OperatorReadycondition set toFalse. Use the following command to view the status:
kubectl get deviceconfigs -n kube-amd-gpu default -o yaml
status:
conditions:
- lastTransitionTime: "2026-03-10T09:56:53Z"
message: ""
reason: OperatorReady
status: "True"
type: Ready
devicePlugin:
availableNumber: 1
desiredNumber: 1
nodesMatchingSelectorNumber: 1
metricsExporter:
availableNumber: 1
desiredNumber: 1
nodesMatchingSelectorNumber: 1
observedGeneration: 1
Debugging Driver Installation#
If the AMD GPU driver build fails:
Check the status of the build pod:
kubectl get pods -n kube-amd-gpu
View the build pod logs:
kubectl logs -n kube-amd-gpu <build-pod-name>
Check events for more information:
kubectl get events -n kube-amd-gpu
Helm Uninstall Hangs or Times Out#
If helm uninstall hangs and eventually times out with an error like:
Error: 1 error occurred:
* timed out waiting for the condition
This is caused by the pre-delete hook Job that runs before uninstall. The hook uses the same operator manager image specified during helm install. If that image does not exist or cannot be pulled (e.g., due to a typo in the image repository or tag), the hook Job will be stuck in ImagePullBackOff and the uninstall will never complete.
To work around this, run uninstall with --no-hooks to skip the pre-delete hook:
helm uninstall -n kube-amd-gpu amd-gpu-operator --no-hooks
Note
The pre-delete hook is responsible for cleaning up DeviceConfig custom resources. When using --no-hooks, you may need to manually delete any remaining DeviceConfig resources. See the next section for details.
DeviceConfig Stuck in Terminating State#
When the operator is not running (e.g., after helm uninstall --no-hooks, or if the operator pod was deleted), deleting a DeviceConfig CR will hang indefinitely:
# This will hang because the finalizer cannot be removed
kubectl delete deviceconfigs.amd.com --all -A
The operator adds a finalizer (amd.node.kubernetes.io/deviceconfig-finalizer) to every DeviceConfig resource. During normal deletion the operator’s controller removes this finalizer after cleaning up owned resources (DaemonSets, KMM Modules, node labels, etc.). If the operator is not running, nothing removes the finalizer and the resource is stuck in Terminating.
To resolve this, patch the resource to remove the finalizer manually:
kubectl patch deviceconfig <name> -n kube-amd-gpu --type=json \
-p '[{"op": "remove", "path": "/metadata/finalizers"}]'
Or, to remove the finalizer from all DeviceConfig resources at once:
kubectl get deviceconfigs.amd.com -A -o name | \
xargs -I{} kubectl patch {} -n kube-amd-gpu --type=json \
-p '[{"op": "remove", "path": "/metadata/finalizers"}]'
Warning
Removing the finalizer skips the operator’s cleanup logic. Resources that were managed by the operator (DaemonSets, Services, KMM Modules, node labels) will not be automatically deleted. After removing the finalizer, verify that no orphaned resources remain:
kubectl get daemonsets -n kube-amd-gpu
kubectl get modules -n kube-amd-gpu
Using Techsupport-dump Tool#
The techsupport-dump script can be used to collect system state and logs for debugging:
./tools/techsupport_dump.sh [-w] [-o yaml/json] [-k kubeconfig] <node-name/all>
Options:
-w: wide option-o yaml/json: output format (default: json)-k kubeconfig: path to kubeconfig (default: ~/.kube/config)
Please file an issue with collected techsupport bundle on our GitHub Issues page