RDS Support¶
RDS (Rebellions Direct Storage) lets Rebel100™ NPUs access a node's NVMe directly. See the RDS tutorial for device checks inside a Pod.
Requirements¶
| Item | Requirement |
|---|---|
| Hardware | Rebel100™ nodes and NVMe devices dedicated to RDS |
| Driver | RDS-capable image and an Operator-managed RBLNDriver |
| Container Toolkit | v0.2.3 or later and a CDI-enabled runtime |
| Allocation plugin | Device Plugin v0.5.0 or DRA Kubelet Plugin v0.2.1 |
| DRA configuration | Kubernetes 1.34 or later |
Check the RDS configuration fields in the cluster's CRD.
NVMe Selection¶
NVMe Data Loss
RDS takes control of the selected NVMe devices. Select only devices dedicated to RDS, with no operating system or data you need to retain.
RDS pools require both rds.enabled: true and the node label rebellions.ai/rds.present=true. An administrator sets this label; it does not indicate device readiness.
| Helm value | Description | Default |
|---|---|---|
rds.enabled | Enable RDS binding on labeled nodes | false |
rds.deviceSelection | NVMe allowlist per node | unset |
rds.deviceSelection[].nodeName | Required. Target node's metadata.name | unset |
rds.deviceSelection[].targetBDFs | Required. At least one NVMe PCI address, such as 0000:08:00.0 | unset |
On RDS-enabled nodes omitted from deviceSelection, the binding script automatically binds NVMe devices to RDS, excluding protected devices such as OS disks. To use only specific devices, set targetBDFs for each target node.
Configuration¶
The following Helm values enable RDS. Adjust them for your environment, add them to npu-values.yaml, and apply the configuration.
After deploying the NPU Operator with the RDS configuration, label the target node.
$ kubectl get node node-rebel100 \
-o 'custom-columns=NAME:.metadata.name,RDS:.metadata.labels.rebellions\.ai/rds\.present'
NAME RDS
node-rebel100 true
Once the RBLNClusterPolicy instance and the affected RBLNDriver instance report ready, follow the RDS tutorial.
With RDS enabled for the node, the driver container loads rblnfs and binds the selected NVMe devices during startup.
Container Integration¶
The RDS driver exposes bound NVMe devices as /dev/rblnfs* device files. The RBLN Container Toolkit creates their CDI configuration, and the NPU allocation plugin makes the RDS devices available to containers in Pods that request NPUs.
| Allocation plugin | RDS integration |
|---|---|
| Device Plugin | Adds the rebellions.ai/rds=all CDI device if /dev/rblnfs* exists when allocating an NPU |
| DRA Kubelet Plugin | Adds device nodes from the RDS CDI configuration to the NPU Claim's CDI configuration |
Changing or Disabling RDS¶
Stop the affected node's NPU and RDS workloads before changing the configuration.
| Scope | Setting |
|---|---|
| Disable globally | Set rds.enabled to false in values and apply |
| Exclude one node | Remove its label with the following command |
Disabling RDS does not recover data overwritten by RDS workloads. Before reusing the NVMe as ordinary storage, verify that it is bound to the Linux NVMe driver.