Yaroslav Nechayev
2 min read

In-Place Pod Resizing hit GA — here's what actually changes

In-Place Pod Resizing (resize subresource on Pods) has reached GA this cycle, alongside Sidecar Containers GA and Dynamic Resource Allocation moving to beta. Of the three, resizing is the one that actually changes how I'd run a cluster day to day — so that's the one worth writing about.

What it replaces

Before this, changing a pod's CPU/memory requests meant changing the Deployment spec and letting Kubernetes roll new pods. That's fine for planned capacity changes. It's a bad tool for the case that actually shows up in an incident: a service is under-provisioned right now and a rolling restart is the last thing you want mid-incident, because it adds churn exactly when you need stability.

With in-place resizing, you patch the running pod's resources directly. No restart, no rescheduling (unless the new request doesn't fit on the current node, which the kubelet handles as a defined failure mode rather than silently wedging).

Where this actually matters

  • Mid-incident capacity bumps. Bump memory limits on the pods that are about to OOM without a restart-induced blip on top of whatever's already going on.
  • Right-sizing without a deploy. A lot of "add a VPA" projects stall out because VPA's default behavior is still eviction-based. In-place resize is the missing piece that makes automated right-sizing something you'd actually want to turn on for latency-sensitive services, not just batch jobs.
  • Fewer unnecessary rollouts. Every rolling restart is a chance for a cold-cache latency spike or a canary analysis window you didn't ask for. Cutting "just changing resources" out of that path is a real reduction in blast radius, not a nice-to-have.

The catch

Not every resize is free. Decreasing memory limits in-place is restricted on some container runtimes because you can't safely shrink an already memory-mapped cgroup limit without risking an OOM kill on legitimate usage — check your runtime's support before assuming a story of the same guarantee both directions. And it doesn't fix a pod that no longer fits its node at all; that's still a reschedule, same as before.

If you run VPA, Karpenter, or anything that reasons about pod sizing, this is the release to go check whether that tooling has picked up in-place resize yet — the ones that haven't are still paying the restart tax for no reason now.

Further reading: