gcloud container node-pools update NAME (--accelerator=[type=TYPE,[count=COUNT,gpu-driver-version=GPU_DRIVER_VERSION,gpu-partition-size=GPU_PARTITION_SIZE,gpu-sharing-strategy=GPU_SHARING_STRATEGY,max-shared-clients-per-gpu=MAX_SHARED_CLIENTS_PER_GPU],…] | --confidential-node-type=CONFIDENTIAL_NODE_TYPE | --consolidation-delay=CONSOLIDATION_DELAY | --containerd-config-from-file=PATH_TO_FILE | --enable-confidential-nodes | --enable-gvnic | --enable-image-streaming | --enable-insecure-kubelet-readonly-port | --enable-kernel-module-signature-enforcement | --enable-private-nodes | --enable-queued-provisioning | --flex-start | --labels=[KEY=VALUE,…] | --logging-variant=LOGGING_VARIANT | --max-run-duration=MAX_RUN_DURATION | --network-performance-configs=[PROPERTY=VALUE,…] | --node-architecture-taint-behavior=NODE_ARCHITECTURE_TAINT_BEHAVIOR | --node-labels=[NODE_LABEL,…] | --node-locations=ZONE,[ZONE,…] | --node-taints=[NODE_TAINT,…] | --resource-manager-tags=[KEY=VALUE,…] | --storage-pools=STORAGE_POOL,[…] | --system-config-from-file=PATH_TO_FILE | --tags=[TAG,…] | --windows-os-version=WINDOWS_OS_VERSION | --workload-metadata=WORKLOAD_METADATA | --add-maintenance-exclusion-until-end-of-support | --remove-maintenance-exclusion-until-end-of-support | --autoscaled-rollout-policy=[wait-for-drain-duration=WAIT-FOR-DRAIN-DURATION] --enable-blue-green-upgrade --enable-surge-upgrade --max-surge-upgrade=MAX_SURGE_UPGRADE --max-unavailable-upgrade=MAX_UNAVAILABLE_UPGRADE --node-pool-soak-duration=NODE_POOL_SOAK_DURATION --standard-rollout-policy=[batch-node-count=BATCH_NODE_COUNT,batch-percent=BATCH_NODE_PERCENTAGE,batch-soak-duration=BATCH_SOAK_DURATION,…] | --boot-disk-provisioned-iops=BOOT_DISK_PROVISIONED_IOPS --boot-disk-provisioned-throughput=BOOT_DISK_PROVISIONED_THROUGHPUT --disk-size=DISK_SIZE --disk-type=DISK_TYPE --machine-type=MACHINE_TYPE | --enable-autoprovisioning --enable-autoscaling --location-policy=LOCATION_POLICY --max-nodes=MAX_NODES --min-nodes=MIN_NODES --total-max-nodes=TOTAL_MAX_NODES --total-min-nodes=TOTAL_MIN_NODES | --enable-autorepair --enable-autoupgrade | --node-drain-grace-period-seconds=NODE_DRAIN_GRACE_PERIOD_SECONDS --node-drain-pdb-timeout-seconds=NODE_DRAIN_PDB_TIMEOUT_SECONDS --respect-pdb-during-node-pool-deletion) [--async] [--cluster=CLUSTER] [--location=LOCATION | --region=REGION | --zone=ZONE, -z ZONE] [GCLOUD_WIDE_FLAG …]
gcloud container node-pools update updates a node pool in a Google
Kubernetes Engine cluster.
gcloud container node-pools update node-pool-1 --cluster=sample-cluster --enable-autoupgradeNAME--accelerator=[type=TYPE,[count=COUNT,gpu-driver-version=GPU_DRIVER_VERSION,gpu-partition-size=GPU_PARTITION_SIZE,gpu-sharing-strategy=GPU_SHARING_STRATEGY,max-shared-clients-per-gpu=MAX_SHARED_CLIENTS_PER_GPU],…]typegcloud compute accelerator-types
list to learn about all available accelerator types.
countgpu-driver-version`default`: Install the default driver version for this GKE version. For GKE version 1.30.1-gke.1156000 and later, this is the default option.
`latest`: Install the latest driver version available for this GKE version. Can only be used for nodes that use Container-Optimized OS.
`disabled`: Skip automatic driver installation. You must manually install a driver after you create the cluster. For GKE version 1.30.1-gke.1156000 and earlier, this is the default option. To manually install the GPU driver, refer to https://cloud.google.com/kubernetes-engine/docs/how-to/gpus#installing_drivers.
gpu-partition-sizegpu-sharing-strategygpu-sharing-strategy.
--confidential-node-type=CONFIDENTIAL_NODE_TYPECONFIDENTIAL_NODE_TYPE must be one of: sev,
sev_snp, tdx, disabled.
--consolidation-delay=CONSOLIDATION_DELAYgcloud container node-pools update node-pool-1 --cluster=example-cluster --consolidation-delay=3600s--containerd-config-from-file=PATH_TO_FILEFor detailed information on the configuration usage, please refer to https://cloud.google.com/kubernetes-engine/docs/how-to/customize-containerd-configuration.
Note: Updating the containerd configuration of an existing cluster or node pool requires recreation of the existing nodes, which might cause disruptions in running workloads.
Use a full or relative path to a local file containing the value of containerd_config.--enable-confidential-nodes--enable-gvnic--enable-image-streaming--no-enable-image-streaming.
--enable-insecure-kubelet-readonly-port--no-enable-insecure-kubelet-readonly-port.
--enable-kernel-module-signature-enforcement--no-enable-kernel-module-signature-enforcement to disable.
Examples:
gcloud container node-pools update node-pool-1 --enable-kernel-module-signature-enforcement--enable-private-nodes--enable-queued-provisioninggcloud container node-pools update node-pool-1 --cluster=example-cluster --enable-queued-provisioning
… and other required parameters, for more details see:
https://cloud.google.com/kubernetes-engine/docs/how-to/provisioningrequest--flex-startgcloud container node-pools update node-pool-1 --cluster=example-cluster --flex-start
and other required parameters, for more details see:
https://cloud.google.com/kubernetes-engine/docs/how-to/provisioningrequest--labels=[KEY=VALUE,…]Examples:
gcloud container node-pools update node-pool-1 --cluster=example-cluster --labels=label1=value1,label2=value2--logging-variant=LOGGING_VARIANTMAX_THROUGHPUT,
DEFAULT. LOGGING_VARIANT must be one of:
DEFAULTMAX_THROUGHPUT--max-run-duration=MAX_RUN_DURATIONgcloud container node-pools update node-pool-1 --cluster=example-cluster --max-run-duration=3600s--network-performance-configs=[PROPERTY=VALUE,…]total-egress-bandwidth-tier--node-architecture-taint-behavior=NODE_ARCHITECTURE_TAINT_BEHAVIORSupported values: * unspecified: Default behavior, currently the same as `arm`. * arm: kubernetes.io/arch=arm:NoSchedule taint will be added for ARM nodes. * none: No architecture taint will be applied.
gcloud container node-pools update node-pool-1 --cluster=example-cluster --node-architecture-taint-behavior=noneTo read more about node-taints, see https://cloud.google.com/kubernetes-engine/docs/node-taints.
NODE_ARCHITECTURE_TAINT_BEHAVIOR must be one of:
unspecified, arm, none.
--node-labels=[NODE_LABEL,…]Examples:
gcloud container node-pools update node-pool-1 --cluster=example-cluster --node-labels=label1=value1,label2=value2
Updating the node pool's --node-labels flag applies the labels to the Kubernetes
Node objects for existing nodes in-place; it does not re-create or replace
nodes. New nodes, including ones created by resizing or re-creating nodes, will
have these labels on the Kubernetes API Node object. The labels can be used in
the nodeSelector field. See https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
for examples.
--node-locations=ZONE,[ZONE,…]Multiple locations can be specified, separated by commas. For example:
gcloud container node-pools update node-pool-1 --cluster=sample-cluster --node-locations=us-central1-a,us-central1-b--node-taints=[NODE_TAINT,…]Examples:
gcloud container node-pools update node-pool-1 --cluster=example-cluster --node-taints=key1=val1:NoSchedule,key2=val2:PreferNoSchedule--resource-manager-tags=[KEY=VALUE,…]Examples:
gcloud container node-pools update example-node-pool --resource-manager-tags=tagKeys/1234=tagValues/2345gcloud container node-pools update example-node-pool --resource-manager-tags=my-project/key1=value1gcloud container node-pools update example-node-pool --resource-manager-tags=12345/key1=value1,23456/key2=value2gcloud container node-pools update example-node-pool --resource-manager-tags=
--storage-pools=STORAGE_POOL,[…]--system-config-from-file=PATH_TO_FILEExamples:
kubeletConfig: cpuManagerPolicy: static memoryManager: policy: Static topologyManager: policy: BestEffort scope: pod crashLoopBackOff: maxContainerRestartPeriod: '300s' linuxConfig: accurateTimeConfig: enablePtpKvmTimeSync: true sysctl: net.core.somaxconn: '2048' net.ipv4.tcp_rmem: '4096 87380 6291456' hugepageConfig: hugepage_size2m: '1024' hugepage_size1g: '2' swapConfig: enabled: true bootDiskProfile: swapSizeGib: 8 cgroupMode: 'CGROUP_MODE_V2' nodeKernelModuleLoading: policy: 'ENFORCE_SIGNED_MODULES'
List of supported kubelet configs in 'kubeletConfig'.
List of supported keys in memoryManager in 'kubeletConfig'.
KEY VALUE cpuManagerPolicy either 'static' or 'none' cpuCFSQuota true or false (enabled by default) cpuCFSQuotaPeriod interval (e.g., '100ms'. The value must be between 1ms and 1 second, inclusive.) memoryManager specify memory manager policy topologyManager specify topology manager policy and scope podPidsLimit integer (The value must be greater than or equal to 1024 and less than 4194304.) containerLogMaxSize positive number plus unit suffix (e.g., '100Mi', '0.2Gi'. The value must be between 10Mi and 500Mi, inclusive.) containerLogMaxFiles integer (The value must be between [2, 10].) imageGcLowThresholdPercent integer (The value must be between [10, 85], and lower than imageGcHighThresholdPercent.) imageGcHighThresholdPercent integer (The value must be between [10, 85], and greater than imageGcLowThresholdPercent.) imageMinimumGcAge interval (e.g., '100s', '1m'. The value must be less than '2m'.) imageMaximumGcAge interval (e.g., '100s', '1m'. The value must be greater than imageMinimumGcAge.) evictionSoft specify eviction soft thresholds evictionSoftGracePeriod specify eviction soft grace period evictionMinimumReclaim specify eviction minimum reclaim thresholds evictionMaxPodGracePeriodSeconds integer (Max grace period for pod termination during eviction, in seconds. The value must be between [0, 300].) shutdownGracePeriodSeconds integer (Grace period for pods terminating on node shutdown, in seconds. Allowed values: 0, 30, 120.) shutdownGracePeriodCriticalPodsSeconds integer (Grace period for critical pods terminating on node shutdown, in seconds. The value must be between [0, 120] and less than shutdownGracePeriodSeconds.) allowedUnsafeSysctls list of sysctls (Allowlisted groups: 'kernel.shm*', 'kernel.msg*', 'kernel.sem', 'fs.mqueue.*', and 'net.*', and sysctls under the groups.) singleProcessOomKill true or false maxParallelImagePulls integer (The value must be between [2, 5].) crashLoopBackOff specify crashloopbackoff thresholds
List of supported keys in topologyManager in 'kubeletConfig'.
KEY VALUE policy either 'Static' or 'None'
List of supported keys in evictionSoft in 'kubeletConfig'.
KEY VALUE policy either 'none' or 'best-effort' or 'single-numa-node' or 'restricted' scope either 'pod' or 'container'
List of supported keys in evictionSoftGracePeriod in 'kubeletConfig'.
KEY VALUE memoryAvailable quantity (e.g., '100Mi', '1Gi'. Represents the amount of memory available before soft eviction. The value must be at least 100Mi and less than 50% of the node's memory.) nodefsAvailable percentage (e.g., '20%'. Represents the nodefs available before soft eviction. The value must be between 10% and 50%, inclusive.) nodefsInodesFree percentage (e.g., '20%'. Represents the nodefs inodes free before soft eviction. The value must be between 5% and 50%, inclusive.) imagefsAvailable percentage (e.g., '20%'. Represents the imagefs available before soft eviction. The value must be between 15% and 50%, inclusive.) imagefsInodesFree percentage (e.g., '20%'. Represents the imagefs inodes free before soft eviction. The value must be between 5% and 50%, inclusive.) pidAvailable percentage (e.g., '20%'. Represents the pid available before soft eviction. The value must be between 10% and 50%, inclusive.)
List of supported keys in evictionMinimumReclaim in 'kubeletConfig'.
KEY VALUE memoryAvailable duration (e.g., '30s', '1m'. The grace period for soft eviction for this resource. The value must be positive and no more than '5m'.) nodefsAvailable duration (e.g., '30s', '1m'. The grace period for soft eviction for this resource. The value must be positive and no more than '5m'.) nodefsInodesFree duration (e.g., '30s', '1m'. The grace period for soft eviction for this resource. The value must be positive and no more than '5m'.) imagefsAvailable duration (e.g., '30s', '1m'. The grace period for soft eviction for this resource. The value must be positive and no more than '5m'.) imagefsInodesFree duration (e.g., '30s', '1m'. The grace period for soft eviction for this resource. The value must be positive and no more than '5m'.) pidAvailable duration (e.g., '30s', '1m'. The grace period for soft eviction for this resource. The value must be positive and no more than '5m'.)
List of supported keys in crashLoopBackOff in 'kubeletConfig'.
KEY VALUE memoryAvailable percentage (e.g., '5%'. Represents the minimum reclaim threshold for memory available. The value must be positive and no more than 10%.) nodefsAvailable percentage (e.g., '5%'. Represents the minimum reclaim threshold for nodefs available. The value must be positive and no more than 10%.) nodefsInodesFree percentage (e.g., '5%'. Represents the minimum reclaim threshold for nodefs inodes free. The value must be positive and no more than 10%.) imagefsAvailable percentage (e.g., '5%'. Represents the minimum reclaim threshold for imagefs available. The value must be positive and no more than 10%.) imagefsInodesFree percentage (e.g., '5%'. Represents the minimum reclaim threshold for imagefs inodes free. The value must be positive and no more than 10%.) pidAvailable percentage (e.g., '5%'. Represents the minimum reclaim threshold for pid available. The value must be positive and no more than 10%.)
List of supported sysctls in 'linuxConfig'.
KEY VALUE maxContainerRestartPeriod duration (e.g., '30s', '1m'. The maximum duration the backoff delay can accrue to for container restarts. The value must be between [1s, 300s].)
List of supported keys in 'accurateTimeConfig' under 'linuxConfig'.
KEY VALUE net.core.netdev_max_backlog Any positive integer, less than 2147483647 net.core.rmem_default Must be between [2304, 2147483647] net.core.rmem_max Must be between [2304, 2147483647] net.core.wmem_default Must be between [4608, 2147483647] net.core.wmem_max Must be between [4608, 2147483647] net.core.optmem_max Any positive integer, less than 2147483647 net.core.somaxconn Must be between [128, 2147483647] net.ipv4.tcp_rmem Any positive integer tuple net.ipv4.tcp_wmem Any positive integer tuple net.ipv4.tcp_tw_reuse Must be {0, 1, 2} net.ipv4.tcp_mtu_probing Must be {0, 1, 2} net.ipv4.tcp_max_orphans Must be between [16384, 262144] net.ipv4.tcp_max_tw_buckets Must be between [4096, 2147483647] net.ipv4.tcp_syn_retries Must be between [1, 127] net.ipv4.tcp_ecn Must be {0, 1, 2} net.ipv4.tcp_congestion_control Supported values for COS: 'reno', 'cubic', 'bbr', 'lp', 'htcp'. Supported values for Ubuntu: 'reno', 'cubic', 'bbr', 'lp', 'htcp', 'vegas', 'dctcp', 'bic', 'cdg', 'highspeed', 'hybla', 'illinois', 'nv', 'scalable', 'veno', 'westwood', 'yeah'. net.ipv4.neigh.default.gc_thresh1 Must be between [0, 262144] net.ipv4.neigh.default.gc_thresh2 Must be between [512, 524288] net.ipv4.neigh.default.gc_thresh3 Must be between [1024, 1048576] net.netfilter.nf_conntrack_max Must be between [65536, 4194304] net.netfilter.nf_conntrack_buckets Must be between [65536, 524288]. Recommend setting: nf_conntrack_max = nf_conntrack_buckets * 4 net.netfilter.nf_conntrack_tcp_timeout_close_wait Must be between [60, 3600] net.netfilter.nf_conntrack_tcp_timeout_time_wait Must be between [1, 600] net.netfilter.nf_conntrack_tcp_timeout_established Must be between [600, 86400] net.netfilter.nf_conntrack_acct Must be {0, 1} kernel.keys.maxkeys Must be between [200, 1048576] kernel.keys.maxbytes Must be between [20000, 2097152] kernel.shmmni Must be between [4096, 32768] kernel.shmmax Must be between [0, 18446744073692774399] kernel.shmall Must be between [0, 18446744073692774399] kernel.perf_event_paranoid Must be {-1, 0, 1, 2, 3} kernel.sched_rt_runtime_us Must be [-1, 1000000] kernel.softlockup_panic Must be {0, 1} kernel.yama.ptrace_scope Must be {0, 1, 2, 3} kernel.kptr_restrict Must be {0, 1, 2} kernel.dmesg_restrict Must be {0, 1} kernel.sysrq Must be [0, 511] fs.aio-max-nr Must be between [65536, 4194304] fs.file-max Must be between [104857, 67108864] fs.inotify.max_user_instances Must be between [8192, 1048576] fs.inotify.max_user_watches Must be between [8192, 1048576] fs.nr_open Must be between [1048576, 2147483584] vm.dirty_background_ratio Must be between [1, 100] vm.dirty_background_bytes Must be between [0, 68719476736] vm.dirty_expire_centisecs Must be between [0, 6000] vm.dirty_ratio Must be between [1, 100] vm.dirty_bytes Must be between [0, 68719476736] vm.dirty_writeback_centisecs Must be between [0, 1000] vm.max_map_count Must be between [65536, 2147483647] vm.overcommit_memory Must be one of {0, 1, 2}. Not supported on machines with less than 15 GB memory. vm.overcommit_ratio Must be between [0, 100] vm.vfs_cache_pressure Must be between [0, 100] vm.swappiness Must be between [0, 200] vm.watermark_scale_factor Must be between [10, 3000] vm.min_free_kbytes Must be between [67584, 1048576]
List of supported hugepage size in 'hugepageConfig'.
KEY VALUE enablePtpKvmTimeSync boolean
List of supported keys in 'swapConfig' under 'linuxConfig'.
KEY VALUE hugepage_size2m Number of 2M huge pages, any positive integer hugepage_size1g Number of 1G huge pages, any positive integer
List of supported keys in 'encryptionConfig' under 'swapConfig'.
KEY VALUE enabled boolean encryptionConfig specify encryption settings for the swap space bootDiskProfile specify swap on the node's boot disk ephemeralLocalSsdProfile specify swap on the local SSD shared with pod ephemeral storage dedicatedLocalSsdProfile specify swap on a new, separate local NVMe SSD exclusively for swap
List of supported keys in 'bootDiskProfile' under 'swapConfig'.
KEY VALUE disabled boolean
List of supported keys in 'ephemeralLocalSsdProfile' under 'swapConfig'.
KEY VALUE swapSizeGib integer swapSizePercent integer
List of supported keys in 'dedicatedLocalSsdProfile' under 'swapConfig'.
KEY VALUE swapSizeGib integer swapSizePercent integer
List of supported keys in 'nodeKernelModuleLoading'.
KEY VALUE diskCount integer
The upper limit for total allocated hugepage size differs based upon machine size.
KEY VALUE policy ENFORCE_SIGNED_MODULES, DO_NOT_ENFORCE_SIGNED_MODULES, POLICY_UNSPECIFIED
1G hugepages are only available in following machine familes: c3, m2, c2d, c3d, h3, m3, a2, a3, g2.
Supported values for 'cgroupMode' under 'linuxConfig'.
CGROUP_MODE_V1: Use cgroupv1 on the node pool.
CGROUP_MODE_V2: Use cgroupv2 on the node pool.
CGROUP_MODE_UNSPECIFIED: Use the default GKE cgroup configuration.
Supported values for 'transparentHugepageEnabled' under 'linuxConfig' which controls transparent hugepage support for anonymous memory.
TRANSPARENT_HUGEPAGE_ENABLED_ALWAYS: Transparent hugepage is
enabled system wide.
TRANSPARENT_HUGEPAGE_ENABLED_MADVISE: Transparent hugepage is
enabled inside MADV_HUGEPAGE regions. This is the default kernel configuration.
TRANSPARENT_HUGEPAGE_ENABLED_NEVER: Transparent hugepage is
disabled.
TRANSPARENT_HUGEPAGE_ENABLED_UNSPECIFIED: Default value. GKE will
not modify the kernel configuration.
Supported values for 'transparentHugepageDefrag' under 'linuxConfig' which defines the transparent hugepage defrag configuration on the node.
TRANSPARENT_HUGEPAGE_DEFRAG_ALWAYS: It means that an application
requesting THP will stall on allocation failure and directly reclaim pages and
compact memory in an effort to allocate a THP immediately.
TRANSPARENT_HUGEPAGE_DEFRAG_DEFER: It means that an application
will wake kswapd in the background to reclaim pages and wake kcompactd to
compact memory so that THP is available in the near future. It is the
responsibility of khugepaged to then install the THP pages later.
TRANSPARENT_HUGEPAGE_DEFRAG_DEFER_WITH_MADVISE: It means that an
application will enter direct reclaim and compaction like always, but only for
regions that have used madvise(MADV_HUGEPAGE); all other regions will wake
kswapd in the background to reclaim pages and wake kcompactd to compact memory
so that THP is available in the near future.
TRANSPARENT_HUGEPAGE_DEFRAG_MADVISE: It means that an application
will enter direct reclaim and compaction like always, but only for regions that
have used madvise(MADV_HUGEPAGE); all other regions will wake kswapd in the
background to reclaim pages and wake kcompactd to compact memory so that THP is
available in the near future.
TRANSPARENT_HUGEPAGE_DEFRAG_NEVER: It means that an application
will never enter direct reclaim or compaction.
TRANSPARENT_HUGEPAGE_DEFRAG_UNSPECIFIED: Default value. GKE will
not modify the kernel configuration.
Supported values for 'policy' under 'nodeKernelModuleLoading'.
POLICY_UNSPECIFIED: Default behavior. GKE selects the image based
on node type. For CPU and TPU nodes, the image will not allow loading external
kernel modules. For GPU nodes, the image will allow loading any module, whether
it is signed or not.
ENFORCE_SIGNED_MODULES: Enforced signature verification: Node pools
will use a Container-Optimized OS image configured to allow loading of
Google-signed external kernel modules. Loadpin is enabled but
configured to exclude modules, and kernel module signature checking is enforced.
DO_NOT_ENFORCE_SIGNED_MODULES: Do not enforce kernel module
signature enforcement. Mirrors existing DEFAULT behavior.
Note, updating the system configuration of an existing node pool requires recreation of the nodes which which might cause a disruption.
Use a full or relative path to a local file containing the value of system_config.--tags=[TAG,…]Examples:
gcloud container node-pools update node-pool-1 --cluster=example-cluster --tags=tag1,tag2--windows-os-version=WINDOWS_OS_VERSIONWINDOWS_OS_VERSION must be one of:
ltsc2019, ltsc2022.
--workload-metadata=WORKLOAD_METADATAWORKLOAD_METADATA must be one of:
GCE_METADATAGKE_METADATA--add-maintenance-exclusion-until-end-of-support--remove-maintenance-exclusion-until-end-of-support--autoscaled-rollout-policy=[wait-for-drain-duration=WAIT-FOR-DRAIN-DURATION]wait-for-drain-durationExamples:
gcloud container node-pools update node-pool-1 --cluster=example-cluster --enable-blue-green-upgrade --autoscaled-rollout-policy=""gcloud container node-pools update node-pool-1 --cluster=example-cluster --enable-blue-green-upgrade --autoscaled-rollout-policy=wait-for-drain-duration=7200s--enable-blue-green-upgrade--enable-surge-upgrade--max-surge-upgrade=MAX_SURGE_UPGRADESpecifies the number of extra (surge) nodes to be created during this node pool's upgrades. For example, running the following command will result in creating an extra node each time the node pool is upgraded:
gcloud container node-pools update node-pool-1 --cluster=example-cluster --max-surge-upgrade=1 --max-unavailable-upgrade=0--max-unavailable-upgrade=MAX_UNAVAILABLE_UPGRADESpecifies the number of nodes that can be unavailable at the same time during this node pool's upgrades. For example, assume the node pool has 5 nodes, running the following command will result in having 3 nodes being upgraded in parallel (1 + 2), but keeping always at least 3 (5 - 2) available each time the node pool is upgraded:
gcloud container node-pools update node-pool-1 --cluster=example-cluster --max-surge-upgrade=1 --max-unavailable-upgrade=2--node-pool-soak-duration=NODE_POOL_SOAK_DURATIONgcloud container node-pools update node-pool-1 --cluster=example-cluster --node-pool-soak-duration=600s--standard-rollout-policy=[batch-node-count=BATCH_NODE_COUNT,batch-percent=BATCH_NODE_PERCENTAGE,batch-soak-duration=BATCH_SOAK_DURATION,…]Batch sizes are specified by one of, batch-node-count or batch-percent. The duration between batches is specified by batch-soak-duration.
gcloud container node-pools update node-pool-1 --cluster=example-cluster --standard-rollout-policy=batch-node-count=3,batch-soak-duration=60sgcloud container node-pools update node-pool-1 --cluster=example-cluster --standard-rollout-policy=batch-percent=0.3,batch-soak-duration=60s--boot-disk-provisioned-iops=BOOT_DISK_PROVISIONED_IOPS--boot-disk-provisioned-throughput=BOOT_DISK_PROVISIONED_THROUGHPUT--disk-size=DISK_SIZE--disk-type=DISK_TYPEDISK_TYPE must be one of: pd-standard,
pd-ssd, pd-balanced, hyperdisk-balanced,
hyperdisk-extreme, hyperdisk-throughput.
--machine-type=MACHINE_TYPEgcloud compute machine-types listYou can also specify custom machine types by providing a string with the format "custom-CPUS-RAM" where "CPUS" is the number of virtual CPUs and "RAM" is the amount of RAM in MiB.
For example, to create a node pool using custom machines with 2 vCPUs and 12 GB of RAM:
gcloud container node-pools update high-mem-pool --machine-type=custom-2-12288--enable-autoprovisioning--enable-autoscaling--location-policy=LOCATION_POLICYBALANCED - Is a best effort policy that aims to balance the sizes
of available zones.
ANY - Instructs the cluster autoscaler to prioritize utilization of
unused reservations, and reduces preemption risk for Spot VMs.
LOCATION_POLICY must be one of: BALANCED,
ANY.
--max-nodes=MAX_NODES--min-nodes=MIN_NODES--total-max-nodes=TOTAL_MAX_NODES--total-min-nodes=TOTAL_MIN_NODES--enable-autorepairgcloud container node-pools update node-pool-1 --cluster=example-cluster --enable-autorepair--enable-autoupgradegcloud container node-pools update node-pool-1 --cluster=example-cluster --enable-autoupgrade--node-drain-grace-period-seconds=NODE_DRAIN_GRACE_PERIOD_SECONDS--node-drain-pdb-timeout-seconds=NODE_DRAIN_PDB_TIMEOUT_SECONDS--respect-pdb-during-node-pool-deletion--async--cluster=CLUSTERcontainer/cluster
property value for this command invocation.
--location=LOCATION--region=REGION--zone=ZONE, -z ZONE--access-token-file,
--account, --billing-project,
--configuration,
--flags-file,
--flatten, --format, --help, --impersonate-service-account,
--log-http,
--project, --quiet, --trace-token, --user-output-enabled,
--verbosity.
Run $ gcloud help for details.
gcloud alpha container node-pools updategcloud beta container node-pools update
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2026-05-27 UTC.