Version 1.12. This version is no longer supported. For information about how to upgrade to version 1.13, see Upgrading Anthos on bare metal in the 1.13 documentation. For more information about supported and unsupported versions, see the Version history page in the latest documentation.
When Google Distributed Cloud creates or upgrades clusters, it deploys a
Kubernetes in Docker (kind) cluster to temporarily
host the Kubernetes controllers needed to create or upgrade clusters. This
transient cluster is called a bootstrap cluster.
If a kind cluster already exists in your deployment when you attempt to install,
Google Distributed Cloud deletes the existing kind cluster. Deletion only
happens after the installation or upgrade is successful.
To preserve the existing kind cluster even after success, use the
--keep-bootstrap-cluster flag of bmctl.
Google Distributed Cloud creates a configuration file for the bootstrap cluster
under WORKSPACE_DIR/.kindkubeconfig. You can connect to the
bootstrap cluster only during cluster creation and upgrade.
The bootstrap cluster needs to access a Docker repository to pull images. The
registry defaults to Container Registry unless you are using a
private registry. During cluster creation,bmctl creates the following files:
bmctl-workspace/config.json: Contains Google Cloud service account
credentials for the registry access. The credentials are obtained from the
gcrKeyPath field in the cluster configuration file.
bmctl-workspace/config.toml: Contains the containerd configuration in the
kind cluster.
Debug the bootstrap cluster
To debug the bootstrap cluster you can take the following steps:
Connect to the bootstrap cluster during cluster creation and upgrade.
Get the logs of the bootstrap cluster.
You can find the logs in the machine you use to run bmctl in the following
folders:
[[["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\u003eGoogle Distributed Cloud utilizes a temporary "bootstrap" Kubernetes cluster (kind) during cluster creation or upgrades to host necessary controllers.\u003c/p\u003e\n"],["\u003cp\u003eBy default, existing kind clusters are deleted after a successful installation or upgrade, but the \u003ccode\u003e--keep-bootstrap-cluster\u003c/code\u003e flag in \u003ccode\u003ebmctl\u003c/code\u003e can be used to preserve them.\u003c/p\u003e\n"],["\u003cp\u003eThe configuration file for the bootstrap cluster is located in \u003ccode\u003eWORKSPACE_DIR/.kindkubeconfig\u003c/code\u003e, and it is accessible only during cluster creation and upgrades.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003ebmctl\u003c/code\u003e creates \u003ccode\u003econfig.json\u003c/code\u003e and \u003ccode\u003econfig.toml\u003c/code\u003e files in \u003ccode\u003ebmctl-workspace/\u003c/code\u003e to manage registry credentials and containerd configuration respectively.\u003c/p\u003e\n"],["\u003cp\u003eBootstrap cluster logs can be found in specific \u003ccode\u003ebmctl-workspace/CLUSTER_NAME/log/\u003c/code\u003e directories, or accessed directly via \u003ccode\u003edocker exec -it bmctl-control-plane bash\u003c/code\u003e during cluster operations, allowing for debugging.\u003c/p\u003e\n"]]],[],null,["# Troubleshoot the bootstrap cluster\n\n\u003cbr /\u003e\n\nWhen Google Distributed Cloud creates or upgrades clusters, it deploys a\n[Kubernetes in Docker](https://kind.sigs.k8s.io/) (kind) cluster to temporarily\nhost the Kubernetes controllers needed to create or upgrade clusters. This\ntransient cluster is called a bootstrap cluster.\nIf a kind cluster already exists in your deployment when you attempt to install,\nGoogle Distributed Cloud deletes the existing kind cluster. Deletion only\nhappens after the installation or upgrade is successful.\nTo preserve the existing kind cluster even after success, use the\n`--keep-bootstrap-cluster` flag of `bmctl`.\n\nGoogle Distributed Cloud creates a configuration file for the bootstrap cluster\nunder \u003cvar translate=\"no\"\u003eWORKSPACE_DIR\u003c/var\u003e`/.kindkubeconfig`. You can connect to the\nbootstrap cluster only during cluster creation and upgrade.\n\nThe bootstrap cluster needs to access a Docker repository to pull images. The\nregistry defaults to Container Registry unless you are using a\nprivate registry. During cluster creation,`bmctl` creates the following files:\n\n- `bmctl-workspace/config.json`: Contains Google Cloud service account\n credentials for the registry access. The credentials are obtained from the\n `gcrKeyPath` field in the cluster configuration file.\n\n- `bmctl-workspace/config.toml`: Contains the containerd configuration in the\n kind cluster.\n\nDebug the bootstrap cluster\n---------------------------\n\nTo debug the bootstrap cluster you can take the following steps:\n\n- Connect to the bootstrap cluster during cluster creation and upgrade.\n- Get the logs of the bootstrap cluster.\n\nYou can find the logs in the machine you use to run `bmctl` in the following\nfolders:\n\n- `bmctl-workspace/`\u003cvar translate=\"no\"\u003eCLUSTER_NAME\u003c/var\u003e`/log/create-cluster-`\u003cvar translate=\"no\"\u003eTIMESTAMP\u003c/var\u003e`/bootstrap-cluster/`\n- `bmctl-workspace/`\u003cvar translate=\"no\"\u003eCLUSTER_NAME\u003c/var\u003e`/log/upgrade-cluster-`\u003cvar translate=\"no\"\u003eTIMESTAMP\u003c/var\u003e`/bootstrap-cluster/`\n\nReplace \u003cvar translate=\"no\"\u003eCLUSTER_NAME\u003c/var\u003e and \u003cvar translate=\"no\"\u003eTIMESTAMP\u003c/var\u003e with\nthe name of your cluster and the corresponding system's time.\n\nTo get the logs from the bootstrap cluster directly, you can run the following\ncommand during cluster creation and upgrade: \n\n docker exec -it bmctl-control-plane bash\n\nThe command opens a terminal inside the bmctl control plane container that\nruns in the bootstrap cluster.\n\nTo inspect the `kubelet` and `containerd` logs, use the following commands and\nlook for errors or warnings in the output: \n\n journalctl -u kubelet\n journalctl -u containerd"]]