Helm Installation
Prerequisites
- NVIDIA GPU Operator installed with DCGM HostEngine enabled.
- NVIDIA Datacenter Driver major version
510or newer on the cluster nodes. - DCGM HostEngine
4.2.3or newer. - A DCGM service endpoint reachable from the cluster (defaults to
nvidia-dcgm.gpu-operator.svc:5555). - Access to GitHub Container Registry (
ghcr.io) from your cluster/network.
Set shared variables once for the examples below:
Create namespace
Create enrollment secret
If you need to enroll nodes, create the token Secret. The secret name should match the ENROLL_TOKEN_SECRET_NAME variable set above:
Install or upgrade
Install:
Install (no enrollment):
Upgrade:
Optional: include node metadata during automatic enrollment:
Notes:
- Omit
enroll.nodeGroup/enroll.computeZonekeys to omit the flags and preserve existing stored values. - Set either value to an empty string to clear it (for example:
--set-string enroll.nodeGroup="").
Upgrade (no enrollment):
Upgrade and explicitly remove persisted enrollment metadata:
enroll.enabled and enroll.unenroll are mutually exclusive. Setting both to true causes Helm template rendering to fail.
To use a different image registry/repository, add:
If DCGM is exposed at a different service name or port, set env.DCGM_URL:
Verifying deployment
After installation, verify the agent is running correctly:
Check a specific pod in detail:
Troubleshooting
Pods not starting:
Common issues:
- ImagePullBackOff: Verify nodes can reach
ghcr.ioand the image tag exists - Pending: Check node labels match
nodeSelector(default:nvidia.com/gpu.deploy.dcgm=true) - CrashLoopBackOff: Check logs for errors
Enrollment failures:
DCGM connection issues:
If DCGM is at a different location, update the URL:
Node Scheduling
By default, the agent only deploys to nodes where DCGM is running, using the nodeSelector:
The agent requires a DCGM HostEngine to collect GPU metrics, so it must co-locate with DCGM. This label is automatically set by the NVIDIA GPU Operator when DCGM is enabled — no manual labeling is required.
If you need a different node selector or tolerations for GPU taints, you can override them. The examples below use a generic label to illustrate the override syntax — replace it with the actual label used in your cluster.
Using --set (quote the tolerations for zsh, and escape dots in the label key):
Using a values file: