本页面介绍如何删除 GKE on VMware 用户集群。用户集群删除会从舰队中取消注册集群,然后删除工作负载、节点池、控制平面节点和相应的资源,例如虚拟机、F5 分区和数据磁盘。
选择用于删除集群的工具
删除用户集群的方式取决于集群是否已在 GKE On-Prem API 中注册。如果满足以下任一条件,则表明用户集群已在 GKE On-Prem API 中注册:
集群是使用 Google Cloud 控制台、Google Cloud CLI (gcloud CLI) 或 Terraform 创建的,后者会自动在 GKE On-Prem API 中注册集群。这些标准应用统称为 GKE On-Prem API 客户端。
集群是使用
gkectl
创建的,但已在 GKE On-Prem API 中注册。
如果集群已在 GKE On-Prem API 中注册,请使用 GKE On-Prem API 客户端删除集群。如果集群未在 GKE On-Prem API 中注册,请在管理员工作站上使用 gkectl
删除集群。
如需查找特定项目中在 GKE On-Prem API 中注册的所有用户集群,请运行以下命令:
gcloud container vmware clusters list \ --project=PROJECT_ID \ --location=-
设置 --location=-
时,意味着列出所有区域中的所有集群。如果您需要缩小列表范围,可以将 --location
设置为特定区域。
如果集群已列出,则表明它已在 GKE On-Prem API 中注册。如果您不是项目所有者,则必须至少具有项目的 Identity and Access Management 角色 roles/gkeonprem.admin
才能删除已注册的集群。如需详细了解此角色包含的权限,请参阅 IAM 文档中的 GKE On-Prem API 角色。
删除有状态工作负载
在删除集群之前,请通过运行 kubectl delete
来删除有状态工作负载、PVC 和 PV。
删除用户集群
gkectl
您可以使用 gkectl
删除未在 GKE On-Prem API 中注册的集群。如果贵组织的代理和防火墙规则允许流量到达 gkeonprem.googleapis.com
和 gkeonprem.mtls.googleapis.com
(GKE On-Prem API 的服务名称),则 gkectl
将能够删除已注册的集群。
在管理员工作站上运行以下命令以删除集群:
gkectl delete cluster \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --cluster CLUSTER_NAME
其中
ADMIN_CLUSTER_KUBECONFIG
是管理员集群的 kubeconfig 文件的路径。CLUSTER_NAME
是要删除的用户集群的名称。
如果删除失败,并显示如下所示的消息:
Exit with error: ... failed to unenroll user cluster CLUSTER_NAME failed to create GKE On-Prem API client
这意味着集群已注册,但 gkectl
无法访问 GKE On-Prem API。在这种情况下,最简单的方法是使用 GKE On-Prem API 客户端删除集群。
如果删除用户集群中途失败,则您可以在运行 gkectl
时使用 --force
标志来忽略中途错误并继续删除操作。
gkectl delete cluster \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --cluster CLUSTER_NAME \ --force
如果您使用的是 Seesaw 捆绑式负载均衡器,请删除负载均衡器。
控制台
如果用户集群由 GKE On-Prem API 管理,请执行以下步骤删除集群:
在控制台中,前往 Google Kubernetes Engine 集群概览页面。
选择用户集群所在的 Google Cloud 项目。
在集群列表中,找到要删除的集群。 如果类型为外部,则表示集群是使用
gkectl
创建的,并且未注册在 GKE On-Prem API 中。在这种情况下,请按照gkectl
标签页中的步骤删除集群。如果状态列中的图标表明存在问题,请按照 gcloud CLI 标签页中的步骤删除集群。您需要向 delete 命令添加
--ignore-errors
标志。点击您要删除的集群的名称。
在详细信息面板的窗口顶部附近,点击
删除。当系统提示您确认时,请输入集群名称,然后点击移除。
gcloud CLI
如果用户集群由 GKE On-Prem API 管理,请在安装了 gcloud CLI 的计算机上执行以下操作:
更新组件:
gcloud components update
获取集群列表,以便确保在删除命令中指定正确的集群名称:
gcloud container vmware clusters list \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
替换以下内容:
FLEET_HOST_PROJECT_ID
:集群在其中注册的项目的 ID。LOCATION
:与用户集群关联的 Google Cloud 位置。
输出类似于以下内容:
NAME LOCATION VERSION ADMIN_CLUSTER. STATE example-user-cluster-1a us-west1 1.28.300-gke.123 example-admin-cluster-1 RUNNING
运行以下命令以删除集群:
gcloud container vmware clusters delete USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION \ --force \ --allow-missing
替换以下内容:
USER_CLUSTER_NAME
:要删除的用户集群的名称。FLEET_HOST_PROJECT_ID
:集群在其中注册的项目的 ID。LOCATION
:与用户集群关联的 Google Cloud 位置。
您可以使用
--force
标志来删除包含节点池的集群。如果没有--force
标志,您必须先删除节点池,然后再删除集群。--allow-missing
标志是标准 Google API 标志。添加此标志后,如果未找到集群,该命令会返回成功。如果该命令返回包含文本
failed connecting to the cluster's control plane
的错误,则表示管理员集群、Connect Agent 或本地环境存在连接问题。如果您认为连接问题是暂时性的(例如由于网络问题导致),请等待并重试该命令。
如果重试该命令仍然失败,请参阅收集 Connect Agent 日志,以使用 Connect Agent 来排查问题。
如果您知道管理员集群已被删除,或者管理员集群或用户集群的虚拟机已关停或无法访问,请添加
--ignore-errors
标志并重试该命令。
如需了解其他标志,请参阅 gcloud CLI 参考文档。
清理资源
如果您在删除集群时出现问题,可能会剩余一些 F5 或 vSphere 资源。以下部分介绍了如何清理这些剩余资源。
在 vSphere 中清理用户集群的虚拟机
要验证用户集群的虚拟机是否已删除,请执行以下步骤:
从 vSphere Web Client 左侧的 Navigator 菜单中,点击 Hosts and Clusters 菜单。
查找管理员集群的资源池。这是管理员集群配置文件中
vCenter.resourcePool
的值。在资源池下,找到以您的用户集群名称为前缀的虚拟机。这些是您的用户集群的控制平面节点。将有一个或三个节点,具体取决于您的用户集群是否具有高可用性控制平面。
查找用户集群的资源池。这是用户集群配置文件中
vCenter.resourcePool
的值。如果您的用户集群配置文件未指定资源池,则会从管理员集群继承。在资源池下,找到以您的用户集群中节点池的名称为前缀的虚拟机。这些是用户集群中的工作器节点。
对于每个控制平面节点和每个工作器节点:
在 vSphere Web 客户端中,右键点击虚拟机,然后选择电源 > 关停。
关停虚拟机后,右键点击虚拟机,然后选择从磁盘中删除。
清理用户集群的 F5 分区
如果用户集群的分区中还有剩余条目,请执行以下步骤:
- 在 F5 BIG-IP 控制台的右上角,切换到您要清理的用户集群分区。
- 依次选择 Local Traffic > Virtual Servers > Virtual Server List。
- 在 Virtual Servers 菜单中,移除所有虚拟 IP 地址。
- 选择 Pools,然后删除所有池。
- 选择 Nodes,然后删除所有节点。
完成操作后
删除集群后,您可以删除用户集群的 kubeconfig。