删除管理员集群

本页介绍如何删除 GKE On-Prem 管理员集群。

准备工作

在删除管理员集群之前,请完成以下步骤:

  • 删除其用户集群。请参阅删除用户集群
  • 从管理员集群中删除使用 PodDisruptionBudget (PDB) 的任何工作负载。
  • 从管理员集群中删除所有外部对象,例如 PersistentVolume。
  • 设置一个 KUBECONFIG 环境变量,使其指向您要删除的管理员集群的 kubeconfig:

    export KUBECONFIG=[ADMIN_CLUSTER_KUBECONFIG]

    其中,[ADMIN_CLUSTER_KUBECONFIG] 是管理员集群的 kubeconfig 文件的路径。

删除日志记录和监控功能

GKE On-Prem 的日志记录和监控 Pods(从 StatefulSet 部署)使用 PDBs,以阻止节点正常排空。要正确删除管理员集群,您需要删除这些 Pods。

要删除日志记录和监控 Pod,请运行以下命令:

kubectl delete monitoring --all -n kube-system
kubectl delete stackdriver --all -n kube-system

删除监控功能会清除与 StatefulSet 关联的 PersistentVolume (PV),但需要单独删除 Stackdriver 的 PersistentVolume。

可选择删除 Stackdriver PV。如果您选择不删除 PV,请在用户集群之外的位置记录关联 PV 的位置和名称。

通过删除永久性卷声明 (PVC),可以一并删除 PV。

要查找 Stackdriver PVC,请运行以下命令:

kubectl get pvc -n kube-system

要删除 PVC,请运行以下命令:

kubectl delete pvc -n kube-system [PVC_NAME]

验证日志记录和监控功能是否已被移除

要验证日志记录和监控功能是否已被移除,请运行以下命令:

kubectl get pvc -n kube-system
kubectl get statefulsets -n kube-system

清理管理员集群的 F5 分区

从管理员集群中删除 gke-system 命名空间可确保正确清理 F5 分区,从而让您可以将分区重新用于其他管理员集群。

要删除 gke-system 命名空间,请运行以下命令:

kubectl delete ns gke-system

然后删除 LoadBalancer 类型的所有剩余 Service。要列出所有 Service,请运行以下命令:

kubectl get services --all-namespaces

对于 LoadBalancer 类型的每个 Service,请通过运行以下命令将其删除:

kubectl delete service [SERVICE_NAME] -n [SERVICE_NAMESPACE]

然后,在 F5 BIG-IP 控制台中执行以下操作:

  1. 在控制台的右上角,切换到要清理的分区。
  2. 依次选择 Local Traffic > Virtual Servers > Virtual Server List
  3. Virtual Servers 菜单中,移除所有虚拟 IP 地址。
  4. 选择 Pools,然后删除所有池。
  5. 选择 Nodes,然后删除所有节点。

验证 F5 分区是否干净

CLI

通过运行以下命令来检查 VIP 地址是否已停用:

ping -c 1 -W 1 [F5_LOAD_BALANCER_IP]; echo $?

如果 VIP 地址已停用,该命令将返回 1

F5 界面

要检查是否已从 F5 界面中清理分区,请执行以下步骤:

  1. 点击右上角的 Partition 下拉菜单。选择您的管理员集群的分区。
  2. 从左侧 Main 菜单中,选择 Local Traffic > Network Map。Local Traffic Network Map 下方不应列出任何内容。
  3. Local Traffic > Virtual Servers 中,选择 Nodes,然后选择 Nodes List。此处也不应列出任何内容。

如果还有任何条目,请从界面中手动删除。

关闭管理员节点机器

要删除管理员控制层面节点机器,您需要关停 vSphere 资源池中剩余的所有管理员虚拟机。

vSphere 界面

执行以下步骤:

  1. 从 vSphere 菜单中,选择 vSphere 资源池中的虚拟机。
  2. 在“VM”菜单顶部,点击 Actions
  3. 依次选择 Power > Power Off。虚拟机可能需要几分钟时间才能关停。

删除管理员节点机器

关停虚拟机后,您可以删除虚拟机。

vSphere 界面

执行以下步骤:

  1. 从 vSphere 菜单中,选择 vSphere 资源池中的虚拟机。
  2. 在“VM”菜单顶部,点击 Actions
  3. 点击 Delete from Disk

完成操作后

删除完管理员集群后,删除其 kubeconfig。

问题排查

如需了解详情,请参阅问题排查

使用 gkectl 诊断集群问题

使用 gkectl diagnose 命令识别集群问题并与 Google 共享集群信息。请参阅诊断集群问题

默认日志记录行为

对于 gkectlgkeadm,使用默认日志记录设置便已足够:

  • 默认情况下,日志条目的保存方式如下:

    • 对于 gkectl,默认日志文件为 /home/ubuntu/.config/gke-on-prem/logs/gkectl-$(date).log,该文件与运行 gkectl 的本地目录中的 logs/gkectl-$(date).log 文件进行符号链接。
    • 对于 gkeadm,默认日志文件是运行 gkeadm 的本地目录中的 logs/gkeadm-$(date).log
  • 所有日志条目都会保存在日志文件中,即使它们不输出到终端(当 --alsologtostderrfalse 时)也是如此。
  • -v5 详细程度(默认)涵盖支持团队所需的所有日志条目。
  • 日志文件还包含已执行的命令和失败消息。

我们建议您在需要帮助时将日志文件发送给支持团队。

为日志文件指定非默认位置

要为 gkectl 日志文件指定非默认位置,请使用 --log_file 标志。您指定的日志文件不会与本地目录进行符号链接。

要为 gkeadm 日志文件指定非默认位置,请使用 --log_file 标志。

在管理员集群中查找 Cluster API 日志

如果虚拟机在管理员控制层面启动后无法启动,您可以通过在管理员集群中检查 Cluster API 控制器的日志来尝试进行调试:

  1. kube-system 命名空间中找到 Cluster API 控制器 pod 的名称,其中 [ADMIN_CLUSTER_KUBECONFIG] 是管理员集群的 kubeconfig 文件的路径:

    kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] -n kube-system get pods | grep clusterapi-controllers
  2. 打开 pod 的日志,其中 [POD_NAME] 是 pod 的名称。您可以选择使用 grep 或类似工具来搜索错误:

    kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] -n kube-system logs [POD_NAME] vsphere-controller-manager