Services Case Studies Insights About Start a project →

Kubernetes Dynamic Resource Allocation goes GA: what it means for AI workloads.

Cloud Published August 11, 2026 9 min read

Why this matters right now

Kubernetes 1.34 shipped Dynamic Resource Allocation, DRA, as a stable, GA feature, and the timing is not incidental. Every team we talk to right now is running some mix of training jobs, inference services, and batch workloads on GPUs that were provisioned under the old integer-counting model, where a pod asks for nvidia.com/gpu: 1 and gets whatever the scheduler hands it, no matter how much of that GPU the job actually needs. That model was fine when GPUs were a minor line item. It is not fine anymore, with GPU capacity now the single largest infrastructure cost for most teams running models in production.

DRA has been in the Kubernetes project for several release cycles as an alpha and then beta feature, and cluster operators who needed GPU-aware scheduling built around its gaps with custom device plugins, node labels, and a fair amount of manual babysitting. Graduating to GA changes the calculus. The stable API, resource.k8s.io/v1, is now on by default, the object model is locked in for the long run, and cloud providers and hardware vendors have a stable target to build production-grade drivers against instead of chasing a moving alpha spec. That is the difference between "worth prototyping" and "worth putting in the platform roadmap."

How DRA actually changes device scheduling

The old device plugin model treats a GPU like a fungible integer. A pod requests a count, the kubelet hands out whichever device is free, and the pod has no way to express anything more specific than "give me one." There is no way to say a job needs at least 24GB of memory, a particular architecture, or a device that supports a specific compute capability. Teams worked around this with node labels, taints, and node selectors, which works until you have more than a handful of GPU types in the fleet and the YAML sprawl becomes its own maintenance burden.

DRA replaces that count-based model with attribute-based device selection. Workloads describe what they need through a ResourceClaim object, and the claim can use CEL, Common Expression Language, filters to express real constraints: a GPU with at least 20GB of memory, a specific product family, a driver capability, or a topology requirement relative to other devices in the pod. The scheduler resolves the claim against what is actually available in the cluster rather than a static label match decided at provisioning time.

What this looks like in practice

  • ResourceClaims replace hardcoded counts. Instead of a pod spec pinned to a device count, workloads declare requirements and let the scheduler resolve them against live device inventory.
  • Prioritized device lists give the scheduler fallback options. A claim can list an ideal device and acceptable alternatives, so a job that wants the newest GPU generation can still run on the previous generation if that is what is free, instead of sitting in a pending state.
  • Multiply allocatable devices enable real sharing. Where the driver supports it, more than one workload can be scheduled against the same physical device instead of a GPU sitting idle at 15 percent utilization because it is locked to a single container.
  • Drivers, not the core scheduler, own hardware specifics. DRA drivers run as DaemonSets and expose device attributes to the API, which means GPU vendors, and eventually FPGA and other accelerator vendors, can evolve hardware support without waiting on core Kubernetes release cycles.

The utilization problem DRA is built to fix

The business case here is straightforward and it is why we expect this feature to get adopted faster than most GA graduations in recent Kubernetes history. GPU idle time is not a rounding error, it is often the largest single source of waste in an AI infrastructure budget. Under the device plugin model, a small inference workload that needs a fraction of a GPU's memory still occupies the whole device, because the scheduler has no vocabulary for anything more granular than a whole unit. Multiply that across dozens of small services and the aggregate waste on a mid-sized GPU fleet is not a rounding error, it is real budget.

DRA does not automatically fix this on its own. What it does is give the scheduler and the drivers underneath it the information needed to bin-pack intelligently instead of blindly. A cluster running a mix of large training jobs and small inference services can now, with a driver that supports fractional or multi-instance allocation, place multiple smaller workloads on a single physical GPU where the old model would have burned an entire device on each one. For teams running inference at any real scale, that is the difference between GPU spend that scales linearly with traffic and GPU spend that scales with the number of services you happen to be running.

There is a second, quieter benefit that matters just as much for platform teams: the attribute-based model removes a whole category of node-label sprawl and tribal knowledge from the cluster. When device selection lives in structured claims instead of a growing pile of node selectors that only the platform team fully understands, onboarding new engineers onto the platform and auditing what is actually running where both get materially easier.

