修复管理员集群的控制平面虚拟机

在 Google Distributed Cloud 实现中,管理员集群的控制平面虚拟机有两个挂接的磁盘:

  • 启动磁盘包含虚拟机的操作系统。

  • 数据磁盘包含凭据和 etcd 数据库,后者存储管理员集群的状态。也就是说,数据磁盘存储管理员集群的所有 Kubernetes 对象。

本页面介绍了如何在控制平面虚拟机丢失或启动磁盘损坏后进行恢复。例如:

  • 启动磁盘由于垃圾日志而变为只读。
  • Docker 叠加文件系统损坏。

本页面未介绍如何恢复数据磁盘。如需了解如何恢复数据磁盘,请参阅恢复管理员集群

修复控制平面虚拟机

您修复管理员集群的控制平面虚拟机的步骤略有不同,具体取决于您是使用高可用性 (HA) 管理员集群还是非 HA 管理员集群。

HA

一个 HA 管理员集群有三个控制平面虚拟机。您必须至少有两个虚拟机才能启动集群控制平面。如果三个虚拟机发生故障,一次修复一个故障虚拟机。在第二个虚拟机修复并运行后,集群控制平面应会恢复。

  1. 运行以下命令:

    gkectl repair admin-master --config ADMIN_CLUSTER_CONFIG --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    

    请替换以下内容:

    • ADMIN_CLUSTER_CONFIG,替换为管理员集群配置文件的路径。

    • ADMIN_CLUSTER_KUBECONFIG,替换为管理员集群的 kubeconfig 文件的路径。

    此命令的输出类似如下所示:

    Please select the control plane VM template to be used for re-creating the admin cluster's control plane VM.
    [1] VM template:         /atl-qual-vc07/vm/gke-admin-57f8g-fx9f4c729448z2v8-2-tmpl
        GKE on-prem version: 1.16.0-gke.550
        Creation time:       2023-07-25 01:52:51.815518 +0000 UTC
        CPU:                 4 CPU(s)
        Memory:              16384 MB
        Data disk:           [vsanDatastore] 37a73d64-b823-47cd-2e0c-00620b9189a0/gke-admin-57f8g/default/gke-admin-57f8g-2-data.vmdk
    
    [2] VM template:         /atl-qual-vc07/vm/gke-admin-57f8g-fx9f4c729448z2v8-0-tmpl
        GKE on-prem version: 1.16.0-gke.550
        Creation time:       2023-07-25 01:52:54.228252 +0000 UTC
        CPU:                 4 CPU(s)
        Memory:              16384 MB
        Data disk:           [vsanDatastore] 37a73d64-b823-47cd-2e0c-00620b9189a0/gke-admin-57f8g/default/gke-admin-57f8g-0-data.vmdk
    
    [3] VM template:         /atl-qual-vc07/vm/gke-admin-57f8g-fx9f4c729448z2v8-1-tmpl
        GKE on-prem version: 1.16.0-gke.550
        Creation time:       2023-07-25 01:52:54.210705 +0000 UTC
        CPU:                 4 CPU(s)
        Memory:              16384 MB
        Data disk:           [vsanDatastore] 37a73d64-b823-47cd-2e0c-00620b9189a0/gke-admin-57f8g/default/gke-admin-57f8g-1-data.vmdk
    
    Please enter your numeric choice:
    
  2. 输入要修复的虚拟机的编号。如果您在输出中没有看到虚拟机,请与 Google Cloud 支持团队联系。

    如果您有三个虚拟机需要修复,则 gkectl repair admin-master 会在修复第一个虚拟机后输出类似于以下内容的错误消息:

    If you are repairing admin control plane VM for HA admin cluster,
    it's possible that the API server is still down after repairing one
    of the VMs. Try continue fixing other control plane VMs listed to
    recover the quorum of control plane.
    

    在这种情况下,请重新运行该命令来修复第二个虚拟机。

非 HA

运行以下命令:

gkectl repair admin-master \
  --config ADMIN_CLUSTER_CONFIG \
  --kubeconfig ADMIN_CLUSTER_KUBECONFIG

请替换以下内容:

  • ADMIN_CLUSTER_CONFIG,替换为管理员集群配置文件的路径。
  • ADMIN_CLUSTER_KUBECONFIG 替换为管理员集群的 kubeconfig 文件的路径。

管理员集群的控制平面虚拟机会被克隆到一个虚拟机模板中,该模板具有重新创建虚拟机所需的所有信息。gkectl repair admin-master 命令使用该虚拟机模板来创建新的虚拟机。然后,它会挂接新的启动磁盘和现有的数据磁盘。

如果集群节点从 DHCP 服务器获取其地址,则新虚拟机的 IP 地址可能不同于来自原始虚拟机的地址。

后续步骤