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.
This page describes how to usebmctlto back up and restore clusters created
with Google Distributed Cloud. These instructions apply to all cluster types supported
by Google Distributed Cloud.
Thebmctlbackup and restore process does not include persistent
volumes. Any volumes created by the local volume provisioner (LVP) are left
unaltered.
Back up a cluster
Thebmctl backup clustercommand adds the cluster information from the etcd
store and the PKI certificates for the specified cluster the cluster to a tar
file. The etcd store is the Kubernetes backing store for all cluster data and
contains all the Kubernetes objects and custom objects required to manage
cluster state. The PKI certificates are used for authentication over TLS. This
data is backed up from the cluster's control plane or from one of the control
planes for ahigh-availability(HA)
deployment.
The backup tar file contains sensitive credentials, including your service
account keys and the SSH key. Store backup files in a secure location. To
prevent unintended file exposure, the Google Distributed Cloud backup process uses
in-memory files only.
Back up your clusters regularly to ensure your snapshot data is relatively
current. Adjust the rate of backups to reflect the frequency of significant
changes to your clusters.
Thebmctlversion you use to back up a cluster must match the version of
the managing cluster.
To back up a cluster:
Ensure your cluster is operating properly, with working credentials and SSH
connectivity to all nodes.
The intent of the backup process is to capture your cluster in a known good
state, so that you can restore operation if a catastrophic failure occurs.
Use the following command to check your cluster:
bmctlcheckcluster-cCLUSTER_NAME
ReplaceCLUSTER_NAMEwith the name of the cluster you
plan to back up.
Run the following command to ensure the target cluster is not in
a reconciliation state:
CLUSTER_NAMESPACE: the namespace for the
cluster. By default, the cluster namespaces for Google Distributed Cloud
are the name of the cluster prefaced withcluster-. For example, if
you name your clustertest, the namespace has a name likecluster-test.
Check the command output forstatus.conditionsof type "Reconciling".
A status of "False" for thesestatus.conditionsmeans the cluster is
stable and ready to be backed up.
ADMIN_KUBECONFIG: the path to the admin cluster
kubeconfig file.
By default, the backup tar file saved to the workspace directory
(bmctl-workspace, by default) on your admin workstation. The tar file is namedCLUSTER_NAME_backup_TIMESTAMP.tar.gz,
whereCLUSTER_NAMEis the name of the cluster being
backed up andTIMESTAMPis the date and time the backup
was made. For example, if the cluster name istestuser, the backup file
has a name liketestuser_backup_2006-01-02T150405Z0700.tar.gz.
To specify a different name and location for your backup file, use the--backup-fileflag.
The backup file expires after a year and the cluster restore process doesn't
work with expired backup files.
Restore a cluster
Restoring a cluster from a backup is a last resort and should be used when a
cluster has failed catastrophically and cannot be returned to service any other
way. For example, the etcd data is corrupted or theetcdPod is in a crash
loop.
The backup tar file contains sensitive credentials, including your service
account keys and the SSH key. To prevent unintended file exposure, the
Google Distributed Cloud restore process uses in-memory files only.
Thebmctlversion you use to restore a cluster must match the version of
the managing cluster.
To restore a cluster:
Ensure all node machines that were available for the cluster at the time of
the backup are operating properly and reachable.
Ensure that SSH connectivity between nodes works with the SSH keys that were
used at the time of the backup.
These SSH keys are reinstated as part of the restore process.
Ensure that the service account keys that were used at the time of the
backup are still active.
These service account keys are reinstated for the restored cluster.
To restore a standalone cluster or a self-managed admin or hybrid cluster,
run the following command:
[[["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\u003eThis document provides instructions on how to use \u003ccode\u003ebmctl\u003c/code\u003e to back up and restore clusters in Google Distributed Cloud, applicable to all supported cluster types.\u003c/p\u003e\n"],["\u003cp\u003eBacking up a cluster with \u003ccode\u003ebmctl backup cluster\u003c/code\u003e involves capturing the etcd store and PKI certificates to a secure tar file, which should be done regularly, matching the \u003ccode\u003ebmctl\u003c/code\u003e version to the managing cluster version.\u003c/p\u003e\n"],["\u003cp\u003eRestoring a cluster with \u003ccode\u003ebmctl restore cluster\u003c/code\u003e should be used as a last resort in catastrophic failures, as it resets the cluster and overwrites existing information, requiring the \u003ccode\u003ebmctl\u003c/code\u003e version to match the managing cluster's.\u003c/p\u003e\n"],["\u003cp\u003eThe backup and restore process does not include persistent volumes created by the local volume provisioner (LVP), leaving them unaltered, and the sensitive credentials within the backup files require secure storage.\u003c/p\u003e\n"],["\u003cp\u003eBefore backing up, ensure the cluster is stable and not in a reconciliation state by using the \u003ccode\u003ebmctl check cluster\u003c/code\u003e command and checking for "False" status conditions.\u003c/p\u003e\n"]]],[],null,["# Back up and restore clusters with bmctl\n\n\u003cbr /\u003e\n\n|\n| **Preview**\n|\n|\n| This product or feature is subject to the \"Pre-GA Offerings Terms\" in the General Service Terms section\n| of the [Service Specific Terms](/terms/service-terms#1).\n|\n| Pre-GA products and features are available \"as is\" and might have limited support.\n|\n| For more information, see the\n| [launch stage descriptions](/products#product-launch-stages).\n\nThis page describes how to use `bmctl` to back up and restore clusters created\nwith Google Distributed Cloud. These instructions apply to all cluster types supported\nby Google Distributed Cloud.\n| **Warning:** Using a backup file to restore your cluster is a last resort. The restore process resets the existing cluster and overwrites the cluster information. We don't recommend restoring from a backup file unless the cluster has failed catastrophically. Contact Cloud Customer Care for help in deciding the best course of action.\n\nThe `bmctl` backup and restore process does not include persistent\nvolumes. Any volumes created by the local volume provisioner (LVP) are left\nunaltered.\n\nBack up a cluster\n-----------------\n\nThe `bmctl backup cluster` command adds the cluster information from the etcd\nstore and the PKI certificates for the specified cluster the cluster to a tar\nfile. The etcd store is the Kubernetes backing store for all cluster data and\ncontains all the Kubernetes objects and custom objects required to manage\ncluster state. The PKI certificates are used for authentication over TLS. This\ndata is backed up from the cluster's control plane or from one of the control\nplanes for a\n[high-availability](/anthos/clusters/docs/bare-metal/1.9/installing/install-prep#high_availability) (HA)\ndeployment.\n\nThe backup tar file contains sensitive credentials, including your service\naccount keys and the SSH key. Store backup files in a secure location. To\nprevent unintended file exposure, the Google Distributed Cloud backup process uses\nin-memory files only.\n\nBack up your clusters regularly to ensure your snapshot data is relatively\ncurrent. Adjust the rate of backups to reflect the frequency of significant\nchanges to your clusters.\n\nThe `bmctl` version you use to back up a cluster must match the version of\nthe managing cluster.\n\nTo back up a cluster:\n\n1. Ensure your cluster is operating properly, with working credentials and SSH\n connectivity to all nodes.\n\n The intent of the backup process is to capture your cluster in a known good\n state, so that you can restore operation if a catastrophic failure occurs.\n\n Use the following command to check your cluster: \n\n bmctl check cluster -c \u003cvar translate=\"no\"\u003eCLUSTER_NAME\u003c/var\u003e\n\n Replace \u003cvar translate=\"no\"\u003eCLUSTER_NAME\u003c/var\u003e with the name of the cluster you\n plan to back up.\n2. Run the following command to ensure the target cluster is not in\n a reconciliation state:\n\n kubectl describe cluster \u003cvar translate=\"no\"\u003eCLUSTER_NAME\u003c/var\u003e -n \u003cvar translate=\"no\"\u003eCLUSTER_NAMESPACE\u003c/var\u003e\n\n Replace the following:\n - \u003cvar translate=\"no\"\u003eCLUSTER_NAME\u003c/var\u003e: the name of the cluster to back up.\n - \u003cvar translate=\"no\"\u003eCLUSTER_NAMESPACE\u003c/var\u003e: the namespace for the cluster. By default, the cluster namespaces for Google Distributed Cloud are the name of the cluster prefaced with `cluster-`. For example, if you name your cluster `test`, the namespace has a name like `cluster-test`.\n3. Check the command output for `status.conditions` of type \"Reconciling\".\n\n A status of \"False\" for these `status.conditions` means the cluster is\n stable and ready to be backed up.\n4. Run the following command to back up the cluster:\n\n bmctl backup 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 back up.\n - \u003cvar translate=\"no\"\u003eADMIN_KUBECONFIG\u003c/var\u003e: the path to the admin cluster kubeconfig file.\n\n By default, the backup tar file saved to the workspace directory\n (`bmctl-workspace`, by default) on your admin workstation. The tar file is named\n \u003cvar translate=\"no\"\u003eCLUSTER_NAME\u003c/var\u003e`_backup_`\u003cvar translate=\"no\"\u003eTIMESTAMP\u003c/var\u003e`.tar.gz`,\n where \u003cvar translate=\"no\"\u003eCLUSTER_NAME\u003c/var\u003e is the name of the cluster being\n backed up and \u003cvar translate=\"no\"\u003eTIMESTAMP\u003c/var\u003e is the date and time the backup\n was made. For example, if the cluster name is `testuser`, the backup file\n has a name like `testuser_backup_2006-01-02T150405Z0700.tar.gz`.\n\n To specify a different name and location for your backup file, use the\n `--backup-file` flag.\n\nThe backup file expires after a year and the cluster restore process doesn't\nwork with expired backup files.\n\nRestore a cluster\n-----------------\n\nRestoring a cluster from a backup is a last resort and should be used when a\ncluster has failed catastrophically and cannot be returned to service any other\nway. For example, the etcd data is corrupted or the `etcd` Pod is in a crash\nloop.\n\nThe backup tar file contains sensitive credentials, including your service\naccount keys and the SSH key. To prevent unintended file exposure, the\nGoogle Distributed Cloud restore process uses in-memory files only.\n\nThe `bmctl` version you use to restore a cluster must match the version of\nthe managing cluster.\n\nTo restore a cluster:\n\n1. Ensure all node machines that were available for the cluster at the time of\n the backup are operating properly and reachable.\n\n2. Ensure that SSH connectivity between nodes works with the SSH keys that were\n used at the time of the backup.\n\n These SSH keys are reinstated as part of the restore process.\n3. Ensure that the service account keys that were used at the time of the\n backup are still active.\n\n These service account keys are reinstated for the restored cluster.\n4. To restore a standalone cluster or a self-managed admin or hybrid cluster,\n run the following command:\n\n bmctl restore cluster -c \u003cvar translate=\"no\"\u003eCLUSTER_NAME\u003c/var\u003e --backup-file \u003cvar translate=\"no\"\u003eBACKUP_FILE\u003c/var\u003e\n\n Replace the following:\n - \u003cvar translate=\"no\"\u003eCLUSTER_NAME\u003c/var\u003e: the name of the cluster you are restoring.\n - \u003cvar translate=\"no\"\u003eBACKUP_FILE\u003c/var\u003e: the path and name of the backup file you are using.\n5. To restore a user cluster or admin or hybrid clusters that aren't\n self-managed, run the following command:\n\n bmctl restore cluster -c \u003cvar translate=\"no\"\u003eCLUSTER_NAME\u003c/var\u003e --backup-file \u003cvar translate=\"no\"\u003eBACKUP_FILE\u003c/var\u003e \\\n --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 you are restoring.\n - \u003cvar translate=\"no\"\u003eBACKUP_FILE\u003c/var\u003e: the path and name of the backup file you are using.\n - \u003cvar translate=\"no\"\u003eADMIN_KUBECONFIG\u003c/var\u003e: the path to the admin cluster kubeconfig file.\n\nAt the end of the restore process, a new kubeconfig file is generated for the\nrestored cluster."]]