Version 1.9. This version is no longer supported. For information about how to upgrade to version 1.10, seeUpgrading Anthos on bare metalin the 1.10 documentation. For more information about supported and unsupported versions, see theVersion historypage in the latest documentation.
When you install a new version ofbmctl, you can upgrade your existing
clusters that were created with an earlier version. Upgrading a cluster to the
latest Google Distributed Cloud version brings added features and fixes to your
cluster. It also ensures that your cluster remainssupported.
You can upgrade admin, hybrid, standalone, or user
clusters with thebmctl upgrade clustercommand.
Enable SELinux
If you want to enable SELinux to secure your containers, you must make sure that
SELinux is enabled inEnforcedmode on all your host machines. Starting with
Google Distributed Cloud release 1.9.0 or later, you can enable or disable SELinux
before or after cluster creation or cluster upgrades. SELinux is enabled by
default on Red Hat Enterprise Linux (RHEL) and CentOS. If SELinux is disabled on
your host machines or you aren't sure, seeSecuring your containers using SELinuxfor instructions on how to enable it.
Google Distributed Cloud supports SELinux in only RHEL and CentOS systems.
Before you upgrade
Preflight checks are run before a cluster upgrade to validate cluster status
and node health.
The following examples show the upgrade process from version 1.8.2 to
Google Distributed Cloud 1.9.8.
You can upgrade any given version to the next available version (for example,
1.9.0 to 1.9.1) in the same fashion. Skip upgrades, such as 1.8.1 to
1.9.8, are also supported.
Google Distributed Cloud supports the configuration of up to 250 maximum pods per
node. This configuration can only be done during cluster creation and cannot be
updated for existing clusters.
Upgrade admin, standalone, hybrid, or user clusters
When you download and install a new version ofbmctl, you can upgrade your
admin, hybrid, standalone, and user clusters created with an earlier version.
For a given version ofbmctl, clusters can be upgraded to the same version
only.
First, you download the latestbmctl, then modify the appropriate cluster
config files, and then you issue thebmctl upgrade clustercommand to complete
the upgrade.
Download the latestbmctlfrom theCloud Storagebucket and
usechmodto givebmctlexecute permissions to all users:
Modify the cluster config file to change the Google Distributed Cloud cluster
version from1.8.2to1.9.8. The following shows an example
from an admin cluster config:
---apiVersion:baremetal.cluster.gke.io/v1kind:Clustermetadata:name:cluster1namespace:cluster-cluster1spec:# Cluster type. This can be:# 1) admin: to create an admin cluster. This can later be used to create user clusters.# 2) user: to create a user cluster. Requires an existing admin cluster.# 3) hybrid: to create a hybrid cluster that runs admin cluster components and user workloads.# 4) standalone: to create a cluster that manages itself, runs user workloads, but does not manage other clusters.type:admin# Anthos cluster version.# Change the following line from 1.8.2 to 1.9.8, shown belowanthosBareMetalVersion:1.9.8
When upgrading clusters to 1.9.8, you must register the clusters with
Connect to your projectfleet, if they have not been already.
Reference the downloaded JSON keys in the associatedgkeConnectAgentServiceAccountKeyPathandgkeConnectRegisterServiceAccountKeyPathfields of the cluster config file.
Use thebmctl upgrade clustercommand to complete the upgrade:
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-09-04 UTC."],[[["\u003cp\u003eUpgrading clusters with the latest \u003ccode\u003ebmctl\u003c/code\u003e version adds new features, fixes, and ensures they remain supported, and the \u003ccode\u003ebmctl upgrade cluster\u003c/code\u003e command can be used to upgrade admin, hybrid, standalone, or user clusters.\u003c/p\u003e\n"],["\u003cp\u003eSELinux can be enabled before or after cluster creation or upgrades, and is enabled by default on RHEL and CentOS systems, but only those two operating systems are supported by Google Distributed Cloud.\u003c/p\u003e\n"],["\u003cp\u003eBefore upgrading, preflight checks are run to validate cluster status and node health, and skip upgrades between versions are supported (for example, upgrading from 1.8.1 to 1.9.8).\u003c/p\u003e\n"],["\u003cp\u003eUpgrading clusters involves downloading the latest \u003ccode\u003ebmctl\u003c/code\u003e, modifying the cluster config file to reflect the new version, and then executing the \u003ccode\u003ebmctl upgrade cluster\u003c/code\u003e command.\u003c/p\u003e\n"],["\u003cp\u003eWhen upgrading clusters to version 1.9.8, you must register the clusters with Connect to your project fleet, and also make sure that user clusters are not below version 1.8.0, when upgrading their associated admin cluster.\u003c/p\u003e\n"]]],[],null,["# Upgrade Google Distributed Cloud\n\n\u003cbr /\u003e\n\nWhen you install a new version of `bmctl`, you can upgrade your existing\nclusters that were created with an earlier version. Upgrading a cluster to the\nlatest Google Distributed Cloud version brings added features and fixes to your\ncluster. It also ensures that your cluster remains\n[supported](/anthos/clusters/docs/bare-metal/1.9/getting-support#version-support).\nYou can upgrade admin, hybrid, standalone, or user\nclusters with the `bmctl upgrade cluster` command.\n| **Note:** When upgrading Google Distributed Cloud from a version with a security patch to the next minor release, we recommend you upgrade to the highest patch version available to ensure you have the latest security patches. Always review the release notes before upgrading so you are aware of what has changed, including security fixes and known issues. Upgrading to a lower patch version is not supported.\n\nEnable SELinux\n--------------\n\nIf you want to enable SELinux to secure your containers, you must make sure that\nSELinux is enabled in `Enforced` mode on all your host machines. Starting with\nGoogle Distributed Cloud release 1.9.0 or later, you can enable or disable SELinux\nbefore or after cluster creation or cluster upgrades. SELinux is enabled by\ndefault on Red Hat Enterprise Linux (RHEL) and CentOS. If SELinux is disabled on\nyour host machines or you aren't sure, see\n[Securing your containers using SELinux](/anthos/clusters/docs/bare-metal/1.9/installing/configure-selinux)\nfor instructions on how to enable it.\n\nGoogle Distributed Cloud supports SELinux in only RHEL and CentOS systems.\n\nBefore you upgrade\n------------------\n\nPreflight checks are run before a cluster upgrade to validate cluster status\nand node health.\n\nThe following examples show the upgrade process from version 1.8.2 to\nGoogle Distributed Cloud 1.9.8.\n\nYou can upgrade any given version to the next available version (for example,\n1.9.0 to 1.9.1) in the same fashion. Skip upgrades, such as 1.8.1 to\n1.9.8, are also supported.\n\nGoogle Distributed Cloud supports the configuration of up to 250 maximum pods per\nnode. This configuration can only be done during cluster creation and cannot be\nupdated for existing clusters.\n\nUpgrade admin, standalone, hybrid, or user clusters\n---------------------------------------------------\n\nWhen you download and install a new version of `bmctl`, you can upgrade your\nadmin, hybrid, standalone, and user clusters created with an earlier version.\nFor a given version of `bmctl`, clusters can be upgraded to the same version\nonly.\n\nFirst, you download the latest `bmctl`, then modify the appropriate cluster\nconfig files, and then you issue the `bmctl upgrade cluster` command to complete\nthe upgrade.\n| **Note:** You should upgrade an admin cluster before upgrading any associated user clusters. However, before upgrading the admin cluster to 1.9.8, make sure its associated user clusters are at version 1.8.0 or above. `bmctl` will emit an error if it finds any user cluster is below 1.8.0.\n\n1. Download the latest `bmctl` from the [Cloud Storage](/storage) bucket and\n use `chmod` to give `bmctl` execute permissions to all users:\n\n gcloud storage cp gs://anthos-baremetal-release/bmctl/1.9.8/linux-amd64/bmctl bmctl\n chmod a+x bmctl\n\n2. Modify the cluster config file to change the Google Distributed Cloud cluster\n version from `1.8.2` to `1.9.8`. The following shows an example\n from an admin cluster config:\n\n ---\n apiVersion: baremetal.cluster.gke.io/v1\n kind: Cluster\n metadata:\n name: cluster1\n namespace: cluster-cluster1\n spec:\n # Cluster type. This can be:\n # 1) admin: to create an admin cluster. This can later be used to create user clusters.\n # 2) user: to create a user cluster. Requires an existing admin cluster.\n # 3) hybrid: to create a hybrid cluster that runs admin cluster components and user workloads.\n # 4) standalone: to create a cluster that manages itself, runs user workloads, but does not manage other clusters.\n type: admin\n # Anthos cluster version.\n # Change the following line from 1.8.2 to 1.9.8, shown below\n anthosBareMetalVersion: 1.9.8\n\n3. When upgrading clusters to 1.9.8, you must register the clusters with\n Connect to your project [fleet](/anthos/multicluster-management/fleets), if they have not been already.\n\n 1. Manually create service accounts and retrieve the JSON key files as described in [Configuring service accounts for use with Connect](/anthos/clusters/docs/bare-metal/1.9/installing/configure-sa#connect-sa) on the Enabling Google services and service accounts page.\n 2. Reference the downloaded JSON keys in the associated `gkeConnectAgentServiceAccountKeyPath` and `gkeConnectRegisterServiceAccountKeyPath` fields of the cluster config file.\n4. Use the `bmctl upgrade cluster` command to complete the upgrade:\n\n bmctl upgrade cluster -c \u003cvar translate=\"no\"\u003eCLUSTER_NAME\u003c/var\u003e --kubeconfig \u003cvar translate=\"no\"\u003eADMIN_KUBECONFIG\u003c/var\u003e\n\n Replace the following:\n - \u003cvar translate=\"no\"\u003eCLUSTER_NAME\u003c/var\u003e: the name of the cluster to upgrade.\n - \u003cvar translate=\"no\"\u003eADMIN_KUBECONFIG\u003c/var\u003e: the path to the admin cluster kubeconfig file."]]