Most Kubernetes bills I review have the same shape: a lot of capacity reserved for peaks that rarely come, workers idling overnight, and nobody quite sure which team owns which share. Two features from this year's releases make two of those problems much easier to fix. The third, ownership, is still a people problem.
What changed this year

| Feature | Release | Why it matters for cost |
|---|---|---|
| In-place resize for pod-level resources (beta) | v1.36 | Grow or shrink a pod's shared CPU and memory pool without recreating it2 |
| HPA scale to zero (beta) | v1.37 | Remove the last idle pod for queue consumers and batch workers, without an add-on1 |
Scale to zero: where it pays, and where it bites
The Kubernetes post is clear about the mechanics. CPU and memory metrics come from running pods, so once you reach zero there is nothing left to measure. Scaling from zero therefore needs an object or external metric, such as a queue length, that exists independently of the workers1.
It is just as clear about the trade-off: cold starts. The autoscaler has to see the metric, schedule a pod and start the application. And Services do not buffer requests while no pods are ready, so request-driven HTTP workloads need a separate buffering layer1.
My rule: scale to zero where work can wait in a durable queue. Queue consumers, report generators, document processors and nightly jobs are ideal. User-facing APIs are not, unless you add buffering and accept the latency.
The savings are largest where each pod reserves expensive capacity, such as dedicated CPUs or GPUs1. That makes this especially relevant for AI workloads: embedding pipelines and batch inference workers that sit idle between jobs.
Resize in place instead of over-provisioning
Teams over-provision because changing resources used to mean restarting pods. In-place resize weakens that excuse. With pod-level resources, containers without their own limits share a pool, and from v1.36 you can resize that pool on a running pod. The kubelet applies it without a restart where the container's resize policy allows, and reports a pending condition if the node cannot fit the change2.
In practice I use this to set requests closer to real usage and resize during known peaks, rather than reserving the peak all day. Treat it as a tool for planned changes first. Automating it well needs good metrics and conservative policies.
Allocation first, optimisation second
None of this sticks without ownership. The FinOps Framework organises the work into inform, optimise and operate phases, and starts with making costs visible and attributable5. On Kubernetes that means allocating cluster cost to namespaces, workloads and labels, including the cost of idle capacity.
OpenCost is the open-source option I reach for. It pairs a cost allocation engine with a community specification for Kubernetes cost monitoring, and it is a CNCF incubating project34. Once every team sees its own number each week, optimisation stops being a platform-team crusade.
The playbook
- Label everything with team, product and environment. Enforce it at admission so unlabelled workloads can't be deployed.
- Turn on allocation and publish a weekly cost per team, including their share of idle capacity.
- Find the idle workers. Queue consumers and batch jobs that run around the clock are your first scale-to-zero candidates.
- Move them to queue-based scaling on an external metric, then let them scale to zero. Measure cold-start impact before and after.
- Right-size requests using real usage, and use in-place resize for planned peaks instead of permanent headroom.
- Put GPUs on a short leash. Dedicated GPU pools with scale-to-zero for batch inference, and a clear owner for every GPU node.
- Track unit cost: cost per transaction, per tenant or per thousand AI requests. A falling unit cost is the only number that proves the work.
What not to cut
Cost work goes wrong when it eats into reliability. I protect three things: headroom for the critical user path, redundancy across zones for anything customer-facing, and the observability needed to see what the changes did. Saving money and causing an outage is not a win.
Unit cost is also a useful lens in due diligence. A company that can tell you its cost per customer and how it falls with scale is usually in control of its platform. I cover more of this in my technical due diligence work.
How I can help
I run short platform and cost reviews that end with an allocation model, a list of safe savings and a plan to keep them. As a fractional CTO I also help teams build the habits that stop the bill creeping back. Or analyse your challenge first and bring the result to a call.
- 1Kubernetes v1.37: Scale Workloads to Zero with HorizontalPodAutoscalerKubernetes blog · 2 Sep 2026
- 2Kubernetes v1.36: In-Place Vertical Scaling for Pod-Level Resources Graduates to BetaKubernetes blog · 30 Apr 2026
- 3OpenCost FAQOpenCost project
- 4OpenCost moves to CNCF incubationOpenCost blog
- 5