问题排查:诊断和重置集群

您可以诊断或检查集群以调试问题并捕获集群状态的快照。此外,如果安装部分成功,但集群返回错误或者没有正确运行,您可以尝试重置集群。

使用 bmctl check cluster 诊断集群

您可以使用 bmctl check cluster 命令捕获已创建集群的状态。您可以通过命令标志选择命令的诊断范围,从而获得目标明确的信息。不能在用户集群上使用 bmctl check cluster 命令。

诊断信息可帮助您更高效地发现问题和调试部署。该命令会捕获您定义的范围的所有相关集群和节点配置文件,然后将信息打包到一个 tar 归档文件中。

bmctl check cluster --snapshot --cluster CLUSTER_NAME --admin-kubeconfig ADMIN_KUBECONFIG

该命令会输出 tar 归档文件,其中包含您指定的集群中的所有系统组件和机器的相关调试信息。

ADMIN_KUBECONFIG 指定 kubeconfig 文件的路径,CLUSTER_NAME 指定集群的名称。

您可以使用以下命令标志更改收集的诊断信息的范围:

  • --snapshot-scenario all 标志将诊断快照的范围扩大为包含指定集群中的所有 pod:
bmctl check cluster --snapshot --snapshot-scenario all --cluster CLUSTER_NAME --admin-kubeconfig ADMIN_KUBECONFIG
  • --snapshot-dry-run 标志与 --snapshot-config string 标志搭配使用。使用 --snapshot-dry-run 标志可输出一个配置文件,您可以通过修改该文件来定义自定义诊断范围。范围可以包括特定的 pod、命名空间或节点命令。

修改使用 --snapshot-dry-run 标志创建的输出文件后,您可以将其作为输入来通过 --snapshot-config string 标志诊断特定范围,如下所述。如果您省略此标志,系统会应用默认配置。

bmctl check cluster --snapshot --snapshot-dry-run --cluster CLUSTER_NAME --admin-kubeconfig ADMIN_KUBECONFIG
  • --snapshot-config 标志告知 bmctl 命令使用快照配置文件中指定的范围选项。通常使用 --snapshot-dry-run 标志创建快照配置文件。
bmctl check cluster --snapshot --snapshot-config SNAPSHOT_CONFIG_FILE --cluster CLUSTER_NAME --admin-kubeconfig ADMIN_KUBECONFIG

创建管理员集群固定安装/升级的快照

安装管理员/混合/独立集群时,如果 bmctl 卡在以下输出

  • 等待集群 kubeconfig 准备就绪
  • 等待集群准备就绪
  • 等待节点池准备就绪

或者在升级管理员/混合/独立集群时

  • 等待升级完成

您可以运行以下命令以使用引导集群截取快照。

bmctl check cluster --snapshot --kubeconfig <var>WORKSPACE_DIR</var>/.kindkubeconfig --cluster <var>CLUSTER_NAME</var>

使用 bmctl reset cluster 重置集群

如果集群未正确安装,您可以尝试重置节点,以将节点恢复为默认状态。然后,您可以在更改配置后重新安装集群。 不能在用户集群上使用 bmctl reset cluster 命令。

要重置集群,请发出以下命令:

bmctl reset --cluster CLUSTER_NAME

重置命令应用于整个集群。您无法仅对集群中的某些节点应用该命令。

该命令的输出类似于以下示例:

bmctl reset -c 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-workspace/cluster name/cluster name.yaml