Run different driver versions on separate nodes¶
Assign driver versions to nodes with one of the following configurations:
- ATOM™ + Rebel100™: Install a different driver version for each family.
- Two Rebel100™ nodes: Use
nodeSelectorto assign a different driver version to each node.
If the Operator is not installed, follow Installing the NPU Operator.
1. Update the Helm values¶
Export the current release's user settings to npu-values.yaml.
Choose one of the two examples and merge its driver settings into npu-values.yaml. Replace any existing driver.instances entries with those from the selected example, and retain the remaining settings.
Install 3.4.1 on the ATOM™ node and 3.5.1 on the Rebel100™ node. Select each family with its label in nodeSelector.
Label the two nodes of the same family with different driver-group values. Replace <REBEL100_NODE_1> and <REBEL100_NODE_2> with the names of two different Rebel100™ nodes.
The stable node inherits 3.5.0 from the shared settings. The canary node uses the instance override, 3.5.1. Each nodeSelector matches both the family and group labels.
| npu-values.yaml | |
|---|---|
With driver.deployDefault: false, drivers are installed only on nodes selected by an instance. Include every NPU node that needs a driver in one of the instances. Values omitted from an instance, such as the registry and image pull secrets, are inherited from the shared driver settings.
2. Apply the Helm values¶
Apply the updated values file using the currently installed chart version.
Wait for the RBLNDriver instances and the RBLNClusterPolicy instance to become ready.
3. Check each node's RBLNDriver instance¶
Each entry in driver.instances creates a resource named rbln-driver-<instance-name>. Check the driver versions and each node's rebellions.ai/npu.driver.owner label. The example output uses one node per instance; node names and counts depend on your environment.
$ kubectl get rblndriver \
-o 'custom-columns=NAME:.metadata.name,VERSION:.spec.version,STATE:.status.state,READY:.status.readyNodes,DESIRED:.status.desiredNodes'
NAME VERSION STATE READY DESIRED
rbln-driver-atom 3.4.1 ready 1 1
rbln-driver-rebel100 3.5.1 ready 1 1
$ kubectl get nodes -l rebellions.ai/npu.present=true \
-o 'custom-columns=NAME:.metadata.name,DRIVER:.metadata.labels.rebellions\.ai/npu\.driver\.owner'
NAME DRIVER
node-atom rbln-driver-atom
node-rebel100 rbln-driver-rebel100
$ kubectl get rblndriver \
-o 'custom-columns=NAME:.metadata.name,VERSION:.spec.version,STATE:.status.state,READY:.status.readyNodes,DESIRED:.status.desiredNodes'
NAME VERSION STATE READY DESIRED
rbln-driver-rebel100-canary 3.5.1 ready 1 1
rbln-driver-rebel100-stable 3.5.0 ready 1 1
$ kubectl get nodes -l rebellions.ai/npu.present=true \
-o 'custom-columns=NAME:.metadata.name,DRIVER:.metadata.labels.rebellions\.ai/npu\.driver\.owner'
NAME DRIVER
node-rebel100-a rbln-driver-rebel100-stable
node-rebel100-b rbln-driver-rebel100-canary
Confirm that each node's DRIVER matches the selected instance and both instances are ready.