From dc01045130ef4175a8fec3726cb637c6ff60f1ca Mon Sep 17 00:00:00 2001 From: Yuan Chen Date: Fri, 21 Aug 2026 15:19:27 -0700 Subject: [PATCH] docs: finish the DaemonSet casing pass and bump a stale aicrd tag MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Follow-up to the review on #2335, which flagged two non-blocking items that PR left behind. F1 — #2335 cased the "GPU DaemonSets" table header in cli-reference.md but left the same section's Note and bullet reading "GPU daemonsets", creating a within-section mismatch that was not there before. Both are now cased. Re-sweeping the file for the same class turned up two more prose instances in the DRA kubelet plugin section ("restarts the ... daemonset", "the daemonset restart"); those are fixed here too so the file does not need a third pass. Left lowercase deliberately: `--ignore-daemonsets` (a kubectl flag) and "CRD/namespace/daemonset create" (an RBAC resource-name list), where lowercase is correct. F2 — the rolling-update example in kubernetes-deployment.md pinned the server image to aicrd:v0.8.0, roughly eleven releases stale. #2335's version sweep matched `aicr:`/`aicr_`/`aicr@` and never matched `aicrd:`, so the server image slipped through. Bumped to v0.19.0. A broader re-sweep confirms this was the only stale aicrd tag in docs/. Untouched: the `aicrd:v1.0.0` placeholder in .github/actions/README.md (a parameter example, not a version claim) and the v0.8.12 SBOM sample in supply-chain-verification.md, which is one internally coherent captured attestation across five sites. Signed-off-by: Yuan Chen --- docs/integrator/kubernetes-deployment.md | 2 +- docs/user/cli-reference.md | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/integrator/kubernetes-deployment.md b/docs/integrator/kubernetes-deployment.md index feef946fc..ba1bd7612 100644 --- a/docs/integrator/kubernetes-deployment.md +++ b/docs/integrator/kubernetes-deployment.md @@ -609,7 +609,7 @@ as HTTP 429 responses with the `X-RateLimit-*` headers. ```shell # Update image kubectl set image deployment/aicrd \ - api-server=ghcr.io/nvidia/aicrd:v0.8.0 \ + api-server=ghcr.io/nvidia/aicrd:v0.19.0 \ -n aicr # Watch rollout diff --git a/docs/user/cli-reference.md b/docs/user/cli-reference.md index 0c1d6ef87..0611b7b3c 100644 --- a/docs/user/cli-reference.md +++ b/docs/user/cli-reference.md @@ -1526,7 +1526,7 @@ The `--accelerated-node-selector` and `--accelerated-node-toleration` flags cont NFD (Node Feature Discovery) workers must run on **all nodes** (GPU, CPU, and system) to detect hardware features. This matches the gpu-operator default behavior where NFD workers also run on control-plane nodes. The `--accelerated-node-selector` is intentionally not applied to NFD workers so they are not restricted to GPU nodes. -> **Note:** When no `--accelerated-node-toleration` is specified, a default toleration (`operator: Exists`) is applied to both GPU daemonsets and NFD workers, allowing them to run on nodes with any taint. +> **Note:** When no `--accelerated-node-toleration` is specified, a default toleration (`operator: Exists`) is applied to both GPU DaemonSets and NFD workers, allowing them to run on nodes with any taint. **Example:** @@ -1544,7 +1544,7 @@ aicr bundle --recipe recipe.yaml \ > **Cluster node requirements:** This example assumes the cluster has nodes labeled `nodeGroup=system-worker` with taints `dedicated=system-workload:NoSchedule,NoExecute` for system infrastructure, and GPU nodes labeled `nodeGroup=gpu-worker` with taints `dedicated=worker-workload:NoSchedule,NoExecute`. This results in: -- **GPU daemonsets** (driver, device-plugin, toolkit, dcgm): `nodeSelector=nodeGroup=gpu-worker` + tolerations for `dedicated=worker-workload` with both `NoSchedule` and `NoExecute` +- **GPU DaemonSets** (driver, device-plugin, toolkit, dcgm): `nodeSelector=nodeGroup=gpu-worker` + tolerations for `dedicated=worker-workload` with both `NoSchedule` and `NoExecute` - **NFD workers**: no nodeSelector (runs on all nodes) + tolerations for `dedicated=worker-workload` with both `NoSchedule` and `NoExecute` - **System components** (gpu-operator controller, NFD gc/master, dynamo grove, agentgateway proxy): `nodeSelector=nodeGroup=system-worker` + tolerations for `dedicated=system-workload` with both `NoSchedule` and `NoExecute` @@ -2629,9 +2629,9 @@ Components that use operator patterns with custom resources that reconcile async ##### DRA kubelet plugin registration -After installing `nvidia-dra-driver-gpu`, the script automatically restarts the DRA kubelet plugin daemonset. This is a best-effort mitigation for a known issue: after uninstall/reinstall, the kubelet's plugin watcher (`fsnotify`) may not detect new registration sockets, causing `DRA driver gpu.nvidia.com is not registered` errors. +After installing `nvidia-dra-driver-gpu`, the script automatically restarts the DRA kubelet plugin DaemonSet. This is a best-effort mitigation for a known issue: after uninstall/reinstall, the kubelet's plugin watcher (`fsnotify`) may not detect new registration sockets, causing `DRA driver gpu.nvidia.com is not registered` errors. -If DRA pods fail with this error after redeployment, the daemonset restart alone may not be sufficient — a **node reboot** is required to reset the kubelet's plugin registration state. To reboot GPU nodes: +If DRA pods fail with this error after redeployment, the DaemonSet restart alone may not be sufficient — a **node reboot** is required to reset the kubelet's plugin registration state. To reboot GPU nodes: ```bash # Cordon, drain, and reboot the affected node