A twelve person software shop we would typically work with has exactly one Kubernetes cluster. It was created three or four years ago, it runs the API and two background workers, and nobody has touched it since the contractor who built it finished the project. Nobody knows which version it is on. Nobody upgrades it, because upgrading sounds risky and nothing is broken.
That arrangement now has an expiry date. Google is removing the option to keep a GKE cluster outside a release channel, so the cluster that has been sitting still for three years is going to start moving. It is much better to decide how it moves than to find out on a Tuesday morning.
What changed, and the dates
Running a cluster without enrolling it in a release channel, known as No channel and formerly as Static, is a deprecated configuration option on GKE. Google's release channel documentation says it plainly: the option is only allowed for existing customers, and it will be removed on 14 June 2027. New customers cannot create a cluster with it, or update a cluster to use it. After the removal date, GKE enrolls all remaining clusters in the Stable channel.
Google restated the deprecation in the Google Cloud release notes on 21 August 2026, pointing back at the original note from 10 June 2026. That entry is what put this back on our review list for client projects, checked on 10 September 2026.
Read the ending of that first paragraph again, because it is the part people miss. There is no version of this where the cluster stays where it is. Either you choose a channel and a maintenance schedule, or GKE chooses Stable for you and upgrades on a calendar you did not set.
Who this affects among small and mid-sized businesses
If you run GKE Autopilot, this is already settled for you. Autopilot clusters are always enrolled in a release channel and cannot be unsubscribed from one, and new Autopilot clusters land in the Regular channel by default. The only decision left is which channel, not whether.
The businesses that need to act are the ones running Standard clusters that were deliberately or accidentally left out of a channel. In our experience that is usually one of three situations:
- A cluster pinned to a specific version years ago because an upgrade once broke something, and the pin was never revisited.
- A cluster created before release channels became the default, still carrying the old configuration.
- A cluster nobody owns, inherited with a project, where the version question has never come up.
All three end at the same place in June 2027. The difference is whether you spend two hours on it now, on your schedule, or an unplanned afternoon later.
What a release channel actually changes
A release channel is not just a label. Once a cluster is subscribed, Google maintains both the control plane version and the node version, and node auto-upgrade is on by default for channel clusters. GKE upgrades clusters in a channel on or after the dates published in the Auto Upgrade column of the GKE release schedule.
The four channels differ in how early they hand you a version:
- Rapid gives your cluster access to new versions as early as possible, including alpha patch versions of upcoming minor versions. It belongs in a pre-production cluster where you test features as soon as they are generally available.
- Regular balances stability against freshness, and suits teams that need to track new features reasonably closely.
- Stable is the choice when maturity matters more than features, which is the normal answer for a single production cluster.
- Extended provides long-term support for a Kubernetes minor version, for when you need a longer runway on one version.
Support length matters as much as channel personality. GKE provides at least 14 months of standard support for a minor version, and up to 24 months in total with extended support, roughly 14 months of standard support plus around 10 more months available through the Extended channel. Patches for a minor version stay available in all channels until the end of standard support, except for clusters in the Extended channel, where the minor version and its patches remain available until the end of extended support.
What we check on a client cluster first
Before changing a single setting, we go through the same short list. It takes under an hour on a small cluster and it is where the surprises live.
- Mode and current channel. Autopilot or Standard, and if Standard, whether it is already in a channel. Describe the cluster and read the release channel out of the output rather than trusting a memory of how it was set up.
- Where the minor version sits against its support window. A cluster two or three minor versions behind is not a configuration change, it is a sequence of upgrades, and the order matters.
- What an upgrade would remove. Minor versions drop things. The Google Cloud release notes dated 4 September 2026 record that Identity Service for GKE is no longer supported starting in GKE 1.37, which means creating new clusters or upgrading existing clusters to that version stops that component working. We grep the cluster and the manifests for anything on that list before scheduling anything.
- Whether the workloads survive a node drain. During an upgrade GKE drains each existing node, respecting PodDisruptionBudget and GracefulTerminationPeriod settings for up to one hour. A single replica Deployment with no PodDisruptionBudget is a short outage waiting for a maintenance window. This is the item we fix most often.
- Whether anyone would notice. GKE publishes upgrade notifications, and you can receive them through Cloud Logging or Pub/Sub. On a cluster with no owner, nobody is subscribed to anything.
Patch versions move faster than people expect too. Read almost any week of the GKE release notes and you will find lines saying a given patch version is deprecated in a channel and will be removed in 90 days, or at the end of support if sooner. Sitting on one exact version indefinitely is not a plan that the platform supports.
The setup, in order
Set the maintenance window first, then enrol. Doing it the other way round means the cluster can be eligible for an upgrade before you have told GKE when upgrades are welcome.
A recurring window uses an RFC-5545 start time and recurrence rule. Weekly and daily frequencies are supported, while SECONDLY, MINUTELY and HOURLY are not:
gcloud container clusters update CLUSTER_NAME \
--maintenance-window-start=2026-09-14T22:00:00Z \
--maintenance-window-end=2026-09-15T04:00:00Z \
--maintenance-window-recurrence='FREQ=WEEKLY;BYDAY=MO,TU,WE'
The start and end pair only defines how long the window lasts. The recurrence rule decides when it comes back. Pick hours when someone on the team is reachable, not simply the middle of the night, because an upgrade that stalls at 03:00 with nobody awake is worse than one at 20:00 with an engineer at a laptop.
Then enrol the cluster. The channel value is one of rapid, regular, stable, or, for Standard clusters, extended:
gcloud container clusters update CLUSTER_NAME --release-channel=stable
Add the location flags your project uses on both commands. If you manage clusters through Terraform or another tool, make the change there instead, so the next apply does not quietly put the old setting back.
For the periods when you genuinely cannot absorb a change, use a maintenance exclusion rather than avoiding channels altogether. Exclusions come in three scopes: no_upgrades, the default, which avoids any maintenance and any change during the period; no_minor_upgrades, which holds the minor version steady so you can validate the next one or avoid API changes; and no_minor_or_node_upgrades, which disables minor and node upgrades and leaves those upgrades to you.
gcloud container clusters update CLUSTER_NAME \
--add-maintenance-exclusion-name=year-end-freeze \
--add-maintenance-exclusion-start=2026-12-15T00:00:00Z \
--add-maintenance-exclusion-end=2027-01-05T00:00:00Z \
--add-maintenance-exclusion-scope=no_minor_upgrades
Instead of hand picking an end date, you can also configure an exclusion with the no minor upgrades or no minor or node upgrades scope to track the end of support of the cluster's minor version.
Cost and risk notes
Two honest caveats. First, an exclusion is a deferral, not an escape. Minor and node upgrade exclusions hold until the end of support for that minor version, and after that GKE upgrades the cluster anyway. Plan the upgrade inside the window you bought yourself.
Second, upgrades touch your bill in a small way. Surge upgrade settings control how many nodes are upgraded at once through maxSurge and maxUnavailable, and surge nodes are additional nodes added to the node pool per zone during the upgrade. More surge means a faster, less disruptive upgrade and briefly more nodes running. If you are weighing the Extended channel, check the current Google Cloud pricing page for how extended support is billed before you commit, because that figure changes and we do not repeat numbers we have not checked on the day.
The risk worth naming is the one nobody schedules: a cluster three minor versions behind, upgraded automatically in June 2027 by a platform that has run out of patience, with no PodDisruptionBudget and a single replica of the thing your customers use. That is an avoidable outage with a 2027 date on it and a fix available now.
How Guanacos Tech helps
We do this as a fixed piece of work: inventory the clusters in the project, qualify the upgrade path in a pre-production cluster first, add the PodDisruptionBudgets and surge settings the workloads are missing, set the maintenance window around your real business hours, enrol the cluster in the channel that fits how much change you can absorb, and wire upgrade notifications to somewhere a human reads. Then we hand back a one page runbook so the next upgrade is boring.
If you have a cluster nobody has logged into for a year, that is the normal starting point and not an embarrassing one. See what we do on Google Cloud, or book a call and we will look at the cluster together.
Sources
- About release channels (Google Kubernetes Engine)
- Use release channels (Google Kubernetes Engine)
- Google Cloud release notes, 21 August 2026 (release channel enrollment deprecation)
- Google Cloud release notes, 4 September 2026 (Identity Service for GKE in 1.37)
- Configure maintenance windows and exclusions (Google Kubernetes Engine)
- GKE versioning and support
- Best practices for GKE cluster upgrades