This page explains how to resize clusters. You can resize a cluster to increase or decrease the number of nodes in that cluster. To learn how to add node pools and manage your existing node pools, refer to Adding and managing node pools.
When you add or remove nodes in your cluster, Google Kubernetes Engine (GKE) adds or removes the associated virtual machine (VM) instances from the underlying Compute Engine Managed Instance Groups (MIGs) provisioned for your node pools.
Increasing the size of your cluster
When you increase the size of a cluster:
- New node instances are created using the same configuration as the existing instances
- New Pods may be scheduled onto the new instances
- Existing Pods are not moved onto the new instances
Decreasing the size of your cluster
When you decrease the size of a cluster:
- The Pods that are scheduled on the instances being removed are killed
- Pods managed by a replication controller are rescheduled by the controller onto the remaining instances
- Pods not managed by a replication controller are not restarted
The MIG does not differentiate between instances running Pods and instances without Pods. Resizing down removes instances at random.
Before you begin
Before you start, make sure you have performed the following tasks:
- Ensure that you have enabled the Google Kubernetes Engine API. Enable Google Kubernetes Engine API
- Ensure that you have installed the Google Cloud CLI.
- Set up default Google Cloud CLI settings for your project by using one of the following methods:
- Use
gcloud init
, if you want to be walked through setting project defaults. - Use
gcloud config
, to individually set your project ID, zone, and region. -
Run
gcloud init
and follow the directions:gcloud init
If you are using SSH on a remote server, use the
--console-only
flag to prevent the command from launching a browser:gcloud init --console-only
- Follow the instructions to authorize the gcloud CLI to use your Google Cloud account.
- Create a new configuration or select an existing one.
- Choose a Google Cloud project.
- Choose a default Compute Engine zone.
- Choose a default Compute Engine region.
- Set your default project ID:
gcloud config set project PROJECT_ID
- Set your default Compute Engine region (for example,
us-central1
):gcloud config set compute/region COMPUTE_REGION
- Set your default Compute Engine zone (for example,
us-central1-c
):gcloud config set compute/zone COMPUTE_ZONE
- Update
gcloud
to the latest version:gcloud components update
gcloud init
gcloud config
By setting default locations, you can avoid errors in gcloud CLI like the
following: One of [--zone, --region] must be supplied: Please specify location
.
Resize a cluster
gcloud
To resize a cluster's node pools, run the gcloud container clusters resize
command:
gcloud container clusters resize CLUSTER_NAME --node-pool POOL_NAME \ --num-nodes NUM_NODES
Replace the following:
CLUSTER_NAME
: the name of the cluster to resize.POOL_NAME
: the name of the node pool to resize.NUM_NODES
: the number of nodes in the pool in a zonal cluster. If you use multi-zonal or regional clusters,NUM_NODES
is the number of nodes for each zone the node pools is in.
Repeat this command for each node pool. If your cluster has only one node
pool, omit the --node-pool
flag.
Console
To resize a cluster's node pools, perform the following steps:
Go to the Google Kubernetes Engine page in Google Cloud console.
Beside the cluster you want to edit, click more_vert Actions, then click Edit.
Click the Nodes tab next to the Details tab.
In the Node Pools section, click the name of the node pool that you want to resize.
Click edit Resize.
In the Number of nodes field, enter how many nodes that you want in the node pool, and then click Resize.
Repeat for each node pool as needed.
Decrease the size of your cluster with drain
You can manually decrease the size of your cluster and drain each instance's Pods before they are removed.
To learn how to add node pools and to manage existing ones, refer to Adding and managing node pools.
To decrease and drain your cluster, run the gcloud container clusters resize
command:
gcloud container clusters resize CLUSTER_NAME --node-pool POOL_NAME \ --num-nodes NUM_NODES
Replace the following:
CLUSTER_NAME
: the name of the cluster to resize.POOL_NAME
: the name of the node pool to resize.NUM_NODES
: the number of nodes in the pool in a zonal cluster. If you use multi-zonal or regional clusters,NUM_NODES
is the number of nodes for each zone the node pools is in.
Autoscaling a cluster
GKE's cluster autoscaler feature automatically resizes your node pools in response to changing conditions, such as changes in your workloads and resource usage.
To learn more about how autoscaling works, refer to the cluster autoscaler documentation. To set up autoscaling for your cluster, see Autoscaling a cluster.