Azure Kubernetes Service Pricing: Tiers, Nodes, and the Real Bill

Alberto Grande
Head of Marketing

Azure Kubernetes Service pricing has two moving parts, and only one of them shows up when people say "AKS is free." The control plane has a per-cluster tier charge that depends on the SLA and support level you pick, and the nodes are ordinary Azure VMs billed at ordinary Azure VM rates. Almost all of the money is in the second part. This guide breaks down Azure Kubernetes Service pricing tier by tier and line by line: what each control-plane tier costs, what the node pool actually adds, how Node Auto Provisioning changes the math, and where the bill drifts from an estimate. Every VM rate below is a live snapshot of the same dataset that powers DevZero's instance pricing explorer. For the deep dive on node pool VM cost mechanics (Spot, Reserved, burstable), see the companion AKS pricing guide; this page is about the service and its tiers.
Last updated: 2026-09-13 — Azure VM pricing, East US.
The three AKS pricing tiers#
The AKS control plane (the managed API server, scheduler, and etcd) is billed per cluster, per hour, at a rate set by the tier you choose. The tier controls the uptime SLA, the supported node count, and how long you get security patches for a Kubernetes version. Rates below are from Azure's published AKS pricing page as of 2026-09-06 and are list prices, not a live feed.
| Tier | Control-plane cost | Uptime SLA | Practical ceiling | What you get |
|---|---|---|---|---|
| Free | $0 | None (best effort, ~99.5% typical) | Up to ~1,000 nodes | Fine for dev, test, and non-critical clusters |
| Standard | Financially backed 99.9% (99.95% with availability zones) | Up to ~5,000 nodes | The default for production | |
| Premium | Same as Standard | Same as Standard | Adds Long-Term Support: patches for one year past the normal community end-of-life for a Kubernetes minor version |
Two things fall out of this table. First, the control-plane charge is per cluster, not per node, so it is nearly free relative to a real workload but it multiplies with every non-production cluster you leave running. Second, Premium buys support longevity, not performance: if you are not deliberately staying on an old Kubernetes version, you are paying $365 a month for nothing.
Live node pool VM pricing#
Every node in an AKS cluster is an Azure Linux VM in a node pool, billed by the second at standard Azure rates. This is the part of Azure Kubernetes Service pricing that scales with your workload. The table below is the set of SKUs DevZero tracks for Azure reference pricing in East US, with vCPU, memory, the current on-demand hourly rate, and an approximate monthly figure at 730 hours of continuous use.
| VM Type | vCPU | RAM | On-Demand $/hr | Approx $/month |
|---|---|---|---|---|
| D2s_v5 | 2 | 8 GiB | $0.0960/hr | ~$70.08/mo |
| D4s_v5 | 4 | 16 GiB | $0.1920/hr | ~$140.16/mo |
| D8s_v5 | 8 | 32 GiB | $0.3840/hr | ~$280.32/mo |
| E4s_v5 | 4 | 32 GiB | $0.2520/hr | ~$183.96/mo |
| B2s | 2 | 4 GiB | $0.0416/hr | ~$30.37/mo |
| B4ms | 4 | 16 GiB | $0.1660/hr | ~$121.18/mo |
Node pools inherit Azure's VM pricing models, and the choice matters more than the SKU:
| VM Type | On-Demand | Spot |
|---|---|---|
| D2s_v5 | $0.0960/hr | $0.0203/hr (~79% off) |
| D4s_v5 | $0.1920/hr | $0.0405/hr (~79% off) |
| D8s_v5 | $0.3840/hr | $0.0811/hr (~79% off) |
Spot node pools run on spare capacity and can be evicted with 30 seconds' notice. They suit stateless workers, batch jobs, and CI. Add a kubernetes.azure.com/scalesetpriority=spot taint and let only interruptible workloads tolerate it.
| Reservation Term | Rate | Discount vs On-Demand |
|---|---|---|
| 1 year | $0.0592/hr | ~38% |
| 3 years | $0.0379/hr | ~60% |
Reserved Instances and Savings Plans trade a 1- or 3-year commitment for a lower rate on the baseline capacity your cluster always runs. Size the commitment to the floor of your node count, never the peak.
Node Auto Provisioning changes what you pay for, not how much#
Node Auto Provisioning (NAP) is AKS's Karpenter-based autoscaler. Instead of you defining fixed node pools and a Cluster Autoscaler scaling them between min and max, NAP looks at pending pods and provisions the cheapest VM SKU that fits, then removes it when the pods are gone.
NAP itself is not a line item; there is no charge for the feature. What changes is the shape of the compute bill:
- Better bin-packing means fewer idle vCPUs, so the same workload runs on less total capacity.
- SKU diversity means NAP will reach for whatever is cheapest that fits, including Spot, rather than the one instance type someone picked at cluster creation.
- Faster scale-down means nodes that go idle are consolidated and removed in minutes, not left running because a static pool has a
minCount.
The trade is less predictability: your node inventory changes automatically, which makes a fixed Reserved Instance commitment harder to size. The common pattern is a small Reserved baseline for known steady-state load plus NAP handling everything above it on on-demand and Spot.
What the Azure pricing calculator doesn't tell you about AKS#
- The calculator prices VMs, not clusters. It has an AKS line, but it models the control-plane tier and a node count you type in. It has no view of how many nodes your workloads will actually demand once requests, limits, and autoscaling are in play.
- System node pool overhead is real. AKS requires a system node pool for CoreDNS, metrics-server, and other add-ons. On a small cluster that can be one or two VMs doing almost nothing user-facing, and the calculator will not remind you to add them.
- Reserved and Spot are not modeled together. A realistic cluster is a Reserved baseline plus Spot burst plus some on-demand headroom. The calculator wants one pricing model per estimate.
- Egress is a guess field. You have to know your outbound GB per month, and most teams enter a number that is far too low.
Treat a calculator figure as a single-moment list-price floor for one region, not a monthly budget.
Hidden and egress costs#
Node compute is the largest line on almost every AKS bill, but never the only one:
- Managed disks. Every OS disk and every PersistentVolumeClaim backed by Azure Disks bills by provisioned size and tier, not by what you write. Ephemeral OS disks avoid part of this but only on SKUs with enough local storage.
- Load balancer rules. A Standard Load Balancer bills per configured rule plus per GB processed. Several
LoadBalancerservices means several rule charges, not one flat fee. - Inter-zone traffic. Spreading a cluster across availability zones for resilience adds a per-GB charge on internal traffic between zones, paid on every pod-to-pod hop that crosses one.
- Internet egress. Outbound to the internet is free for the first 100 GB per month, then billed per GB on a sliding scale, per Azure's published Bandwidth pricing page (rates as of 2026-09-06). Image pulls, log shipping, and API responses all count.
- Azure Monitor / Container Insights. Billed per GB ingested. Enabling it cluster-wide is one click and the meter runs from then on.
- Extra control planes. Every dev, staging, and preview cluster on the Standard tier is another ~$73/month whether or not anyone is using it.
None of these appear in a per-VM rate, which is why compute-only estimates come in optimistic.
Worked example: a 20-node Standard-tier cluster#
Take a production AKS cluster in East US: Standard tier, 20 D4s_v5 nodes on-demand running 24/7 (3 of them a system node pool), each with a 128 GiB Premium SSD, one Standard Load Balancer with 5 rules, and about 3 TB of internet egress per month.
Control plane. Standard tier at ~$0.10/hour is about $73/month, flat.
Compute. Call the live D4s_v5 on-demand rate from the table above R dollars per hour. Twenty VMs at 730 hours is 20 x 730 = 14,600 instance-hours, so compute is 14,600 x R. Read R off the on-demand table on this page for the current figure; it is by far the largest number here.
Disks. A 128 GiB Premium SSD (P10) runs roughly $19 per disk per month on Azure's published Managed Disks pricing page (as of 2026-09-06). Twenty disks is about $380/month, independent of usage.
Load balancer. Five rules on a Standard Load Balancer plus modest data processing is roughly $20/month.
Egress. The first 100 GB is free; the remaining ~2,900 GB bills at roughly $0.087 per GB in the first paid tier (Azure Bandwidth pricing, East US, 2026-09-06), about $250/month.
Monthly total: $73 + (14,600 x R) + $380 + $20 + $250. Compute dominates. Moving the 17 user nodes to a 1-year Reserved commitment cuts the compute term by roughly the discount in the reserved table above while every other line stays flat, which is why disks and egress become a bigger share of the bill as you optimize the VMs.
DevZero's angle#
Most AKS waste is not the tier you picked or the VM rate. It is idle and oversized nodes. A cluster that provisions for peak and never scales down, or pods that request 2 vCPU and use 0.4, pays full on-demand price for capacity nobody uses. DevZero rightsizes Kubernetes workloads on Azure by matching node pools and pod requests to real usage, so the hours you pay for are hours you actually need. See Kubernetes cost optimization for how that works, and the AKS cost optimization guide for AKS-specific tactics.
Last updated#
Last updated: 2026-09-13 — Azure VM pricing, East US.
The node VM rates on this page are a live snapshot from the same dataset that powers DevZero's /instances pages and refresh on every deploy. The control-plane tier prices, disk pricing, load balancer rates, and egress per-GB figures cite Azure's published AKS and Bandwidth pricing pages as of 2026-09-06 and should be re-checked against your own region and billing currency. For the node pool VM cost mechanics in depth, see AKS pricing; for how the AWS equivalent bills, see EKS pricing; and for a three-cloud comparison, AWS vs Azure vs GCP pricing.

Alberto Grande
Head of Marketing
