[Bug]: 26.3.3 to 26.7.1 upgrade deletes an existing NVIDIADriver DaemonSet before driver-owner labels are initialized
Maintainers usually reply within 1 day
@rahulait is already working on this.
Since Nov 1, 2026.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 14/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- go, helm, kubernetes
- Domain
- infrastructure
Research direction
Start with cleanupStaleDriverDaemonsets and getManifestObjects in internal/state/driver.go, then getNodePools in internal/state/nodepool.go, which filters nodes by the driver-owner label. The question is why an existing owned DaemonSet is deleted when zero nodes match before the node-labeling controller in controllers/nodelabeling_controller.go assigns owners. Done means a DaemonSet is kept while owner labels are still pending, with a test covering the zero-node case.
Written by the indexing model from the issue text.
Description
Important Note: NVIDIA AI Enterprise customers can get support from NVIDIA Enterprise support. Please open a case here.
Describe the bug
During a GPU Operator 26.3.3 → 26.7.1 upgrade, the new operator selected zero nodes for an existing NVIDIADriver and deleted its driver DaemonSet. The GPU node then acquired nvidia.com/gpu-operator.driver.owner=default, and the same DaemonSet name was recreated with a different UID.
The installation already used NVIDIADriver/default before the upgrade. Its UID remained unchanged, its selector was empty, and it used compiled driver containers on both versions. The node remained present with the same OS. The owner label was absent under 26.3.3.
The following events were captured on 2026-10-31; all times are UTC:
| Time | Observation |
|---|---|
| 21:52:45.514481300 | Operator: No nodes matching the given node selector, driver default. |
| 21:52:45.514501339 | Operator: Deleting DaemonSet no longer managed by this CR. |
| 21:52:45.531589 | Watch: driver DaemonSet deleted, UID 92c0d471-b956-458d-bee1-4d94250d0627. |
| 21:52:45.605381 | Watch: GPU node first has nvidia.com/gpu-operator.driver.owner=default. |
| 21:52:46.040006 | Watch: same DaemonSet name added, UID 5faf12fd-2982-45eb-98b2-3a320c8f9c9b. |
The DaemonSet name was nvidia-vgpu-driver-ubuntu24.04-86847f858c. Watch times are client receipt times; they are not API-server audit timestamps. The operator logs directly show that cleanup followed a zero-node match.
The source suggests a race between driver reconciliation and initial owner assignment:
getNodePoolsrequires the driver-owner label when selecting nodes.getManifestObjectsreturns an empty desired-object list when no nodes match.cleanupStaleDriverDaemonsetsdeletes the existing owned DaemonSet because its name is absent from that list.- The separate node-labeling controller assigns owners, allowing the driver DaemonSet to be recreated.
To Reproduce
This was reproduced with independently reconciled operator and driver resources. An isolated Helm-only reproduction has not been run. The observed procedure was:
- Install GPU Operator 26.3.3 with one A30 GPU worker and an existing
NVIDIADrivernameddefault. UsedriverType: vgpu,usePrecompiled: false, and an empty node selector. In this setup the GPU is exposed to the VM through PCI passthrough, while the driver resource uses the NVAIE guest-driver image. - Start one Mistral 7B model replica using vLLM. Verify inference and GPU allocation. Record the driver DaemonSet UID and confirm that the GPU node lacks
nvidia.com/gpu-operator.driver.owner. - Capture operator logs, driver logs, and watches for nodes,
NVIDIADriverresources, driver DaemonSets, and pods. - Request operator 26.7.1 and driver 580.173.02. The baseline driver was 580.178.04. Allow the driver resource update to proceed without waiting for operator reconciliation to finish.
- The driver update also changes a custom environment variable from
26.3.3to26.7.1; its name is anonymized asREDACTED_CUSTOM_ENV_1in the excerpts. Do not preassign the owner label or manually restart the driver. - Observe the new operator's zero-node match and cleanup message. Compare the DaemonSet UID before and after the owner label first appears.
The driver resource's final spec.default is false; its name default does not indicate default-driver semantics. spec.manager is absent. Selected before/after resource fields and exact image digests are provided in driver-resources.json.
The old operator had already deleted the model pod through the full upgrade flow before this ownership transition. Two old-driver shutdown attempts failed to unload modules; the replacement driver manager later succeeded. The process retaining module references was not identified.
Expected behavior
The operator should preserve an existing driver DaemonSet while it initializes the owner labels needed to select its GPU nodes. A temporary absence of that operator-managed label should not, by itself, classify the existing DaemonSet as stale.
Driver changes should proceed through the controlled upgrade flow once ownership is established. This expectation does not require uninterrupted inference from a single GPU workload replica.
Environment (please provide the following information):
- GPU Operator Version: 26.3.3 → 26.7.1.
- OS: Ubuntu 24.04.5 LTS, amd64.
- Kernel Version:
7.0.0-34-generic. - Container Runtime Version: containerd
2.2.7, FIPS build. - Kubernetes Distro and Version: Kubernetes
1.35.8; distribution name omitted.
- Dominant language
- Go
- Stars
- 2.9k
- Forks
- 587
- Avg merge
- 1d 22h
- Merged PRs (30d)
- 63
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from NVIDIA/gpu-operator
-
feature lifecycle/frozen needs-triage
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
NVIDIA/gpu-operator#3074 · 2 comments ·
Maintainers usually reply within 1 day
-
[Bug]: GPUCluster common name label breaks DRA validator selectorPossibly taken @ajavanma claimed this 40 days ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
NVIDIA/gpu-operator#2955 · 1 comment ·
Maintainers usually reply within 1 day
-
[Bug]: GPUCluster DRA kubelet plugin uses driver root / on Talos and cannot find libnvidia-ml.so.1Possibly taken @roma5087 claimed this 3 days ago. Open
Difficulty 4/5 3-5 days Newbie friendliness 52/100
NVIDIA/gpu-operator#3139 · 1 comment ·
Maintainers usually reply within 1 day
-
[Bug]: Helm chart always sets NVIDIADriver spec.manager.image, so a default driver-manager bump reinstalls the driver on every GPU nodePossibly taken @akshat-lakhera claimed this 4 days ago. Open
Difficulty 4/5 3-5 days Newbie friendliness 48/100
NVIDIA/gpu-operator#3135 · 1 comment ·
Maintainers usually reply within 1 day
-
[Bug]: a partially specified NVIDIADriver startupProbe renders zeros instead of operator defaultsPossibly taken @blacksoxx claimed this 5 days ago. Open
Difficulty 3/5 1-2 days Newbie friendliness 67/100
NVIDIA/gpu-operator#3132 ·
Maintainers usually reply within 1 day
All issues in NVIDIA/gpu-operator
Similar issues
-
date_time, url_encode, html_escape, to_unix_time, contains_all and contains_any panic when called without argumentsPossibly taken @antcybersec claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
projectdiscovery/dsl#372 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
JuliusBrussee/caveman#1449 ·
Maintainers usually reply within 1 day
-
bot-found bug priority: P3
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
madenvel/KalinkaPlayer#498 ·
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
clawsweeper:fix-shape-clear clawsweeper:needs-maintainer-review clawsweeper:needs-product-decision clawsweeper:no-new-fix-pr clawsweeper:source-repro impact:ux-friction issue-rating: 🦞 diamond lobster P2
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
openclaw/gogcli#1291 · 1 comment · 1 reaction ·
Maintainers usually reply within 1 day