Autoscaling a cluster

This page shows you how to autoscale your Google Kubernetes Engine (GKE) clusters. To learn about how the cluster autoscaler works, refer to Cluster autoscaler.

Using cluster autoscaler

The following sections explain how to use cluster autoscaler.

Creating a cluster with autoscaling

gcloud

To create a cluster with autoscaling, use the --enable-autoscaling flag and specify --min-nodes and --max-nodes.

The following command creates a cluster with 30 nodes. Node autoscaling is enabled and resizes the number of nodes based on cluster load. The cluster autoscaler can reduce the size of the default node pool to 15 nodes or increase the node pool to a maximum of 50 nodes.

gcloud container clusters create cluster-name --num-nodes 30 \
    --enable-autoscaling --min-nodes 15 --max-nodes 50 [--zone compute-zone]

In this command:

  • --num-nodes specifies the number of nodes to create in each of the cluster's zones. The default is 3.
  • --enable-autoscaling indicates that autoscaling is enabled.
  • --min-nodes specifies the minimum number of nodes for the default node pool.
  • --max-nodes specifies the maximum number of nodes for the default node pool.
  • --zone specifies the compute zone in which the autoscaler should create new nodes.

Console

To create a new cluster in which the default node pool has autoscaling enabled:

  1. Visit the Google Kubernetes Engine menu in Cloud Console.

    Visit the Google Kubernetes Engine menu

  2. Click the Create cluster button.

  3. Configure your cluster as desired.

  4. From the navigation pane, under Node Pools, click default-pool.

  5. Select the Enable autoscaling checkbox.

  6. Change the values of the Minimum number of nodes and Maximum number of nodes fields as desired.

  7. Click Create.

Adding a node pool with autoscaling

gcloud

The following command creates a node pool of size 3 (default), with node autoscaling based on cluster load that scales the node pool to a maximum of 5 nodes and a minimum of 1 node:

gcloud container node-pools create pool-name --cluster cluster-name \
    --enable-autoscaling --min-nodes 1 --max-nodes 5 [--zone compute-zone]

In this command:

  • --cluster indicates the cluster in which the node is created.
  • --enable-autoscaling indicates that autoscaling is enabled.
  • --min-nodes specifies the minimum number of nodes for the node pool.
  • --max-nodes specifies the maximum number of nodes for the node pool.
  • --zone specifies the compute zone in which the autoscaler should create new nodes.

Console

To add a node pool with autoscaling to an existing cluster:

  1. Visit the Google Kubernetes Engine menu in Cloud Console.

    Visit the Google Kubernetes Engine menu

  2. Click the desired cluster, then click Edit.

  3. Click Add node pool.

  4. Configure the node pool as desired.

  5. In the Size section, select the Enable autoscaling checkbox.

  6. Change the values of the Minimum size and Maximum size fields as desired.

  7. Click Save.

Enabling autoscaling for an existing node pool

gcloud

To enable autoscaling for an existing node pool, run the following command:

gcloud container clusters update cluster-name --enable-autoscaling \
    --min-nodes 1 --max-nodes 10 --zone compute-zone --node-pool default-pool

In this command:

  • --enable-autoscaling indicates that autoscaling is enabled.
  • --min-nodes specifies the minimum number of nodes for the node pool.
  • --max-nodes specifies the maximum number of nodes for the node pool.
  • --zone specifies the cluster's compute zone.
  • --node-pool specifies the desired node pool. If you have only one node pool, supply default-pool to this flag.

Console

To enable autoscaling for an existing node pool:

  1. Visit the Google Kubernetes Engine menu in Cloud Console.

    Visit the Google Kubernetes Engine menu

  2. Click the desired cluster, then click Edit.

  3. From the Node Pools menu at the bottom of the page, select the desired node pool by clicking its title to expand it. The default node pool is expanded by default. Click Edit.

  4. In the Size section, select the Enable autoscaling checkbox.

  5. Change the values of the Minimum size and Maximum size fields as desired.

  6. Click Save.

Disabling autoscaling for an existing node pool

gcloud

To disable autoscaling for a specific node pool, run the following command:

gcloud container clusters update cluster-name --no-enable-autoscaling \
    --node-pool pool-name [--zone compute-zone --project project-id]

In this command, --no-enable-autoscaling instructs the cluster to disable autoscaling.

The cluster size is fixed at the cluster's current default node pool size, which can be manually updated.

Console

To disable autoscaling for a specific node pool:

  1. Visit the Google Kubernetes Engine menu in Cloud Console.

    Visit the Google Kubernetes Engine menu

  2. To add labels to a single cluster, click its Edit button, which looks like a pencil.

  3. From the Node Pools menu at the bottom of the page, select the desired node pool by clicking its title to expand it. The default node pool is expanded by default. Click Edit.

  4. In the Size section, clear the Enable autoscaling checkbox.

  5. Click Save.

Troubleshooting

See the following troubleshooting information for cluster autoscaler:

What's next