Why this is different from just adding more node pools

The obvious alternative to attribute-based scheduling is what most teams already do: carve the cluster into more and more specific node pools, one per GPU type, memory tier, or workload class, and rely on scheduling constraints to route pods correctly. That works, but it does not scale cleanly. Every new hardware SKU means a new node pool, new labels, new documentation, and more room for a misconfigured selector to land a workload on the wrong hardware silently. DRA moves that complexity out of static cluster topology and into a queryable, structured API, which is a better place for it to live as fleets get more heterogeneous, not less.

Where the rough edges still are

GA status for the core API is real progress, but it is not the same thing as a fully mature production path, and teams evaluating this now should go in with clear eyes about where the gaps are.

  • Driver maturity varies a lot by vendor. The core DRA framework being stable does not mean every GPU driver, cloud provider integration, or managed Kubernetes offering has caught up. NVIDIA's DRA driver is under active development and evolving quickly, and other vendors are earlier still. Check the specific driver version and its own stability claims before committing production workloads to it.
  • Managed Kubernetes support is uneven across providers. GKE, EKS, and AKS are each rolling out DRA support on their own timelines, with feature parity and default enablement differing between them. If you run on a managed control plane, confirm what your provider actually ships before assuming GA in upstream Kubernetes means GA in your environment.
  • Observability tooling has not fully caught up. Dashboards and alerting built around the old device plugin's integer-count model do not automatically understand ResourceClaims, prioritized device lists, or shared allocation. Expect to update monitoring alongside the migration, not after it.
  • CEL expressions add a new failure surface. Attribute-based selection is more expressive than a node selector, and that expressiveness means a malformed or overly narrow CEL filter can leave a claim permanently unschedulable in a way that is harder to debug than a simple label mismatch.

A rollout plan that does not bet the cluster

We are not telling clients to rip out working device plugin configurations this week. The sensible path is staged, and it looks close to how most infrastructure migrations that touch scheduling should go.

  • Start with a non-critical workload class. Pick something like batch inference or internal experimentation traffic, not the customer-facing serving path, and migrate that first to a DRA-based claim while leaving production traffic on the existing device plugin configuration.
  • Validate the specific driver against your hardware generation before trusting fractional sharing. Multi-instance and fractional allocation are the highest-value part of DRA and also the part most dependent on driver maturity, so test isolation and performance under real load before relying on it for anything latency-sensitive.
  • Rebuild capacity dashboards around ResourceClaims early. Waiting until after migration to update observability guarantees a period where you cannot see what is actually happening on the cluster. Do this in parallel with the pilot, not after.
  • Keep a rollback path to static node pools for at least one full release cycle. DRA's object model is stable now, but your organizational muscle memory around it is not, and having a known-good fallback reduces the blast radius of a bad CEL filter or an unexpected driver regression.
  • Treat GPU-heavy workloads as the last migration wave, not the first. Prove the pattern on lower-stakes workloads, then move the expensive, latency-sensitive inference paths once the platform team has real operational experience with claims, drivers, and the new failure modes.

Practical takeaways

DRA reaching GA in Kubernetes 1.34 is a genuine inflection point for how teams think about GPU capacity, not a minor scheduler tweak. The core API is stable and worth building against, the utilization gains from attribute-based, shareable device allocation are real for anyone running heterogeneous AI workloads, and the biggest remaining risk is driver and managed-platform maturity rather than the Kubernetes API itself. Teams that start piloting now, on non-critical workloads, with observability rebuilt in parallel, will be in a much stronger position by the time DRA becomes the default expectation across the ecosystem rather than the forward-looking option.

If your platform team is weighing this migration against a growing GPU bill and a cluster topology that has become harder to reason about every quarter, that kind of infrastructure assessment is exactly the sort of work we do as part of our AI infrastructure consultancy, evaluating where scheduling changes like this actually pay off against the operational risk of moving too fast. Start with the pilot, rebuild the dashboards alongside it, and let the expensive workloads move last.

Keep reading

Planning a GPU scheduling migration?

Start a conversation →
KT Solutions Assistant

Before we start, please share a few details so we can follow up with you.

Please enter your name and a valid email address.

End this conversation? Your chat will be emailed to us.