本页介绍如何删除 GKE On-Prem 管理员集群。
准备工作
在删除管理员集群之前,请完成以下步骤:
- 删除其用户集群。请参阅删除用户集群。
- 从管理员集群中删除使用 PodDisruptionBudget (PDB) 的任何工作负载。
- 从管理员集群中删除所有外部对象,例如 PersistentVolume。
设置一个
KUBECONFIG
环境变量,使其指向您要删除的管理员集群的 kubeconfig:export KUBECONFIG=[ADMIN_CLUSTER_KUBECONFIG]
其中,[ADMIN_CLUSTER_KUBECONFIG] 是管理员集群的 kubeconfig 文件的路径。
删除日志记录和监控功能
GKE On-Prem 的日志记录和监控 Pod(从 StatefulSet 部署)使用 PDB,以阻止节点正常排空。要正确删除管理员集群,您需要删除这些 Pod。
要删除日志记录和监控 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 控制台中执行以下操作:
- 在控制台的右上角,切换到要清理的分区。
- 依次选择 Local Traffic > Virtual Servers > Virtual Server List。
- 在 Virtual Servers 菜单中,移除所有虚拟 IP 地址。
- 选择 Pools,然后删除所有池。
- 选择 Nodes,然后删除所有节点。
验证 F5 分区是否干净
CLI
通过运行以下命令来检查 VIP 地址是否已停用:
ping -c 1 -W 1 [F5_LOAD_BALANCER_IP]; echo $?
如果 VIP 地址已停用,该命令将返回 1
。
F5 界面
要检查是否已从 F5 界面中清理分区,请执行以下步骤:
- 点击右上角的 Partition 下拉菜单。选择您的管理员集群的分区。
- 从左侧 Main 菜单中,选择 Local Traffic > Network Map。Local Traffic Network Map 下方不应列出任何内容。
- 从 Local Traffic > Virtual Servers 中,选择 Nodes,然后选择 Nodes List。此处也不应列出任何内容。
如果还有任何条目,请从界面中手动删除。
关闭管理员节点机器
要删除管理员控制层面节点机器,您需要关停 vSphere 资源池中剩余的所有管理员虚拟机。
vSphere 界面
执行以下步骤:
- 从 vSphere 菜单中,选择 vSphere 资源池中的虚拟机。
- 在“VM”菜单顶部,点击 Actions。
- 依次选择 Power > Power Off。虚拟机可能需要几分钟时间才能关停。
删除管理员节点机器
关停虚拟机后,您可以删除虚拟机。
vSphere 界面
执行以下步骤:
- 从 vSphere 菜单中,选择 vSphere 资源池中的虚拟机。
- 在“VM”菜单顶部,点击 Actions。
- 点击 Delete from Disk。
完成操作后
删除完管理员集群后,删除其 kubeconfig。
问题排查
如需了解详情,请参阅问题排查。
使用 gkectl
诊断集群问题
使用 gkectl diagnose
命令识别集群问题并与 Google 共享集群信息。请参阅诊断集群问题。
默认日志记录行为
对于 gkectl
和 gkeadm
,使用默认日志记录设置便已足够:
-
默认情况下,日志条目的保存方式如下:
- 对于
gkectl
,默认日志文件为/home/ubuntu/.config/gke-on-prem/logs/gkectl-$(date).log
,该文件与运行gkectl
的本地目录中的logs/gkectl-$(date).log
文件进行符号链接。 - 对于
gkeadm
,默认日志文件是运行gkeadm
的本地目录中的logs/gkeadm-$(date).log
。
- 对于
- 所有日志条目都会保存在日志文件中,即使它们不输出到终端(当
--alsologtostderr
为false
时)也是如此。 -v5
详细程度(默认)涵盖支持团队所需的所有日志条目。- 日志文件还包含已执行的命令和失败消息。
我们建议您在需要帮助时将日志文件发送给支持团队。
为日志文件指定非默认位置
要为 gkectl
日志文件指定非默认位置,请使用 --log_file
标志。您指定的日志文件不会与本地目录进行符号链接。
要为 gkeadm
日志文件指定非默认位置,请使用 --log_file
标志。
在管理员集群中查找 Cluster API 日志
如果虚拟机在管理员控制层面启动后无法启动,您可以通过在管理员集群中检查 Cluster API 控制器的日志来尝试进行调试:
在
kube-system
命名空间中找到 Cluster API 控制器 pod 的名称,其中 [ADMIN_CLUSTER_KUBECONFIG] 是管理员集群的 kubeconfig 文件的路径:kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] -n kube-system get pods | grep clusterapi-controllers
打开 pod 的日志,其中 [POD_NAME] 是 pod 的名称。您可以选择使用
grep
或类似工具来搜索错误:kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] -n kube-system logs [POD_NAME] vsphere-controller-manager