Manually scale the node count in an Azure Kubernetes Service (AKS) cluster
If the resource needs of your applications change, your cluster performance may be impacted due to low capacity on CPU, memory, PID space, or disk sizes. To address these changes, you can manually scale your AKS cluster to run a different number of nodes. When you scale down, nodes are carefully cordoned and drained to minimize disruption to running applications. When you scale up, AKS waits until nodes are marked Ready by the Kubernetes cluster before pods are scheduled on them.
This article describes how to manually increase or decrease the number of nodes in an AKS cluster.
Before you begin
Review the AKS service quotas and limits to verify your cluster can scale to your desired number of nodes.
The name of a node pool may only contain lowercase alphanumeric characters and must begin with a lowercase letter.
- For Linux node pools, the length must be between 1-11 characters.
- For Windows node pools, the length must be between 1-6 characters.
Scale the cluster nodes
Important
Removing nodes from a node pool using the kubectl command isn't supported. Doing so can create scaling issues with your AKS cluster.
Get the name of your node pool using the
az aks show
command. The following example gets the node pool name for the cluster named myAKSCluster in the myResourceGroup resource group:az aks show --resource-group myResourceGroup --name myAKSCluster --query agentPoolProfiles
The following example output shows that the name is nodepool1:
[ { "count": 1, "maxPods": 110, "name": "nodepool1", "osDiskSizeGb": 30, "osType": "Linux", "vmSize": "Standard_DS2_v2" } ]
Scale the cluster nodes using the
az aks scale
command. The following example scales a cluster named myAKSCluster to a single node. Provide your own--nodepool-name
from the previous command, such as nodepool1:az aks scale --resource-group myResourceGroup --name myAKSCluster --node-count 1 --nodepool-name <your node pool name>
The following example output shows the cluster successfully scaled to one node, as shown in the agentPoolProfiles section:
{ "aadProfile": null, "addonProfiles": null, "agentPoolProfiles": [ { "count": 1, "maxPods": 110, "name": "nodepool1", "osDiskSizeGb": 30, "osType": "Linux", "vmSize": "Standard_DS2_v2", "vnetSubnetId": null } ], [...] }
Scale User
node pools to 0
Unlike System
node pools that always require running nodes, User
node pools allow you to scale to 0. To learn more on the differences between system and user node pools, see System and user node pools.
Important
You can't scale a user node pool with the cluster autoscaler enabled to 0 nodes. To scale a user node pool to 0 nodes, you must disable the cluster autoscaler first. For more information, see Disable the cluster autoscaler on a node pool.
To scale a user pool to 0, you can use the az aks nodepool scale in alternative to the above
az aks scale
command, and set0
as your node count.az aks nodepool scale --name <your node pool name> --cluster-name myAKSCluster --resource-group myResourceGroup --node-count 0
You can also autoscale
User
node pools to zero nodes, by setting the--min-count
parameter of the Cluster Autoscaler to0
.
Next steps
In this article, you manually scaled an AKS cluster to increase or decrease the number of nodes. You can also use the cluster autoscaler to automatically scale your cluster.