Home/Library/AKS Cost Optimization
How-to · Azure · AKS · Updated May 2026

AKS Cost Optimization: Node Pools, Spot, and Autoscaling

Azure Kubernetes Service is cheap to start and expensive to ignore. The cost lives in the node pools, not the control plane, and it climbs whenever nodes run half empty or interruptible work pays on-demand rates. This is the method we use to cut AKS spend with node pool design, Spot node pools, and the autoscalers.

AKS cost optimization is mostly about node efficiency. You pay for the virtual machines behind your node pools whether the pods on them are using the capacity or not, so the goal is to keep nodes well packed, move interruptible work to cheaper Spot capacity, and let autoscaling add and remove nodes as demand changes rather than running for peak around the clock.

This article is part of our Azure cluster. For the wider context, start with our complete guide to Azure cost optimization, the pillar this piece links up to. Container efficiency is the Cut step of our See, Cut, Lock, Run method applied to Kubernetes.

Where the money is

The AKS control plane is low cost. Your bill is the node pools, the attached disks, the load balancers, and egress. Optimize the node pools first, because that is where the largest, fastest savings sit.

Design node pools around workload shape

A single general-purpose node pool forces every workload onto the same VM family, which is rarely optimal. Split node pools by what runs on them. Keep a small, stable system node pool for the cluster's own components. Add user node pools matched to workload shape: a general pool for typical services, a memory-optimized pool for caches and data services, and where you have batch or stateless work, a separate pool you can run on cheaper or interruptible capacity. Use node selectors, taints, and tolerations so pods land on the right pool rather than the cheapest happening to have room.

Right pool design also means right node size. Very small nodes waste capacity on per-node system overhead and the reserved headroom Kubernetes keeps for the kubelet and OS. Very large nodes bin-pack well but create bigger blast radius and coarser scaling steps. The sizing logic mirrors VM rightsizing generally, covered in our broader Azure work, but applied to the packing efficiency of the pool.

Run interruptible work on Spot node pools

AKS supports Spot node pools that draw on Azure's spare capacity at a steep discount versus on-demand, in exchange for the risk that Azure can evict the nodes when it needs the capacity back. For fault-tolerant, stateless, or restartable workloads, this is one of the largest single savings available: batch jobs, CI runners, dev and test environments, and queue consumers that can tolerate a node disappearing. Pair a Spot pool with a regular on-demand pool, schedule resilient work to Spot with tolerations, and keep anything stateful or latency-critical on the on-demand pool.

Design for eviction rather than hoping it does not happen. Use pod disruption budgets, make workloads idempotent, and ensure controllers reschedule evicted pods onto remaining capacity. The pattern is the same risk-and-reward calculation we describe for compute generally; the discipline is matching only the right workloads to interruptible capacity.

Want your AKS spend cut without breaking workloads?

Our Azure cost audit profiles node pool utilization, finds the Spot-eligible work, and tunes the autoscalers to your real demand curve. On the performance model, you pay only from realized savings. No savings, no fee.

Book an Azure cost audit →

Let the autoscalers do the work

Three scaling mechanisms work together in AKS. The Horizontal Pod Autoscaler adds and removes pod replicas based on load. The Cluster Autoscaler adds and removes nodes when pods cannot be scheduled or when nodes sit underused, so you stop paying for idle nodes. Newer node autoprovisioning approaches go further by selecting the cheapest suitable VM size automatically. Configure the Cluster Autoscaler with sensible minimum and maximum counts per pool, and tune the scale-down thresholds so it reclaims idle nodes promptly without thrashing.

The most common AKS waste we find is a cluster pinned to a high fixed node count that was set for a launch peak and never revisited. Turning on the Cluster Autoscaler with a realistic minimum, and letting it scale down overnight and on weekends, often removes a large slice of cost on its own. Combine it with scheduled scaling for non-production, the same dev and test discipline used across the Azure estate.

The rest of the AKS bill

After node pools, clean up the supporting costs. Delete unattached managed disks left behind by removed persistent volumes, consolidate load balancers and public IPs, and watch egress between zones and regions. Right-size persistent volume claims rather than over-provisioning storage by default. None of these are as large as node efficiency, but together they trim a meaningful tail.

LeverBest forWatch out for
Separate node poolsMatching VM shape to workloadPool sprawl, poor bin-packing
Spot node poolsBatch, CI, dev/test, queuesEviction; never for stateful
Cluster AutoscalerRemoving idle nodesThrash from tight thresholds
Reservations / savings planSteady baseline on-demand nodesBuy only after rightsizing

AKS features and autoscaler behavior above reflect the service as of May 2026. Verify current node pool options and autoscaler settings in Azure documentation before changing production clusters, as features evolve.

Go deeper · free guide

The Azure Cost Optimization Field Guide includes the node pool utilization queries and the Spot eligibility checklist we use on AKS engagements. It is the downloadable companion to this article.

The short version

Design node pools around workload shape, move interruptible work to Spot pools with eviction-safe patterns, turn on the Cluster and Horizontal autoscalers with realistic limits, and clean up the disks, load balancers, and egress around the cluster. Buy a reservation or savings plan only on the steady on-demand baseline that remains after rightsizing. For a related database move on the same estate, see Azure SQL Database cost optimization. When you want it run across the whole cluster fleet, that is exactly what our Azure cost optimization service delivers.

The Cloud Cost Brief

Cloud pricing moves. We tell you when it matters.

New commitment instruments, FOCUS changes, hyperscaler pricing shifts, and the plays that actually move a bill. No schedule, no filler.

Subscribe · Work email only