Size AKS node pools from pod requests, applying Azure's CPU and memory reservations and the pods-per-node ceiling.
AKS reserves node resources on a sliding scale — 25% of the first 4 GiB of memory, 20% of the next 4, 10% of the next 8, 6% of the next 112 and 2% beyond, plus a 750 MiB eviction threshold — so a 16 GiB node schedules roughly 12.5 GiB of pods. The node count is then the worst of three independent constraints: CPU requests, memory requests and the pods-per-node limit that Azure CNI defaults to 30. The pods-per-node limit is set at node-pool creation and cannot be changed afterwards, so a cluster sized only on CPU and memory can run out of IP-backed pod slots at a third of its capacity; the control plane itself is free on the Free tier, meaning almost the whole AKS bill is ordinary VM cost.
Azure Kubernetes Service (AKS)
nodes = max(pod CPU ÷ allocatable CPU, pod memory ÷ allocatable memory, pods ÷ usable slots), where allocatable memory subtracts 25%/20%/10%/6%/2% of successive memory bands plus a 750 MiB eviction threshold.
nodes = max(pod CPU ÷ allocatable CPU, pod memory ÷ allocatable memory, pods ÷ usable slots), where allocatable memory subtracts 25%/20%/10%/6%/2% of successive memory bands plus a 750 MiB eviction threshold. AKS reserves node resources on a sliding scale — 25% of the first 4 GiB of memory, 20% of the next 4, 10% of the next 8, 6% of the next 112 and 2% beyond, plus a 750 MiB eviction threshold — so a 16 GiB node schedules roughly 12.5 GiB of pods. The node count is then the worst of three independent constraints: CPU requests, memory requests and the pods-per-node limit that Azure CNI defaults to 30.
The pods-per-node limit is set at node-pool creation and cannot be changed afterwards, so a cluster sized only on CPU and memory can run out of IP-backed pod slots at a third of its capacity; the control plane itself is free on the Free tier, meaning almost the whole AKS bill is ordinary VM cost.
This calculator takes 9 inputs: Pods to schedule, CPU request per pod, Memory request per pod, vCPUs per node, Memory per node, Maximum pods per node, System pods per node, Node rate, Control plane rate. The pre-filled defaults are a realistic starting point — replace them with figures from your own environment for a result you can act on.