Skip to content

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.

kubectl explain rblnclusterpolicy.spec.rds

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.

rds:
  enabled: true
  deviceSelection:
    - nodeName: node-rebel100
      targetBDFs:
        - "0000:08:00.0"
driver:
  enabled: true
  image:
    tag: "<RDS_DRIVER_VERSION>"
containerToolkit:
  enabled: true

After deploying the NPU Operator with the RDS configuration, label the target node.

kubectl label node node-rebel100 rebellions.ai/rds.present=true --overwrite
$ 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
kubectl label node node-rebel100 rebellions.ai/rds.present-

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.