Kubernetes DRA driver for exclusive, topology-aware CPU allocation for high-performance workloads
See the codedra-driver-cpu is a Kubernetes Dynamic Resource Allocation (DRA) driver that assigns exclusive CPUs
to workloads through ResourceClaims.
This driver provides an alternative to the CPUManager functionality implemented in the kubelet, offering additional benefits such as advanced topology selection through the rich DRA API and alignment with other DRA-managed resources (like GPUs and high-speed NICs).
The recommended way to install the driver is via the provided Helm chart:
helm install dra-driver-cpu oci://registry.k8s.io/dra-driver-cpu/charts/dra-driver-cpu -n kube-system
[!IMPORTANT]
- Your cluster's container runtime must support NRI and CDI — see Compatibility.
- The kubelet's CPUManager and this DRA driver are mutually incompatible, and only one can be enabled at a time on any given node — see Configuration for how to disable the CPUManager.
The Quickstart walks through installing the driver and running a pod on exclusive CPUs, with a verification step after each stage. See the Helm chart README for the full list of configuration options, and Installation for compatibility, upgrade, and uninstall details.
ResourceClaim are pinned to exclusive, guaranteed CPUs enforced through CDI and NRI.grouped mode exposes NUMA node, socket, or machine aggregates as consumable capacity. The driver also implements an individual mode which is now deprecated; see Migrating from individual mode.PreferAlignByUnCoreCache, StrictCPUReservation) - see Feature Support for the full comparison.Each workload requests its own exclusive CPUs through a ResourceClaim. A CEL selector
constrains where the CPUs come from — for example, a specific NUMA node or socket — and the
selection can be made per workload.
Example: a claim to request CPUs on socket 0.
Allocation:
The CEL selector only picks socket 0; the driver keeps the allocation as tight as possible, within
a single NUMA node and packed into as few L3 caches as the free CPUs allow. To also pin to a specific NUMA
node, a second selector on resource.kubernetes.io/numaNode can be used alongside the socket one.
To keep scheduler accounting correct, either:
publishNodeAllocatableResourceMapping option (Kubernetes 1.37+ with the
DRANodeAllocatableResources feature gate), orcpu requests and limits, as shown above.See Workload Configuration Requirements for details.
CPUs are allocated through the same DRA machinery as GPUs (e.g. the NVIDIA GPU DRA driver) and NICs (e.g. DraNet), so one claim can keep them on the same NUMA node or PCIe root. This helps avoid the extra latency and bandwidth contention of cross-socket traffic:
Example: one claim for CPUs, a GPU and a NIC that must share a PCIe root.
Allocation:
The driver runs as a single executable, deployed as a DaemonSet on every node.
See How it Works for the detailed architecture.
If you run into problems, run the dracpu gatherinfo diagnostic tool and attach its output
when filing an issue — it collects the CPU topology and driver configuration needed to diagnose most problems quickly.
install.yaml.individual mode.ResourceSlice output in each mode.dracpu gatherinfo diagnostic tool.Learn how to engage with the Kubernetes community on the community page. Participation in the Kubernetes community is governed by the Kubernetes Code of Conduct.
You can reach the maintainers of this project at:
Latest release
Releases this year
227 followers · starred Apr 2026
835 followers · starred Nov 2025
244 followers · starred Nov 2025
323 followers · starred Feb 2026
Kubernetes DRA driver for exclusive, topology-aware CPU allocation for high-performance workloads
See the codedra-driver-cpu is a Kubernetes Dynamic Resource Allocation (DRA) driver that assigns exclusive CPUs
to workloads through ResourceClaims.
This driver provides an alternative to the CPUManager functionality implemented in the kubelet, offering additional benefits such as advanced topology selection through the rich DRA API and alignment with other DRA-managed resources (like GPUs and high-speed NICs).
The recommended way to install the driver is via the provided Helm chart:
helm install dra-driver-cpu oci://registry.k8s.io/dra-driver-cpu/charts/dra-driver-cpu -n kube-system
[!IMPORTANT]
- Your cluster's container runtime must support NRI and CDI — see Compatibility.
- The kubelet's CPUManager and this DRA driver are mutually incompatible, and only one can be enabled at a time on any given node — see Configuration for how to disable the CPUManager.
The Quickstart walks through installing the driver and running a pod on exclusive CPUs, with a verification step after each stage. See the Helm chart README for the full list of configuration options, and Installation for compatibility, upgrade, and uninstall details.
ResourceClaim are pinned to exclusive, guaranteed CPUs enforced through CDI and NRI.grouped mode exposes NUMA node, socket, or machine aggregates as consumable capacity. The driver also implements an individual mode which is now deprecated; see Migrating from individual mode.PreferAlignByUnCoreCache, StrictCPUReservation) - see Feature Support for the full comparison.Each workload requests its own exclusive CPUs through a ResourceClaim. A CEL selector
constrains where the CPUs come from — for example, a specific NUMA node or socket — and the
selection can be made per workload.
Example: a claim to request CPUs on socket 0.
Allocation:
The CEL selector only picks socket 0; the driver keeps the allocation as tight as possible, within
a single NUMA node and packed into as few L3 caches as the free CPUs allow. To also pin to a specific NUMA
node, a second selector on resource.kubernetes.io/numaNode can be used alongside the socket one.
To keep scheduler accounting correct, either:
publishNodeAllocatableResourceMapping option (Kubernetes 1.37+ with the
DRANodeAllocatableResources feature gate), orcpu requests and limits, as shown above.See Workload Configuration Requirements for details.
CPUs are allocated through the same DRA machinery as GPUs (e.g. the NVIDIA GPU DRA driver) and NICs (e.g. DraNet), so one claim can keep them on the same NUMA node or PCIe root. This helps avoid the extra latency and bandwidth contention of cross-socket traffic:
Example: one claim for CPUs, a GPU and a NIC that must share a PCIe root.
Allocation:
The driver runs as a single executable, deployed as a DaemonSet on every node.
See How it Works for the detailed architecture.
If you run into problems, run the dracpu gatherinfo diagnostic tool and attach its output
when filing an issue — it collects the CPU topology and driver configuration needed to diagnose most problems quickly.
install.yaml.individual mode.ResourceSlice output in each mode.dracpu gatherinfo diagnostic tool.Learn how to engage with the Kubernetes community on the community page. Participation in the Kubernetes community is governed by the Kubernetes Code of Conduct.
You can reach the maintainers of this project at:
Latest release
Releases this year
227 followers · starred Apr 2026
835 followers · starred Nov 2025
244 followers · starred Nov 2025
323 followers · starred Feb 2026