删除用户集群

本页面介绍如何删除 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.comgkeonprem.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 管理,请执行以下步骤删除集群:

  1. 在控制台中,前往 Google Kubernetes Engine 集群概览页面。

    转到 GKE 集群

  2. 选择用户集群所在的 Google Cloud 项目。

  3. 在集群列表中,找到要删除的集群。 如果类型外部,则表示集群是使用 gkectl 创建的,并且未注册在 GKE On-Prem API 中。在这种情况下,请按照 gkectl 标签页中的步骤删除集群。

    如果状态列中的图标表明存在问题,请按照 gcloud CLI 标签页中的步骤删除集群。您需要向 delete 命令添加 --ignore-errors 标志。

  4. 点击您要删除的集群的名称。

  5. 详细信息面板的窗口顶部附近,点击 删除

  6. 当系统提示您确认时,请输入集群名称,然后点击移除

gcloud CLI

如果用户集群由 GKE On-Prem API 管理,请在安装了 gcloud CLI 的计算机上执行以下操作:

  1. 更新组件:

    gcloud components update
    
  2. 获取集群列表,以便确保在删除命令中指定正确的集群名称:

    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
    
  3. 运行以下命令以删除集群:

    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 中清理用户集群的虚拟机

要验证用户集群的虚拟机是否已删除,请执行以下步骤:

  1. 从 vSphere Web Client 左侧的 Navigator 菜单中,点击 Hosts and Clusters 菜单。

  2. 查找管理员集群的资源池。这是管理员集群配置文件中 vCenter.resourcePool 的值。

  3. 在资源池下,找到以您的用户集群名称为前缀的虚拟机。这些是您的用户集群的控制平面节点。将有一个或三个节点,具体取决于您的用户集群是否具有高可用性控制平面。

  4. 查找用户集群的资源池。这是用户集群配置文件中 vCenter.resourcePool 的值。如果您的用户集群配置文件未指定资源池,则会从管理员集群继承。

  5. 在资源池下,找到以您的用户集群中节点池的名称为前缀的虚拟机。这些是用户集群中的工作器节点。

  6. 对于每个控制平面节点和每个工作器节点:

    1. 在 vSphere Web 客户端中,右键点击虚拟机,然后选择电源 > 关停

    2. 关停虚拟机后,右键点击虚拟机,然后选择从磁盘中删除

清理用户集群的 F5 分区

如果用户集群的分区中还有剩余条目,请执行以下步骤:

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

完成操作后

删除集群后,您可以删除用户集群的 kubeconfig。