[Bug]: a partially specified NVIDIADriver startupProbe renders zeros instead of operator defaults
Maintainers usually reply within 1 day
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 67/100
Research direction
Start in internal/state/driver.go at getDriverSpec and compare its startup probe handling with setContainerProbe in controllers/object_controls.go. Run the internal/state unit tests and inspect the rendered DaemonSet in manifests/state-driver/0500_daemonset.yaml. Done means a partially specified probe preserves user-set values and uses operator defaults for the remaining fields.
Written by the indexing model from the issue text.
Description
Describe the bug
When an NVIDIADriver CR sets spec.startupProbe but leaves some fields unset, the GPU Operator renders explicit zeros for those fields into the driver DaemonSet, so the driver startup window collapses to the generic Kubernetes probe defaults instead of the operator's intended values.
getDriverSpec (internal/state/driver.go) applies getDefaultStartupProbe only when spec.StartupProbe == nil:
if spec.StartupProbe == nil {
spec.StartupProbe = getDefaultStartupProbe(spec)
}
If the CR specifies the probe partially (for example startupProbe: {initialDelaySeconds: 120}), the unset fields stay zero, and manifests/state-driver/0500_daemonset.yaml renders failureThreshold: 0, periodSeconds: 0, timeoutSeconds: 0, successThreshold: 0. The API server then substitutes the generic defaults (failureThreshold 3, periodSeconds 10, timeoutSeconds 1) rather than the operator defaults (failureThreshold 120, timeoutSeconds 60). A driver that compiles for more than ~30s, or whose nvidia-smi probe takes longer than 1s, is then killed and restarted in a loop.
The ClusterPolicy path does not have this problem: setContainerProbe (controllers/object_controls.go) overlays only the non-zero user fields on top of the defaults. The two paths disagree.
To Reproduce
Apply an NVIDIADriver CR whose spec.startupProbe sets only initialDelaySeconds (any single field), and inspect the rendered driver DaemonSet: the other probe fields are 0.
Reproduced with a unit test over getDriverSpec: a CR with StartupProbe{InitialDelaySeconds: 120} yields failureThreshold 0 / periodSeconds 0 / timeoutSeconds 0 / successThreshold 0 instead of the operator defaults.
Expected behavior
A partially specified startupProbe keeps the fields the user set and falls back to the operator defaults for the rest, as the ClusterPolicy path already does.
Environment (please provide the following information):
- GPU Operator Version: present in v26.7.2 and on
main(internal/state/driver.gohas no overlay for a partial probe); reproduced onmain - OS: N/A for the reproduction (unit test, macOS arm64, Go 1.26)
- Kernel Version: N/A (not run on a cluster)
- Container Runtime Version: N/A (not run on a cluster)
- Kubernetes Distro and Version: N/A (not run on a cluster; reproduced with the
internal/stateunit tests)
A fix is in the linked PR.
- 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]: 26.3.3 to 26.7.1 upgrade deletes an existing NVIDIADriver DaemonSet before driver-owner labels are initializedPossibly taken @rahulait claimed this 1 day ago. Openbug needs-triage
Difficulty 4/5 3-5 days Newbie friendliness 14/100
NVIDIA/gpu-operator#3155 · 1 comment · 1 assignee ·
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 4 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
All issues in NVIDIA/gpu-operator
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
limitlessprojects/Go-Hybrid#3342 ·
Maintainers usually reply within 1 day
-
status/ready type/bug
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
buildpacks/pack#2733 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
-
kind/bug needs-priority needs-triage
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
konveyor/tackle2-hub#1166 · 1 comment ·
Maintainers usually reply within 4 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
router-for-me/CLIProxyAPI#7209 ·
Maintainers usually reply within 1 day