重置集群节点

在集群安装过程中,二进制文件和 systemd 服务会安装在托管集群的节点上,并且服务开始监听节点上的端口。

但是,如果集群安装失败,则需要删除所有这些二进制文件和服务。换句话说,在尝试重新安装集群之前,需要重置或擦除这些节点。如果未以这种方式重置节点,则在这些节点上安装集群的下一次尝试将失败。

bmctl reset 命令执行节点的清理操作。您可以在整个集群或集群的特定节点上运行 bmctl reset 命令,本文档介绍如何在这两种模式下运行该命令。

请务必注意,将 bmctl reset 命令应用于集群时,该集群将被删除,因为该命令会清除节点上的所有集群二进制文件和服务。

使用 bmctl reset cluster 重置集群

重置集群会导致集群被删除。集群被删除后,您可以在进行任何所需的配置更改后重新安装它。

重置自行管理的集群

如需重置管理员集群、混合集群或独立集群,请运行以下命令:

bmctl reset --cluster CLUSTER_NAME

在该命令中,将 CLUSTER_NAME 替换为您要重置的集群的名称。

集群重置完成后,您可以创建新集群。如需了解详情,请参阅集群创建概览

重置用户集群

您可以使用 bmctl reset 命令或 kubectl delete 命令重置或删除用户集群。在这两种情况下,集群都会被删除。我们建议您使用 bmctl reset

使用 bmctl 重置/删除用户集群

运行以下命令以使用 bmctl 重置/删除用户集群:

bmctl reset --cluster CLUSTER_NAME --admin-kubeconfig ADMIN_KUBECONFIG_PATH

在该命令中,将以下条目替换为特定于您的环境的信息:

  • CLUSTER_NAME:要重置的用户集群的名称。

  • ADMIN_KUBECONFIG_PATH:关联管理员集群的 kubeconfig 文件的路径。 bmctl 支持使用 --kubeconfig 作为 --admin-kubeconfig 标志的别名。

使用 kubectl 删除用户集群

如需使用 kubectl 删除用户集群,您必须先删除集群对象,然后删除其命名空间。否则无法创建重置机器的作业,删除过程可能会无限期卡住。

要使用 kubectl 删除用户集群,请执行以下操作:

  1. 运行以下命令以删除集群对象:

    kubectl delete cluster CLUSTER_NAME -n CLUSTER_NAMESPACE \
        --kubeconfig ADMIN_KUBECONFIG_PATH
    

    在该命令中,将以下条目替换为特定于您的环境的信息:

    • CLUSTER_NAME:要删除的用户集群的名称。

    • CLUSTER_NAMESPACE:集群的命名空间。默认情况下,Anthos clusters on Bare Metal 的集群命名空间是以 cluster- 开头的集群名称。例如,如果您将集群命名为 test,则命名空间的名称类似于 cluster-test

    • ADMIN_KUBECONFIG_PATH:关联管理员集群的 kubeconfig 文件的路径。

  2. 成功删除集群后,运行以下命令以删除命名空间:

    kubectl delete namespace CLUSTER_NAMESPACE --kubeconfig ADMIN_KUBECONFIG_PATH
    

重置特定集群节点

在某些情况下您可能需要重置集群的特定节点,例如管理员集群已被删除,但由该管理员集群管理的用户集群仍然存在。在这种情况下,由于管理员集群已被删除,将无法删除所有用户集群。因此,用户集群的节点必须单独重置。

使用 GCR 服务帐号的 JSON 密钥重置节点

如需重置集群的各个节点,请运行以下命令:

bmctl reset nodes --addresses NODE_1_IP_ADDRESS,NODE_2_IP_ADDRESS \
    --ssh-private-key-path SSH_KEY_PATH \
    --gcr-service-account-key SERVICE_ACCOUNT_KEY_PATH \
    --login-user root

在该命令中,将以下条目替换为特定于您的环境的信息:

  • NODE_1_IP_ADDRESS , NODE_2_IP_ADDRESS:要删除的节点的 IP 地址的逗号分隔列表。

  • SSH_KEY_PATH:SSH 私钥的路径。

  • SERVICE_ACCOUNT_KEY_PATH:包含服务帐号密钥的 JSON 文件的路径。此密钥授权 bmctl 从 Google Container Registry (GCR) 拉取映像。您可以使用 Google Cloud Console、gcloud CLI、serviceAccounts.keys.create() 方法或某种客户端库创建服务帐号密钥。如需了解详情,请参阅创建和管理服务帐号密钥。创建服务帐号密钥文件的另一种方法是,运行带有 --create-service-accounts 标志的 create config 命令。如需详细了解该命令,请参阅使用 bmctl 创建管理员集群配置

重置集群详情

bmctl cluster reset 命令的输出类似于以下示例:

bmctl reset --cluster cluster1
Creating bootstrap cluster... OK
Deleting GKE Hub member admin in project my-gcp-project...
Successfully deleted GKE Hub member admin in project my-gcp-project
Loading images... OK
Starting reset jobs...
Resetting: 1    Completed: 0    Failed: 0
...
Resetting: 0    Completed: 1    Failed: 0
Flushing logs... OK

在重置操作期间,bmctl 首先尝试删除 GKE Hub 成员资格注册,然后清理受影响的节点。 重置期间,anthos-system StorageClass 中的存储装载和数据也会被删除。

对于所有节点,bmctl 运行 kubeadm reset,移除用于集群网络的隧道接口,并删除以下目录:

  • /etc/kubernetes
  • /etc/cni/net.d
  • /root/.kube
  • /var/lib/kubelet

对于负载均衡器节点,bmctl 还会执行以下操作:

  • 停用 keepalivedhaproxy 服务。
  • 删除 keepalivedhaproxy 的配置文件。

bmctl reset 命令预期集群配置文件位于当前工作目录中。默认情况下,路径如下所示:bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME.yaml

如果您在集群创建期间使用 --workspace-dir 标志指定了其他目录,则必须在集群重置期间使用此标志指定工作目录。