Version 1.13. This version is no longer supported. For information about how to upgrade to version 1.14, seeUpgrading Anthos on bare metalin the 1.14 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\u003e\u003ccode\u003ebmctl\u003c/code\u003e is used to back up and restore Google Distributed Cloud clusters, capturing data from the etcd store and PKI certificates.\u003c/p\u003e\n"],["\u003cp\u003eRestoring a cluster from a backup is a last resort and should only be done in case of catastrophic failure, as it overwrites the existing cluster information.\u003c/p\u003e\n"],["\u003cp\u003eThe backup process does not include persistent volumes, and the resulting tar file should be stored securely because it contains sensitive credentials.\u003c/p\u003e\n"],["\u003cp\u003eBackups should be taken regularly, using the same \u003ccode\u003ebmctl\u003c/code\u003e version as the managing cluster, and you can check the cluster status before taking a backup to ensure it is in a stable condition.\u003c/p\u003e\n"],["\u003cp\u003eWhen restoring a cluster, ensure all nodes, SSH keys, and service account keys that were used at the time of the backup are still available, and a new kubeconfig file will be generated for the restored cluster.\u003c/p\u003e\n"]]],[],null,["# Back up and restore clusters with bmctl\n\n\u003cbr /\u003e\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.13/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."]]