Installing Furiosa DRA Driver#
Note
Furiosa DRA Driver is in alpha stage, which means its features are experimental and may change in future releases.
Users should be aware that the driver may not be fully stable or feature-complete, and they should exercise caution when deploying it in production environments.
Furiosa DRA Driver#
The Furiosa DRA Driver implements the Kubernetes DRA interface for FuriosaAI NPU devices, and its features are as follows:
Discovering the FuriosaAI NPU devices and registering to a Kubernetes cluster as DRA resources.
Tracking the health of the devices and reporting to a Kubernetes cluster.
Running AI workload on the top of the Furiosa NPU devices within a Kubernetes cluster.
Prerequisites#
The Furiosa DRA Driver requires the following prerequisites:
Kubernetes 1.34+ is required.
In this case, CDI must be enabled on each node.
Starting from containerd 2.0, CDI is enabled by default.
Deploying Furiosa DRA Driver with Helm#
The Furiosa DRA Driver Helm chart is available at furiosa-ai/helm-charts.
To configure deployment as you need, you can modify
charts/furiosa-dra-driver/values.yaml.
You can deploy the Furiosa DRA Driver by running the following commands:
helm repo add furiosa https://furiosa-ai.github.io/helm-charts
helm repo update
helm install furiosa-dra-driver furiosa/furiosa-dra-driver -n furiosa-system
When DRA Driver is successfully deployed, you can see the registered FuriosaAI NPU resources by running the following command:
kubectl get resourceslices
- apiVersion: resource.k8s.io/v1
kind: ResourceSlice
metadata:
creationTimestamp: "2026-01-12T02:57:12Z"
generateName: cntk002-npu.furiosa.ai-
generation: 1
name: cntk002-npu.furiosa.ai-stczm
ownerReferences:
- apiVersion: v1
controller: true
kind: Node
name: cntk002
uid: 0a0a5366-cb39-4e8d-9aae-56a885709887
resourceVersion: "8934931"
uid: 8909a748-d798-4e98-b738-5c08d771e011
spec:
devices:
- attributes:
arch:
string: rngd
driverVersion:
version: 2025.4.0-dev2+0e9e56a
index:
int: 0
numaNode:
int: 0
resource.kubernetes.io/pciBusID:
string: "0000:17:00.0"
resource.kubernetes.io/pcieRoot:
string: "pci0000:16"
uuid:
string: 09512C86-0709-4404-8943-414B404A4F44
capacity:
core:
value: "8"
memory:
value: 48Gi
name: npu0
- attributes:
arch:
string: rngd
driverVersion:
version: 2025.4.0-dev2+0e9e56a
index:
int: 1
numaNode:
int: 0
resource.kubernetes.io/pciBusID:
string: "0000:43:00.0"
resource.kubernetes.io/pcieRoot:
string: "pci0000:42"
uuid:
string: B65D0C77-7333-4D90-AC82-3E22EE5F88EE
capacity:
core:
value: "8"
memory:
value: 48Gi
name: npu1
driver: npu.furiosa.ai
nodeName: cntk002
pool:
generation: 1
name: cntk002
resourceSliceCount: 1
Available attributes#
Below table lists available attributes for FuriosaAI NPU devices.
You need to attach npu.furiosa.ai at the front of each attribute key when you use them in ResourceClaimTemplate.
The only exceptions are
resource.kubernetes.io/pcieRootandresource.kubernetes.io/pciBusID, which are standard attributes defined by Kubernetes.
Attribute |
Type |
Description |
|---|---|---|
|
int |
The index of the NPU device |
|
string |
The UUID of the NPU device |
|
string |
The architecture of the NPU device |
|
string |
The driver version represented in semver |
|
int |
The NUMA node value that NPU device belongs to |
|
string |
The PCIe bus ID of the NPU device |
|
string |
The pcieRoot value of the NPU device |
Example Usage#
Request single NPU#
Below example shows how to request single FuriosaAI NPU in a Pod spec with ResourceClaimTemplate.
First, create a ResourceClaimTemplate that defines a request for a single NPU device.
Then, create a Pod that references the template to claim the NPU resource.
apiVersion: resource.k8s.io/v1
kind: ResourceClaimTemplate
metadata:
name: single-npu
spec:
spec:
devices:
requests:
- name: npu
exactly:
count: 1
deviceClassName: npu.furiosa.ai
apiVersion: v1
kind: Pod
metadata:
name: furiosa-llm
spec:
containers:
- name: furiosa-llm
image: furiosaai/furiosa-llm:latest
command:
- sleep
- "86400"
env:
- name: HF_TOKEN
valueFrom:
secretKeyRef:
key: token
name: hf-token-secret
resources:
claims:
- name: npu
resourceClaims:
- name: npu
resourceClaimTemplateName: single-npu
---
apiVersion: v1
kind: Secret
metadata:
name: hf-token-secret
type: Opaque
data:
token: <your_base64_encoded_hf_token>
Request quad NPU on same NUMA node#
Similar to the previous example, below example shows how to request four FuriosaAI NPUs that are located on the same NUMA node in a Pod spec.
First, create a ResourceClaimTemplate that defines a request for four FuriosaAI NPUs on the same NUMA node.
Then, create a Pod that references the template to claim the NPU resource.
apiVersion: resource.k8s.io/v1
kind: ResourceClaimTemplate
metadata:
name: quad-npu-with-same-numa-node
spec:
spec:
devices:
constraints:
- matchAttribute: npu.furiosa.ai/numaNode
requests:
- name: npu
exactly:
count: 4
deviceClassName: npu.furiosa.ai
apiVersion: v1
kind: Pod
metadata:
name: furiosa-llm
spec:
containers:
- name: furiosa-llm
image: furiosaai/furiosa-llm:latest
command:
- sleep
- "86400"
env:
- name: HF_TOKEN
valueFrom:
secretKeyRef:
key: token
name: hf-token-secret
resources:
claims:
- name: npu
resourceClaims:
- name: npu
resourceClaimTemplateName: quad-npu-with-same-numa-node
---
apiVersion: v1
kind: Secret
metadata:
name: hf-token-secret
type: Opaque
data:
token: <your_base64_encoded_hf_token>