GKE - Google Kubernetes Engine

GKE Deployment and Administration

Demo Configure cluster autoscaling

In this guide, you’ll learn how to enable and manage autoscaling for your Google Kubernetes Engine (GKE) clusters and node pools using the gcloud CLI. We’ll cover cluster creation with autoscaling, verifying configurations, and updating existing pools.

Overview

Autoscaling in GKE lets your cluster grow or shrink node capacity automatically based on workload. Configuring autoscaling properly helps you optimize cost and performance.

Prerequisites

  • A Google Cloud project with billing enabled
  • Cloud SDK (gcloud) installed and authenticated
  • IAM permissions: Kubernetes Engine Admin, Compute Admin
ResourcePurposeReference
gcloud CLIManage GKE clustershttps://cloud.google.com/sdk
GKE AutoscalingAutomatic scaling of node poolshttps://cloud.google.com/kubernetes-engine/docs/concepts/cluster-autoscaler
IAM RolesPermissions to create and modify resourceshttps://cloud.google.com/iam/docs/understanding-roles

1. Set the Default Compute Zone

Configure a default zone so you don’t need to specify --zone every time:

gcloud config set compute/zone us-west1-a

Note

You can override this with --zone or set a default region:

gcloud config set compute/region us-west1

2. Create a Cluster with Autoscaling

Use the following command to create gke-deep-dive-auto with autoscaling enabled (1–2 nodes):

gcloud container clusters create gke-deep-dive-auto \
  --enable-autoscaling \
  --num-nodes=1 \
  --min-nodes=1 \
  --max-nodes=2 \
  --disk-type=pd-standard \
  --disk-size=10
FlagDescription
--enable-autoscalingEnables cluster autoscaling
--num-nodes=1Initial node count
--min-nodes=1, --max-nodes=2Defines the autoscaling range
--disk-type=pd-standardBoot disk type
--disk-size=10Boot disk size in GB

Warning

Cluster creation can take several minutes. Monitor progress in the Cloud Console or via:

gcloud container operations list

3. Verify Cluster Autoscaling

Once ready, describe just the autoscaling block:

gcloud container clusters describe gke-deep-dive-auto \
  --format="yaml(nodePools[].autoscaling)"

Expected output:

- autoscaling:
    enabled: true
    minNodeCount: 1
    maxNodeCount: 2

To view the full node pool details:

gcloud container clusters describe gke-deep-dive-auto \
  --format="yaml(nodePools[0])"

4. Compare with a Cluster Without Autoscaling

If you omit --enable-autoscaling when creating a cluster, the autoscaling section is not present:

gcloud container clusters describe gke-deep-dive \
  --format="yaml(nodePools[0])"

No autoscaling: block will appear in the output.

5. Add a New Node Pool with Autoscaling

You can attach a new node pool to an existing cluster and enable autoscaling:

gcloud container node-pools create gke-deep-dive-node-pool \
  --cluster=gke-deep-dive \
  --enable-autoscaling \
  --min-nodes=1 \
  --max-nodes=2 \
  --disk-type=pd-standard \
  --disk-size=10

Verify both pools:

gcloud container clusters describe gke-deep-dive \
  --format="yaml(nodePools)"

Look for:

- name: gke-deep-dive-node-pool
  autoscaling:
    enabled: true
    minNodeCount: 1
    maxNodeCount: 2

6. Enable Autoscaling on an Existing Node Pool

To update an existing node pool (e.g., default-pool) and enable autoscaling:

gcloud container clusters update gke-deep-dive \
  --enable-autoscaling \
  --node-pool=default-pool \
  --min-nodes=1 \
  --max-nodes=2

Re-run the description to confirm:

gcloud container clusters describe gke-deep-dive \
  --format="yaml(nodePools)"

Both pools should now include:

autoscaling:
  enabled: true
  minNodeCount: 1
  maxNodeCount: 2

Congratulations! You’ve successfully configured cluster-level and node-pool–level autoscaling in GKE.

Watch Video

Watch video content

Previous
Plan to scale Cluster autoscaling and Node auto provisioning