[Bug]: a partially specified NVIDIADriver startupProbe renders zeros instead of operator defaults
维护者通常 1 天内回复
评估
调研方向
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.
由索引模型根据 Issue 内容生成。
描述
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.
- 主要语言
- Go
- 星标
- 2.9k
- 派生
- 587
- 平均合并
- 1 天 22 小时
- 30 天内合并 PR
- 63
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
NVIDIA/gpu-operator 的其他 Issue
-
feature lifecycle/frozen needs-triage
难度 2/5 1-3 小时 新手友好度 68/100
NVIDIA/gpu-operator#3074 · 2 条评论 ·
维护者通常 1 天内回复
-
[Bug]: GPUCluster common name label breaks DRA validator selector可能已有人在做 @ajavanma 于 40 天前认领。 未关闭
难度 2/5 1-3 小时 新手友好度 88/100
NVIDIA/gpu-operator#2955 · 1 条评论 ·
维护者通常 1 天内回复
-
[Bug]: 26.3.3 to 26.7.1 upgrade deletes an existing NVIDIADriver DaemonSet before driver-owner labels are initialized可能已有人在做 @rahulait 于 1 天前认领。 未关闭bug needs-triage
难度 4/5 3-5 天 新手友好度 14/100
NVIDIA/gpu-operator#3155 · 1 条评论 · 已指派 1 人 ·
维护者通常 1 天内回复
-
[Bug]: GPUCluster DRA kubelet plugin uses driver root / on Talos and cannot find libnvidia-ml.so.1可能已有人在做 @roma5087 于 4 天前认领。 未关闭
难度 4/5 3-5 天 新手友好度 52/100
NVIDIA/gpu-operator#3139 · 1 条评论 ·
维护者通常 1 天内回复
-
[Bug]: Helm chart always sets NVIDIADriver spec.manager.image, so a default driver-manager bump reinstalls the driver on every GPU node可能已有人在做 @akshat-lakhera 于 4 天前认领。 未关闭
难度 4/5 3-5 天 新手友好度 48/100
NVIDIA/gpu-operator#3135 · 1 条评论 ·
维护者通常 1 天内回复
查看 NVIDIA/gpu-operator 的全部 Issue
相似的 Issue
-
bug good first issue help wanted
难度 2/5 1-3 小时 新手友好度 70/100
-
[mesheryctl] design delete fails when passing file or URL as positional argument可能已有人在做 关联的 PR 仍在进行中或已合并。 未关闭component/mesheryctl kind/bug language/go
难度 2/5 1-3 小时 新手友好度 74/100
meshery/meshery#22772 · 3 条评论 ·
维护者通常 1 天内回复
-
backend security size:S
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 72/100
limitlessprojects/Go-Hybrid#3342 ·
维护者通常 1 天内回复
-
status/ready type/bug
难度 2/5 1-3 小时 新手友好度 65/100
buildpacks/pack#2733 ·
维护者通常 1 天内回复