The 60-second answer

Azure Kubernetes Service (AKS) has no per-cluster licence and no control-plane fee on the Free tier — you pay for the worker nodes (VMs), storage, networking, and load balancer underneath. That makes aks licensing costs simpler than it looks: AKS itself is free, but the underlying infrastructure follows standard Azure pricing including reservations, Azure Hybrid Benefit on Linux SUSE/Red Hat, and Spot pricing on appropriate node pools. The four decisions that drive 80% of AKS cost are: node SKU and density, autoscaler configuration, Spot node pool ratio, and the choice between Free / Standard / Premium control plane tiers. Get those right and a typical AKS-heavy tenant runs at 35–55% of the equivalent EC2-on-AKS-clone cost.

What AKS actually costs

AKS has three pricing components most teams know about and two they typically miss.

Component 1 — Control plane. Free tier: no SLA, suitable for dev/test. Standard tier: $0.10/hour per cluster, 99.95% SLA, recommended for production. Premium tier (introduced 2024 for long-term support clusters): $0.60/hour per cluster, additional patch lifecycle. Most production tenants run Standard.

Component 2 — Worker nodes. Standard Azure VM pricing applies. Whatever VM family backs your node pool (D-series, E-series, F-series) bills as a regular VM. Reservations, Savings Plans, AHB on Windows or Linux SA, and Spot all apply at the underlying VM layer.

Component 3 — Storage, networking, load balancers. Persistent volumes on Azure Disks or Azure Files, ingress controllers using Azure Load Balancer or Application Gateway, and egress through whatever NAT or firewall design you have built. These typically run 12–28% of total cluster cost.

The two components teams miss: Azure Container Registry charges for image storage and replication if you run Premium tier with geo-replication, and Azure Monitor for Containers log ingestion which can spiral if you do not control which log streams flow to Log Analytics.

Node SKU and density decisions

The single largest driver of AKS cost is bin-packing efficiency — how many pods you fit onto each node. The standard mistake is provisioning nodes to peak headroom rather than to bin-packing-efficient densities. Three rules that capture most of the available savings:

  • Right-size node SKU to dominant pod shape. If most pods request 2 vCPU and 4 GB memory, a D16s v5 (16 vCPU, 64 GB) fits eight pods per node with no waste. A D32s v5 fits 16 but leaves more stranded capacity on rolling updates. Profile pod resource requests across the cluster and pick the smallest node SKU that fits 8–12 typical pods.
  • Run mixed node pools. A general-purpose pool, a memory-optimised pool, and a Spot pool. Kubernetes' scheduler picks the right pool per workload via node selectors and tolerations.
  • Enable cluster autoscaler with aggressive scale-down policies. AKS clusters routinely run 30–55% idle node capacity because scale-down is left at conservative defaults.
The Microsoft commercial bias

The Microsoft AKS account team will not recommend Spot node pools, will not flag bin-packing inefficiency, and will not push you toward smaller node SKUs — all three reduce your MACC burn rate without reducing your usefulness as a customer. The same workload at top-quartile cost-efficiency burns 35–50% less MACC than the same workload run on Microsoft's default reference architecture.

Spot node pools — the highest-ROI lever

AKS supports Spot node pools as a first-class feature. A Spot node pool runs on Azure Spot VMs (60–90% off pay-as-you-go), and Kubernetes treats Spot eviction identically to node failure — pods reschedule to the on-demand pool. The integration is operationally cheap because the orchestrator already handles node loss.

The ratio that works for most clusters: 60% Spot, 40% on-demand for stateless workloads (web fronts, API gateways, batch consumers, ML inference). For stateful workloads (databases, caches), keep them on the on-demand pool. The right tolerations and node selectors keep Kubernetes from scheduling stateful pods onto Spot nodes.

Typical impact on a mature AKS-heavy tenant: 22–38% reduction in cluster compute cost without any change to application code. See the dedicated Azure Spot Instances guide for the orchestration patterns.

Azure Hybrid Benefit on AKS

AKS supports AHB for two licensing classes. Windows nodes: if you run Windows containers, AHB applies to the Windows licensing component of the node VMs at the same 30–55% discount as standalone Windows VMs. Linux SUSE / Red Hat: if you hold a SUSE or RHEL subscription that supports BYOS to Azure, AHB applies to the Linux node licence component. Both require explicit toggle on each node pool — AKS does not enable AHB by default.

LeverTypical savingsEngineering effort
Node SKU right-sizing15–25%2–4 weeks
Cluster autoscaler tuning20–35%1–2 weeks
Spot node pools (60% mix)22–38%2–4 weeks
Reserved instances on baseline25–45% on covered capacity1 week
Azure Hybrid Benefit (Windows/Linux SA)30–55% on covered capacity1 day
Log ingestion sampling40–75% of monitoring spend1 week
Run a 4-week AKS cost re-engineering sprint
Density profiling, autoscaler tuning, Spot pool design, reservation sizing. Typical run-rate reduction lands at 35–50% with no application change.
Book the Sprint

The Azure Monitor for Containers trap

AKS clusters can stream three log streams to Log Analytics: container stdout/stderr, kube-system, and audit. Default configuration is "stream everything", which can generate $25K–$120K per month in Log Analytics ingestion for a mid-sized cluster — often more than the underlying compute. The remediation is selective: stream stdout/stderr only for application namespaces, sample audit logs at 1:10 or lower, exclude kube-system except during active troubleshooting. Most tenants cut monitoring spend 60–75% with no operational impact.

Anonymised case study: 230-cluster fintech platform

A fintech client ran a 230-cluster AKS platform serving payment processing across three regions. Annual AKS infrastructure spend: $34.8M. We profiled the clusters: average bin-packing efficiency was 41%, cluster autoscaler was at default settings, Spot pools were not deployed, monitoring ingestion was unfiltered, and 70% of compute was at pay-as-you-go with no reservation coverage. The re-engineering: right-sized 11 distinct node pool SKUs across the fleet, tuned autoscaler for aggressive scale-down, added 60/40 Spot pools to stateless services, layered three-year RIs on the steady-state baseline, sampled monitoring streams. New run rate: $19.2M annual — $15.6M saved. The Spot pool alone accounted for $5.8M of the savings.

$15.6M
Annual AKS cost savings from re-engineering against the four highest-leverage levers — with no application code change and no SLA impact.

Where to take this from here

If your AKS posture is "Microsoft's default reference architecture", you are paying roughly 1.8–2.2x what the workload could land at. The remediation is sequenced: bin-packing first, autoscaler second, Spot third, reservations fourth, monitoring fifth. For broader Azure cost context, the complete Azure cost optimisation guide places AKS alongside the rest of the stack. For commitment strategy across all workload types, the Savings Plans vs RIs guide covers the underlying VM commitments. For renewal leverage, the EA tier collapse playbook shows how a cost-optimised Azure posture changes your EA negotiation position.