RBLN NPU DRA Driver¶
The RBLN NPU DRA Driver allocates RBLN NPUs through the Kubernetes Dynamic Resource Allocation (DRA) framework.
The Kubernetes Device Plugin exposes a fixed NPU resource count per node. DRA lets workloads request NPUs by product type, NUMA locality, PCIe topology, and other conditions. Kubernetes Resource API (resource.k8s.io) objects define the device inventory and selection criteria.
Follow Installing the NPU Operator and DRA configuration to deploy the driver. For the basic request and verification workflow, see Request NPUs with DRA. For requests by count, product name, PCIe topology, or UUID, see Specify NPU allocation conditions with DRA.
Prerequisites¶
- Kubernetes v1.34.0 or later
- RBLN NPU Operator installed with DRA mode enabled
- RBLN Container Toolkit enabled (CDI-based device injection)
Warning
The DRA Driver cannot be enabled together with the Device Plugin or the Sandbox Device Plugin. Enabling either plugin alongside the DRA Driver would cause two plugins to advertise the same NPUs. Before you disable the Device Plugin, migrate workloads that request NPUs through rebellions.ai/npu limits to ResourceClaim requests.
Core Resource Model¶
A DRA-based workload consists of four objects.
- DeviceClass: Defines the kind of device to use. Container workloads use
npu.rebellions.ai. For the VM passthrough classvfio-npu.rebellions.ai, see VM Passthrough with the NPU DRA Driver. - ResourceSlice: Exposes the devices on a node and their attributes.
- ResourceClaim: Declares the device count and conditions a Pod requests. With a
ResourceClaimTemplate, a claim is generated per Pod and deleted with it. Create aResourceClaimdirectly when several Pods share the same devices or the claim must outlive a Pod. - Pod: Consumes the
ResourceClaimthroughresources.claims.
One ResourceSlice is created per node, and POOL equals the node name. ResourceSlice objects are cluster-scoped, so no namespace flag is needed when querying them.
Inside the container, the allocated NPU's device file (/dev/rbln0) is accompanied by an RSD group device (/dev/rsd0). See RSD Groups for Multiple NPUs on the Device Plugin page.
NPU Properties (ResourceSlice Attributes)¶
A ResourceSlice is created per node, and devices are published under the node's device file names such as rbln0 and rbln1. Each device provides the following attributes. A CEL selector references a driver attribute as device.attributes["npu.rebellions.ai"].<name> and a standard attribute under its own domain, for example device.attributes["resource.kubernetes.io"].pcieRoot. The numaNode attributes are omitted when the device reports no NUMA affinity.
| Name | Type | Example Value | Description |
|---|---|---|---|
driverVersion | string | 3.5.1 | Installed NPU driver version |
firmwareVersion | string | 3.5.1 | Device firmware version |
pciDeviceID | string | 0x2130 | PCI device ID. VFIO devices publish it without the 0x prefix |
pciLinkSpeed | string | 32.0GT/s | PCIe link speed |
pciLinkWidth | string | 16 | PCIe link lane width |
productName | string | RBLN-CR13 | NPU product name |
sid | string | 0000000052631015 | Card/board identifier |
type | string | npu | Device type. npu for containers, vfio for VM passthrough |
uuid | string | 34428712-d887-840b-a7b9-1c9e05807fc3 | Unique device identifier. The UUID that rbln-smi -L prints without its NPU- prefix |
resource.kubernetes.io/numaNode | int | 0 | NUMA node connected to the device |
resource.kubernetes.io/pciBusID | string | 0000:fd:00.0 | PCI bus address |
resource.kubernetes.io/pcieRoot | string | pci0000:fc | PCIe root complex (pci<domain>:<bus>) |
dra.net/numaNode | int | 0 | Same value as resource.kubernetes.io/numaNode |
The device memory size is published separately, as capacity.memory (for example, 140Gi). A CEL expression references it as device.capacity["npu.rebellions.ai"].memory.