Understanding how your current version and target version affect your cluster upgrade helps you verify version skew, upgrade order, and OS requirements before you begin.
Version-specific upgrade information
The following table describes version-specific upgrade information. Following the table, you can find details about specific releases. Versions are ordered from newest to oldest. Find the version you are upgrading to for the specific details and rules that apply to your cluster.
| Version | Upgrade first | Control plane (CP) versions | Worker node pool versions | Advanced cluster status | Legacy features supported? | Default & required OS images | Kubeception node upgrade behavior | Bundled cert-manager |
|---|---|---|---|---|---|---|---|---|
| 1.36 | Admin cluster | 1.36, 1.35, 1.34 | 1.36, 1.35, 1.34 | Mandatory | None | ubuntu_cgv2, cos_cgv2 |
Unsupported | Bundled |
| 1.35 | Admin cluster | 1.35, 1.34, 1.33 | 1.35, 1.34, 1.33 | Mandatory | None | ubuntu_cgv2, cos_cgv2 mandatory (cgroup v1 dropped) |
Unsupported | Bundled |
| 1.34 | Admin cluster | 1.34, 1.33, 1.32 | 1.34, 1.33, 1.32 | Mandatory (no opt-out; non-advanced auto-converted) | None | ubuntu_cgv2 (default), cos_cgv2, ubuntu_containerd, cos |
Unsupported | Bundled |
| 1.33 | Admin cluster | 1.33, 1.32, 1.31 | 1.33, 1.32, 1.31 | Default (auto-conversion) (opt-out only for 1.32 to 1.33) | None | ubuntu_cgv2 (default), cos_cgv2, ubuntu_containerd, cos |
Unsupported | Bundled for advanced clusters |
| 1.32 | Admin cluster | 1.32, 1.31, 1.30 | 1.32, 1.31, 1.30 | GA (Upgrades supported; separate & skip node upgrades supported) | None | ubuntu_cgv2 (default), cos_cgv2, ubuntu_containerd, cos |
Unsupported (must migrate to Controlplane V2) | Bundled for advanced clusters |
| 1.31 | Admin cluster | 1.31, 1.30, 1.29 | 1.31, 1.30, 1.29 | Preview (no upgrade to 1.32; no separate or skip node upgrades) | Yes (Seesaw, F5, Kubeception, non-HA); migration to recommended features strongly advised; Dataplane V2 mandatory | ubuntu_cgv2 (default), cos_cgv2, ubuntu_containerd, cos |
Admin nodes upgraded with admin; user CP nodes upgraded with user cluster | Not bundled |
| 1.30 | User cluster | 1.30 | 1.30, 1.29, 1.28 | Not available | Yes (Seesaw, F5, Kubeception, non-HA); migration to recommended features strongly advised | ubuntu_cgv2 (default), cos_cgv2, ubuntu_containerd, cos |
CP & admin nodes upgraded during admin cluster upgrade | Not bundled |
| 1.29 | User cluster | 1.29, 1.30 | 1.29, 1.28, 1.16 | Not available | Yes (Seesaw, F5, Kubeception, non-HA) | ubuntu_cgv2 (default), cos_cgv2, ubuntu_containerd, cos |
CP & admin nodes upgraded during admin cluster upgrade | Not bundled |
| 1.28 | User cluster | 1.28, 1.29, 1.30 | 1.28, 1.16, 1.15 | Not available | Yes (Seesaw, F5, Kubeception, non-HA) | ubuntu_containerd (default), cos, ubuntu_cgv2, cos_cgv2 |
CP & admin nodes upgraded during admin cluster upgrade | Not bundled |
For all versions, you must upgrade load balancer node pool versions (node pools
with enableLoadBalancer: true) at the same time and to the same version as
the user cluster control plane.
Upgrade information by release version
Find the section for the version you're upgrading to for specific information you need to upgrade to that version.
Release 1.36
Upgrade first: Admin cluster
- Admin cluster at 1.36 can manage user clusters at 1.36, 1.35, and 1.34.
- User cluster control plane versions: 1.36, 1.35, or 1.34.
- Worker node pool versions: 1.36, 1.35, or 1.34.
Advanced cluster status: Advanced clusters are mandatory.
Skip node upgrades: Supported.
Legacy features supported: No. Blocks upgrade.
Default and required OS images: ubuntu_cgv2, cos_cgv2. Default osImageType
for new configurations is ubuntu_cgv2.
Kubeception node upgrade behavior: Unsupported. Blocks upgrade.
Upgrade tools:
gkectl: Required for admin clusters. Supported versions are 1.36, 1.37, and 1.38.- Terraform: Supported if you created the user cluster using Terraform.
- Google Cloud console: Supported for user cluster upgrades.
- Google Cloud CLI: Supported for user cluster upgrades.
Additional requirements:
- You can run admin cluster upgrades asynchronously with
gkectl upgrade admin --async.
Release 1.35
Upgrade first: Admin cluster
- Admin cluster at 1.35 can manage user clusters at 1.35, 1.34, and 1.33.
- User cluster control plane versions: 1.35, 1.34, or 1.33.
- Worker node pool versions: 1.35, 1.34, or 1.33.
Advanced cluster status: Advanced clusters are mandatory.
Skip node upgrades: Supported.
Legacy features supported: No. Blocks upgrade.
Default and required OS images: ubuntu_cgv2, cos_cgv2 mandatory (cgroup v1
dropped). Default osImageType for new configurations is ubuntu_cgv2. You must
migrate clusters to cgroup v2 before you upgrade.
Kubeception node upgrade behavior: Unsupported. Blocks upgrade.
Upgrade tools:
gkectl: Required for admin clusters. Supported versions are 1.35, 1.36, and 1.37.- Terraform: Supported if you created the user cluster using Terraform.
- console: Supported for user cluster upgrades.
- gcloud CLI: Supported for user cluster upgrades.
Additional requirements:
- You can run admin cluster upgrades asynchronously with
gkectl upgrade admin --async.
Release 1.34
Upgrade first: Admin cluster
- Admin cluster at 1.34 can manage user clusters at 1.34, 1.33, and 1.32.
- User cluster control plane versions: 1.34, 1.33, or 1.32.
Worker node pool versions: 1.34, 1.33, or 1.32.
Advanced cluster status: Advanced clusters are mandatory.
Skip node upgrades: Supported.
Legacy features supported: No. Blocks upgrade.
Default and required OS images: ubuntu_cgv2, cos_cgv2,
ubuntu_containerd, cos. Default osImageType is ubuntu_cgv2.
Kubeception node upgrade behavior: Unsupported. Blocks upgrade.
Upgrade tools:
gkectl: Required for admin clusters. Required to convert non-advanced clusters to advanced clusters (mandatory in 1.34; thegkectlbinary version must exactly match the target release version). Supported versions are 1.34, 1.35, and 1.36.- Terraform: Supported if you created the user cluster using Terraform.
- console: Supported for advanced user cluster upgrades.
- gcloud CLI: Supported for advanced user cluster upgrades.
Additional requirements:
The following additional requirements apply to upgrades to version 1.34:
Non-advanced clusters automatically convert to advanced clusters when you upgrade to 1.34. For information about the specific rules for upgrades from non-advanced to advanced clusters, see Update or upgrade a cluster to an advanced cluster.
Bundled
cert-manageris mandatory and updated to version 1.19, overriding pre-existing customcert-managerinstallations. For more information about upgrades to bundledcert-manager, see Use bundledcert-manager.Node container runtime upgraded to containerd 2.0. This can have the following impacts:
- containerd 2.0 doesn't support legacy Docker Image Manifest v2 or Schema 1 images. Make sure workloads pull container images using Docker Schema 2 or an OCI-compliant format before you upgrade to 1.34.
- Registry mirror configuration is migrated to the hosts.toml format in containerd 2.0. If you manage custom mirror configurations or air-gapped registry endpoints directly on your nodes, verify that your configuration aligns with hosts.toml.
- If you use custom DaemonSets or scripts that patch /etc/containerd/config.toml, make sure they don't use deprecated containerd v1 configuration options, which can cause containerd startup failures with containerd 2.0.
The default value of the
nodePoolUpdatePolicy.maximumConcurrentNodePoolUpdatefield changed in version 1.34.300. If you want sequential node pool upgrades in versions 1.34.300+, setnodePoolUpdatePolicy.maximumConcurrentNodePoolUpdate: 1in your user cluster configuration file:- For versions 1.34.0-1.34.200,
nodePoolUpdatePolicy.maximumConcurrentNodePoolUpdatedefaults to1, which updates one node pool at a time sequentially. - For versions 1.34.300+,
nodePoolUpdatePolicy.maximumConcurrentNodePoolUpdatedefaults to0, which updates all node pools concurrently.
For more information, see Configure node pool update policy.
- For versions 1.34.0-1.34.200,
Upgrade preflight checks actively validate all
PodDisruptionBudget(PDB) configurations across the cluster. Before you upgrade, verify that your workloads don't have overly restrictive PDBs (for example,maxUnavailable: 0orminAvailablematching total replicas) that block node draining or preflight checks can fail.If an upgrade is interrupted, upgrade directly to version 1.34.300-gke.59 or higher. This version prevents the bootstrap cluster from being deleted if you need to rerun
gkectl upgrade adminafter a failure. For more information, see Rerunninggkectl upgrade admindeletes the bootstrap cluster.You can run admin cluster upgrades asynchronously with
gkectl upgrade admin --asyncfor advanced clusters except when you convert from non-advanced to an advanced cluster.
Release 1.33
Upgrade first: Admin cluster
- Admin cluster at 1.33 can manage user clusters at 1.33, 1.32, and 1.31.
- User cluster control plane versions: 1.33, 1.32, or 1.31.
Worker node pool versions: 1.33, 1.32, or 1.31.
Advanced cluster status: Advanced clusters are the default cluster type and
are converted automatically. Opt-out allowed. For more information, see
Upgrade and maintain non-advanced clusters. If you set enableAdvancedCluster to
false, new cluster creation fails.
Skip node upgrades: Supported.
Legacy features supported: No. Blocks upgrade.
Default and required OS images: ubuntu_cgv2, cos_cgv2,
ubuntu_containerd, cos. Default osImageType is ubuntu_cgv2.
Kubeception node upgrade behavior: Unsupported. Blocks upgrade.
Upgrade tools:
gkectl: Required to convert non-advanced clusters to advanced clusters (thegkectlbinary version must exactly match the target release version). Required for admin clusters. Supported versions are 1.33, 1.34, and 1.35.- Terraform: Supported if you created the user cluster using Terraform.
- console: Supported for advanced user cluster upgrades.
- gcloud CLI: Supported for advanced user cluster upgrades.
Additional requirements:
The following additional requirements apply to upgrades to version 1.33:
Upgrades from 1.32 to 1.33 automatically convert non-advanced clusters to advanced clusters by default. You can keep clusters non-advanced. For more information on how to keep clusters non-advanced, see Upgrade and maintain non-advanced clusters.
Advanced clusters automatically install and bundle
cert-managerv1.18, overriding pre-existing customcert-managerinstallations. For more information about upgrades to bundledcert-manager, see Use bundledcert-manager.If you upgrade to advanced clusters in this release, the
gkectlbinary version must exactly match the target release version when you convert from non-advanced to advanced clusters. This requirement only applies during the upgrade to an advanced cluster. For all other upgrades on your advanced cluster, the standard version skew rules are in effect.If an upgrade is interrupted, upgrade directly to version 1.33.700-gke.71 or higher. This version prevents the bootstrap cluster from being deleted if you need to rerun
gkectl upgrade adminafter a failure.You can run admin cluster upgrades asynchronously with
gkectl upgrade admin --asyncfor advanced clusters and non-advanced HA clusters if all user clusters run Controlplane V2. You can't use the--asyncflag when you convert from non-advanced to an advanced cluster.
Release 1.32
Upgrade first: Admin cluster
- Admin cluster at 1.32 can manage user clusters at 1.32, 1.31, and 1.30.
- User cluster control plane versions: 1.32, 1.31, or 1.30.
Worker node pool versions: 1.32, 1.31, or 1.30.
Advanced cluster status: Supported.
Skip node upgrades: Supported.
Legacy features supported: No. Blocks upgrade.
Default and required OS images: ubuntu_cgv2, cos_cgv2,
ubuntu_containerd, cos. Default osImageType is ubuntu_cgv2.
Kubeception node upgrade behavior: Unsupported. Blocks upgrade. Must migrate to Controlplane V2.
Upgrade tools:
gkectl: Required to convert non-advanced clusters to advanced clusters (thegkectlbinary version must exactly match the target release version). Required for admin clusters. Supported versions are 1.32, 1.33, and 1.34.- Terraform: Supported if you created the user cluster using Terraform.
- console: Supported for advanced user cluster upgrades.
- gcloud CLI: Supported for advanced user cluster upgrades.
Additional requirements:
The following additional requirements apply to upgrades to version 1.32:
This is the first version that allows an optional upgrade to a fully-supported GA advanced cluster. You can choose to:
Upgrade to a non-advanced cluster and maintain the non-advanced cluster. If you choose this option, you can do the following, starting in this release:
- Upgrade the user cluster's control plane and the worker node pools separately. The worker node pools can be up to 2 minor versions behind the control plane.
- Run the upgrade asynchronously for admin and user clusters.
Upgrade to a non-advanced cluster and then convert the non-advanced cluster to an advanced cluster. If you choose this option, you can do the following, starting in this release:
- Upgrade the user cluster's control plane and the worker node pools separately when you upgrade the non-advanced cluster, but not when you convert to an advanced cluster. The worker node pools can be up to 2 minor versions behind the control plane.
- Run the upgrade asynchronously for admin and user clusters when you upgrade the non-advanced cluster.
- When you convert to the advanced cluster, upgrade to release version 1.32.1000-gke.57 or higher because it incorporates a fix to a known issue that prevents the bootstrap cluster from being deleted.
Upgrade to an advanced cluster directly. If you choose this option, the following applies, starting in this release:
- You must upgrade the control plane and all node pools together.
- You can run the upgrade asynchronously for user clusters, but not admin clusters.
- Upgrade to release version 1.32.1000-gke.57 or higher because it incorporates a fix to a known issue that prevents the bootstrap cluster from being deleted.
The following legacy features aren't supported starting with this version. For more information, see Legacy features:
- Dataplane V1 (Calico). Upgrade to Dataplane V2 before upgrading to 1.32.
- Seesaw. Upgrade to an alternative load balancer before upgrading to 1.32.
- Integrated F5 BIG-IP. Upgrade to an alternative load balancer before upgrading to 1.32.
- Kubeception. Upgrade to a non-Kubeception cluster before upgrading to 1.32.
- Non-HA admin clusters. Upgrade to an HA admin cluster before upgrading to 1.32.
The
gkectlbinary version must exactly match the target release version when you convert from non-advanced to advanced clusters. This requirement only applies during the upgrade to an advanced cluster. For all other upgrades on your advanced cluster, the standard version skew rules are in effect.If an upgrade is interrupted, upgrade directly to version 1.32.1000-gke.57 or higher. This version prevents the bootstrap cluster from being deleted if you need to rerun
gkectl upgrade adminafter a failure.In version 1.32 and later, you can run admin cluster upgrades asynchronously with
gkectl upgrade admin --asyncfor advanced clusters and non-advanced HA clusters if all user clusters run Controlplane V2. You can't use the--asyncflag when you convert from non-advanced to an advanced cluster.
Release 1.31
Upgrade first: Admin cluster
- Admin cluster at 1.31 can manage user clusters at 1.31, 1.30, and 1.29.
- User cluster control plane versions: 1.31, 1.30, or 1.29.
- Worker node pool versions: 1.31, 1.30, or 1.29. (Not supported on 1.31 advanced clusters).
- To upgrade from 1.29/1.30 to 1.31, you must upgrade all clusters to version 1.30 before you upgrade the admin cluster to 1.31.
Advanced cluster status: Preview only. Can't upgrade to higher versions.
Skip node upgrades: Supported.
Legacy features supported: Dataplane V2 mandatory; Kubeception, Seesaw, and F5 still supported.
Default and required OS images: ubuntu_cgv2, cos_cgv2,
ubuntu_containerd, cos. Default osImageType is ubuntu_cgv2.
Kubeception node upgrade behavior: Admin nodes upgraded with admin cluster; user CP nodes upgraded with user cluster.
Upgrade tools:
gkectl: Required for admin clusters, non-advanced clusters, and advanced clusters (preview, for this release). Supported versions are 1.31, 1.32, and 1.33.- Terraform: Supported for enrolled user clusters if you created the user cluster using Terraform.
- console: Supported for enrolled user cluster upgrades.
- gcloud CLI: Supported for enrolled user cluster upgrades.
Additional requirements:
The following additional requirements apply to upgrades to version 1.31:
This release introduced advanced clusters in preview mode. You can't migrate non-advanced clusters to advanced clusters in this release. You can create new clusters as advanced clusters, but you can't upgrade these preview-version advanced clusters to a higher version. We don't recommend creating advanced clusters in this release. For more information on product launch stages, like preview, see Product launch stages.
In 1.31 and later, the architecture of upgrades changed to a model where the admin cluster must now be higher than or equal to its user clusters. Previously, user clusters could be up to two minor versions ahead of the admin cluster.
You must upgrade the admin cluster before you upgrade the user clusters managed by the admin cluster. Admin clusters can manage user clusters with the same minor version or up to 2 minor versions lower. For example, an admin cluster at version 1.31 can manage user clusters at versions 1.31, 1.30, and 1.29.
To upgrade from 1.29 to 1.31, you must stage the 1.30 bundle as an intermediate step. You must download both the 1.30 and 1.31 bundles on the admin workstation to upgrade to 1.31. To perform a skip-version upgrade from 1.29 to 1.31, do the following:
- Upgrade only the user cluster control plane from 1.29 to 1.30 (leaving worker node pools at 1.29).
- Upgrade the admin cluster from 1.29 to 1.30.
- Upgrade the admin cluster from 1.30 to the target 1.31.
- Upgrade the user cluster control plane and worker node pools together to 1.31.
If you use Kubeception, the admin cluster nodes are upgraded during the admin cluster upgrade and the user cluster control plane nodes are upgraded during the user cluster upgrade.
To upgrade to 1.31, you must enable Dataplane V2. To prevent network policy conflicts and traffic drops during CNI migration, you must manually save and then delete all
NetworkPolicyobjects and restore them after the upgrade. To transition to Dataplane V2, do the following:Export and save all your custom network policies:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \ get networkpolicy -A -o wide \ --field-selector metadata.namespace!=kube-system kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \ get networkpolicy POLICY_NAME \ -n NAMESPACE -o yaml > policy.yamlReplace the following:
USER_CLUSTER_KUBECONFIG: the path of the kubeconfig file for the user clusterPOLICY_NAME: the name of theNetworkPolicyobjectNAMESPACE: the namespace of theNetworkPolicyobject
Delete the network policies from the cluster:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \ delete networkpolicy POLICY_NAME \ -n NAMESPACESet
enableDataplaneV2: truein the user cluster configuration file and perform the upgrade to 1.31.Apply the saved policies after the 1.31 upgrade completes so Cilium compiles them cleanly into extended Berkeley Packet Filter (eBPF):
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \ apply -f policy.yaml
If you have HA admin clusters, and all user clusters run Controlplane V2, you can run the upgrade asynchronously with the
gkectl upgrade admin --asynccommand.Dataplane V2 is required for all user clusters. Before you upgrade a user cluster to version 1.31, follow the steps in Enable Dataplane V2.
Legacy features aren't supported in 1.32 and you can replace them in 1.30 and 1.31 to prevent issues when you upgrade to 1.32.
Release 1.30
Upgrade first: User cluster
- User cluster at 1.30 can be managed by an admin cluster at 1.30, 1.29, or 1.28.
- Admin cluster at 1.30 can only manage user clusters at 1.30. All user clusters and the admin cluster must reach 1.30 before you can upgrade the admin cluster to 1.31, and you must upgrade the admin cluster to 1.31 before any user cluster can upgrade to 1.31.
- User cluster control plane versions: 1.30.
- Worker node pool versions: 1.30, 1.29, or 1.28.
Advanced cluster status: Not available.
Skip node upgrades: Supported.
Legacy features supported: Supported. Migration to recommended features strongly advised.
Default and required OS images: ubuntu_cgv2, cos_cgv2,
ubuntu_containerd, cos. Default osImageType is ubuntu_cgv2.
- Kubeception node upgrade behavior:** Control plane & admin nodes upgrade during admin cluster upgrade
Upgrade tools:
gkectl: Required for admin clusters. Supported versions are 1.30, 1.31, and 1.32.- Terraform: Supported for enrolled user clusters if you created the user cluster using Terraform.
- console: Supported for enrolled user cluster upgrades.
- gcloud CLI: Supported for enrolled user cluster upgrades.
Additional requirements:
The following additional requirements apply to upgrades to version 1.30:
For this version and all previous versions, you must migrate all user clusters before you upgrade the managing admin cluster. The admin cluster must be at the same or a lower minor version than any managed user cluster.
If you use Kubeception the following is what happens during an upgrade:
- Upgrade the user cluster. Because the user control plane lives inside the
admin cluster, running
gkectl upgrade clusteronly upgrades the worker node pools. - Upgrade the admin cluster. The admin cluster upgrade upgrades the admin nodes and automatically upgrades all the user cluster control planes at the same time.
- Upgrade the user cluster. Because the user control plane lives inside the
admin cluster, running
If you have Controlplane V2, the following is what happens during the upgrade:
- Upgrade the user cluster. This upgrades the control plane and worker node pools.
- Upgrade the admin cluster. This upgrades the admin nodes.
When you create a new user cluster, you must set the
enableControlplaneV2field totrue, which is the default, starting in this release. If you set theenableControlplaneV2field tofalse,gkectlrejects the file and won't create the cluster.If you have HA admin clusters, and all user clusters run Controlplane V2, you can run the upgrade asynchronously with the
gkectl upgrade admin --asynccommand.Legacy features aren't supported in 1.32 and you can replace them in 1.30 and 1.31 to prevent issues when you upgrade to 1.32.
Release 1.29
Upgrade first: User cluster
- User cluster at 1.29 can be managed by an admin cluster at 1.29, 1.28, or 1.16.
- Admin cluster at 1.29 can manage user clusters at 1.29 and 1.30. An admin cluster at 1.29 can't manage user clusters at 1.31 because all clusters must first reach 1.30 and the admin cluster must be upgraded to 1.31 before any user cluster can upgrade to 1.31.
- User cluster control plane versions: 1.29 or 1.30, which is up to 1 minor version higher.
- Worker node pool versions: 1.29, 1.28, or 1.16.
Advanced cluster status: Not available.
Skip node upgrades: Supported.
Legacy features supported: Supported.
Default and required OS images: ubuntu_cgv2, cos_cgv2,
ubuntu_containerd, cos. Default osImageType is ubuntu_cgv2.
Kubeception node upgrade behavior: Control plane & admin nodes upgrade during admin cluster upgrade
Upgrade tools:
gkectl: Required for admin clusters. Supported versions are 1.29, 1.30, and 1.31.- Terraform: Supported for enrolled user clusters if you created the user cluster using Terraform.
- console: Supported for enrolled user cluster upgrades.
- gcloud CLI: Supported for enrolled user cluster upgrades.
Additional requirements:
The following additional requirements apply to upgrades to version 1.29:
- Worker nodes can be up to 2 minor versions behind the control plane (n+2).
- You can skip a minor version when you upgrade worker node pools. For example, you can upgrade a worker node pool from 1.28 to 1.30.
- Preflight checks run as pods inside the admin cluster or a temporary bootstrap kind cluster, instead of on the admin workstation.
- Starting with this version, you can run a preflight check without upgrading
the cluster using
gkectl upgrade cluster --dry-run. - If you have HA admin clusters, and all user clusters run Controlplane V2, you
can run the upgrade asynchronously with the
gkectl upgrade admin --asynccommand.
Release 1.28
Upgrade first: User cluster
- User cluster at 1.28 can be managed by an admin cluster at 1.28, 1.16, or 1.15.
- Admin cluster at 1.28 can manage user clusters at 1.28, 1.29, and 1.30.
- User cluster control plane versions: 1.28, 1.29, or 1.30, which is up to 2 minor versions higher.
- Worker node pool versions: 1.28, 1.16, or 1.15, which is up to 2 minor versions lower.
Advanced cluster status: Not available.
Skip node upgrades: Supported.
Legacy features supported: Supported.
Default and required OS images: ubuntu_containerd, cos, ubuntu_cgv2,
cos_cgv2. Default osImageType is ubuntu_containerd.
Kubeception node upgrade behavior: Control plane & admin nodes upgrade during admin cluster upgrade
Upgrade tools:
gkectl: Required for admin clusters. Supported versions are 1.28, 1.29, and 1.30.- Terraform: Supported for enrolled user clusters if you created the user cluster using Terraform.
- console: Supported for enrolled user cluster upgrades.
- gcloud CLI: Supported for enrolled user cluster upgrades.
Additional requirements:
The following additional requirements apply to upgrades to version 1.28:
You must enable
kubernetesmetadata.googleapis.comand grantroles/kubernetesmetadata.publisherto the logging-monitoring service account. If you don't, preflight checks can fail or you might see403 PERMISSION_DENIEDerrors. Enable the API and grant the role to the existing logging-monitoring service account:gcloud services enable kubernetesmetadata.googleapis.com gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:LOGGING_SA" \ --role="roles/kubernetesmetadata.publisher"Replace the following:
PROJECT_ID: the ID of the fleet host project in which the user cluster is a member.LOGGING_SA: the email address of your logging-monitoring service account.
Even though it is technically possible to skip versions during a node pool upgrade, this feature was introduced as a preview feature and it is not recommended for this version. For more information on product launch stages, like preview, see Product launch stages.
Node pools with a bundled load balancer must exactly match the cluster version.
You can upgrade multiple nodes at the same time by setting the
nodePools[i].updateStrategy.rollingUpdate.maxSurgefield. Your vSphere cluster must have enough CPU, RAM, and available IP addresses to accommodate the extra surge VMs during the upgrade:- Set
maxSurge: 1(default) to upgrade one node at a time (drain, replace, verify, then repeat). - Set
maxSurge: N(whereN > 1) to provision and drain up toNworker nodes at the same time (for example,maxSurge: 3upgrades 3 worker nodes concurrently).
- Set
You must have at least 100 GB of free disk space on your admin workstation to upgrade the admin workstation.
The
gkectlversion you use to upgrade can be up to two minor versions higher than the current cluster. You can't use a lower minor version.
Releases before 1.28
The following additional requirements apply to upgrades to releases earlier than version 1.28. There were no release versions between 1.16 and 1.28:
Release 1.16:
- Version skew between admin and user clusters and between control plane and node pools can only be 1 minor version apart. For example, an admin cluster at 1.15 can only manage user clusters with versions 1.15 or 1.16. A user cluster control plane upgraded to 1.16 can manage worker node pools running version 1.15 or 1.16. A pool at version 1.14 must be upgraded to 1.15 before the control plane can move to version 1.16. For more information about version skews, see Version skew rules.
- Clusters are automatically enrolled in the GKE On-Prem API when created or upgraded to 1.16. With this change, you can view, monitor, and upgrade user clusters using console, gcloud CLI CLI, and Terraform instead of only the admin workstation shell.
Release 1.14:
- You can upgrade only the user cluster control plane first, so that you don't have to drain and upgrade every worker node pool at the same time.
- During upgrade, the system automatically inspects and updates the existing admin and user cluster kubeconfig files on the workstation, renewing credentials automatically.
Release 1.13:
- Before this version, you could have an offline admin cluster. This release requires you to register your admin cluster to Google Cloud. For information on how to register a cluster, see Register an existing cluster.
- To upgrade a cluster to Google Distributed Cloud software only for VMware version 1.13 or later, you must first update any user cluster node pools that still use Docker Engine to containerd.
Use bundled cert-manager
You must use the bundled cert-manager, which is automatically
installed on advanced clusters. When you migrate from a non-advanced cluster to
an advanced cluster, the integrated cert-manager automatically overrides any
customer-installed versions of cert-manager.
Make sure you don't have critical custom configurations or features applied to
your existing cert-manager before you update or upgrade to advanced clusters.
To see if you applied critical custom configurations or features to your
cert-manager, do the following:
- Suspend continuous deployment tools. If you manage
cert-managerusing GitOps tools (such as Config Sync, ArgoCD, or Flux), suspend synchronization or removecert-managermanifests from your repository before you upgrade. If a GitOps controller attempts to reconcilecert-managerback to an older version or custom manifest while the cluster upgrade runs, it creates a reconciliation loop that can stall the cluster upgrade. - Don't manually uninstall or delete
cert-managerpods, namespaces, or CRDs before you upgrade.gkectlmanages these upgrades in-place. - If you modified
cert-managerdeployment flags, node selectors, or pod resource limits, revert them. Advanced clusters don't support custom binary arguments or deployment-level overrides oncert-manager. - If you use specialized external issuers, private ACME DNS-01 webhook plugins,
or custom webhooks, verify that your third-party plugins are compatible
with the bundled
cert-managerversion for the release you are upgrading to.
For more information, see
Upgrade to cert-manager bundled with advanced clusters.
The following table lists which release versions require bundled cert-manager:
| Version | Status for new clusters | Status for existing cluster upgrades | Bundled cert-manager required? |
|---|---|---|---|
| 1.34+ | Mandatory | Mandatory conversion (v1.19 bundled) | Universally required for all customers. Non-advanced clusters can no longer exist. |
| 1.33 | Standard / Default for all new clusters | Auto-converts to advanced clusters by default (v1.18 bundled) | Required for almost all clusters, unless explicitly opting out with enableAdvancedCluster: false (1.32 → 1.33 only). |
| 1.32 (GA) | Enabled by default | Optional conversion to advanced clusters | Required if advanced clusters is enabled. |
| 1.31 (Preview) | Optional (enableAdvancedCluster: true) |
Not supported | Required if advanced clusters is enabled. |
To see which cert-manager version is bundled with each supported release, see
Bundled cert-manager versions.
Controlplane V2
When Controlplane V2 is enabled, the control plane for the user cluster runs on the user cluster itself. For Controlplane V2, the user cluster control plane nodes are upgraded during the user cluster upgrade, and the admin cluster control plane nodes are upgraded during the admin cluster upgrade.
Legacy features
The following table lists legacy features that are blocked in version 1.32 and later. If you use these features, you must migrate to the recommended alternatives before you can upgrade to version 1.32 or later.
| Legacy feature (blocked in 1.32) | Replace with (recommended) | Link to migration instructions | | --- | --- | --- | | Dataplane V1 (Calico) | Dataplane V2 (Cilium / eBPF) | Migrate to Dataplane V2| | Kubeception | Controlplane V2 | Migrate to Controlplane V2 | | Non-HA admin cluster (1 replica) | HA admin cluster (3 replicas) | Migrate to HA admin cluster | | Seesaw load balancer | MetalLB or ManualLB | Migrate to MetalLB or Migrate load balancer type| | Integrated F5 BIG-IP (loadBalancer.kind: "F5BigIP") | ManualLB (paired with F5 Big-IP Controller or CCGI) | Migrate to ManualLB |
For details about how to migrate from legacy features to recommended features, see Plan cluster migration to recommended features.
Kubeception migration and version behavior
Kubeception is a legacy feature that must be migrated to Controlplane V2 before you can upgrade to version 1.32 or later.
Upgrades behave differently for clusters with Kubeception depending on your version:
- For 1.28: Control plane & admin nodes upgrade during admin cluster upgrade
- For 1.29: Control plane & admin nodes upgrade during admin cluster upgrade
For 1.30: Control plane & admin nodes upgrade during admin cluster upgrade. If you use Kubeception the following is what happens during an upgrade:
- Upgrade the user cluster. Because the user control plane lives inside the
admin cluster, running
gkectl upgrade clusteronly upgrades the worker node pools. - Upgrade the admin cluster. The admin cluster upgrade upgrades the admin nodes and automatically upgrades all the user cluster control planes at the same time.
- Upgrade the user cluster. Because the user control plane lives inside the
admin cluster, running
For 1.31: Admin nodes upgraded with admin cluster; user control plane nodes upgraded with user cluster.
For 1.32 and later: Kubeception is not supported. You must migrate to Controlplane V2 before you can upgrade to 1.32 or later.
For details about migrating Kubeception to Controlplane V2, see Plan cluster migration to recommended features.
Version skew versus skipping a version during upgrade
Version skew is the allowed difference in minor versions between an admin cluster and its managed user clusters or the difference in minor versions between a user cluster's control plane and the node pools on the user cluster.
Version skew is different from skipping a minor version when you upgrade.
You can only skip a minor version when you upgrade worker node pools, after you upgrade the control plane. This applies to advanced and non-advanced clusters, except advanced clusters running version 1.31 and versions prior to 1.28. For example, if a worker node pool is at version 1.29, update the user cluster control plane to 1.30 and then 1.31. After the control plane is at 1.31, upgrade the worker node pool from 1.29 to 1.31 directly, without upgrading to 1.30. For more information, see Skip a version when upgrading node pools.
To upgrade to a higher minor release than the next sequential minor release, upgrade to the next minor release first, then upgrade to the higher minor release. You can't skip a minor version when you upgrade admin and user cluster control planes. For example, if you want to upgrade from version 1.34.x to version 1.36.x, you can't upgrade directly. You must first upgrade from 1.34.x to 1.35.x, and then upgrade to 1.36.x.
A user cluster's control plane can be up to 2 minor versions higher than the worker node pools in the cluster. For example, if a user cluster's control plane is at 1.36, the worker node pools in the cluster can be 1.34, 1.35, or 1.36.
What version skews are allowed?
An admin cluster can manage user clusters up to 2 minor versions lower. For example, if an admin cluster is at 1.31, the user clusters managed by that admin cluster can be at 1.29, 1.30, or 1.31.
Before version 1.31, the following version skew rules apply:
- For versions 1.28 to 1.30, user clusters can be up to 2 minor versions higher than their admin cluster. For example, if an admin cluster is at 1.15, the user clusters managed by that admin cluster can be at 1.15, 1.16, or 1.28. You can't upgrade a 1.28 user cluster to 1.29 until the admin cluster is upgraded to at least 1.16. Because version 1.31 changes the upgrade order to require upgrading the admin cluster first, an admin cluster at 1.29 or 1.30 can't manage user clusters at 1.31 or 1.32. All user clusters and the admin cluster must reach 1.30 before you can upgrade the admin cluster to 1.31.
- For versions 1.16 and lower, user clusters can only be 1 minor version higher than their admin cluster. For example, if an admin cluster is at 1.15, the user clusters managed by that admin cluster can be at 1.15 or 1.16.
Do I have to upgrade user clusters all at once?
When you upgrade user clusters, you can choose one of the following:
- Upgrade the whole user cluster with the control plane and all node pools in the cluster at the same time.
- Upgrade the user cluster's control plane and leave the node pools at the current version.
- Upgrade the user cluster's control plane and selectively upgrade node pools.
Which approach you take depends on several factors, such as:
- The environment (production or non-production) that the cluster is in.
- The length of your maintenance window.
- The version of the user cluster.
For example, you might want to upgrade both the user cluster's control plane and all node pools in a development environment. But in a production environment with a short maintenance window, you might want to upgrade only the control plane because it takes less time and the control plane upgrade shouldn't disrupt user workloads.
Load balancer node pools (node pools with enableLoadBalancer: true) must be the same version as the cluster for every version.
Version rules for gkectl
The version of gkectl that you can use for the upgrade depends on the target
cluster version (that is, the version of the cluster you are upgrading to).
Typically, you use the same version of gkectl as the cluster target version.
The following rules are enforced during the upgrade:
The
gkectlversion must be the same or higher than the target minor cluster version. For example, if you are upgrading a 1.29 cluster to 1.30, you must usegkectl1.30 or higher. Patch versions don't matter.The
gkectlversion can be up to two minor versions higher than the current cluster version. For example, to upgrade a 1.28 cluster to 1.29, usegkectlversion 1.29 or 1.30, but not version 1.31 because that is three minor versions higher than the cluster version.
The gkectl binary version must exactly match the target release version when
you convert from non-advanced to advanced clusters. This strict version
requirement only applies during the upgrade to an advanced
cluster. For all other advanced cluster upgrades,
the standard version skew rules apply.
Patch version upgrade rules
Upgrade to the latest patch version
whenever possible to ensure your clusters have the latest security fixes. Patch
versions don't affect the version skew and upgrade rules. For a given minor
version, you can upgrade to any higher patch version. For example, you can upgrade from
1.35.0 to 1.35.1 and you can upgrade from
1.35.1 to 1.35.3.
What's next
Review Upgrade best practices and create a plan for upgrading your clusters.
Create clusters with advanced clusters enabled: