Kubernetes
Kubernetes 1.34 DRA solves GPU scheduling complexity without manual workarounds
Kubernetes' new Dynamic Resource Allocation feature lets teams express precise GPU requirements in code, replacing custom scripts and inflexible node labels.
The New Stack
Platform teams managing shared GPU clusters have long struggled with a fundamental problem: Kubernetes treats every accelerator as interchangeable. A training job requesting a single GPU unit has no way to specify whether it needs a 192GB B200 or an 80GB H100, often resulting in out-of-memory failures and wasted hardware.
Many teams have resorted to brittle workarounds—hundreds of lines of automation scripts running every half hour to reconfigure GPU partitions, reschedule failed workloads, and send alerts when things go wrong. Others hardcode node selectors into every workload manifest and maintain separate configurations for each GPU generation.
With the arrival of Kubernetes 1.34, this pain point has a native solution: Dynamic Resource Allocation (DRA).
How the old approach broke down#
The traditional Kubernetes GPU model relied on node labels, taints, and separate node pools for each hardware type. Every workload manifest had to bake in hardware assumptions, meaning adding a new GPU generation required updating dozens of Helm charts and job definitions across the organization.
GPU partitioning through Multi-Instance GPU (MIG) made the problem worse. MIG lets a single card run multiple smaller, isolated workloads—but Kubernetes treated each partition size as a rigid, separate resource type. When small slices were exhausted, pending jobs would wait indefinitely while larger unallocated slices sat unused.
DRA's structured approach#
DRA changes the scheduling model by allowing drivers to publish detailed device attributes. Rather than requesting a generic resource, workloads now express intent using Common Expression Language (CEL) to specify:
- GPU model and minimum memory (e.g., "H100 or better with 40GB+")
- Flexible fallback profiles (e.g., "try a small MIG slice, then medium, then a full GPU")
- Topology requirements (e.g., "four GPUs connected via NVLink")
A training job can now declare its actual requirements in code, letting the scheduler find the best available hardware. An inference deployment can express a preference order: "use a small partition if available, but fall back to larger sizes if needed." Distributed training can request GPUs guaranteed to be connected via high-speed fabric.
The practical benefit#
This architecture requires a single manifest per workload—no duplication for different hardware generations, no fragile node selectors scattered across dozens of configs. As GPU clusters become increasingly heterogeneous, mixing existing accelerators with new generations, the old one-integer model breaks down. DRA allows Kubernetes to finally match the nuanced resource landscape of production AI infrastructure.

