排查在 Google Cloud 控制台中创建用户集群的问题

本页面介绍如何调查在 Google Cloud 控制台中创建 GKE on VMware 用户集群时遇到的问题。

集群基本信息下拉列表中未显示管理员集群

您必须先将管理员集群注册到舰队,然后才能在 Google Cloud 控制台中创建用户集群。如果您在 Google Cloud 控制台的集群基本信息部分上的下拉列表中没有看到管理员集群,则表示管理员集群未注册或已使用 gcloud container hub memberships register 命令注册。

检查注册状态:

  • 在 Google Cloud 控制台中,转到 Anthos > 集群页面,然后选择您尝试在其中创建用户集群的 Google Cloud 项目。

    进入 GKE Enterprise 集群页面

    • 如果列表中未显示管理员集群,请参阅注册管理员集群

    • 如果列表中显示管理员集群,则表示集群使用 gcloud container hub memberships register 命令注册。此 gcloud 命令未正确注册管理员集群。

如需解决注册问题,请执行以下操作:

  1. 在管理员工作站上,获取成员资格名称:

    kubectl describe membership membership \
      --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    
  2. 取消注册管理员集群。在以下命令中进行以下替换:

    • MEMBERSHIP_NAME 替换为上一个命令中的成员资格名称。
    • FLEET_HOST_PROJECT_ID 替换为舰队宿主项目的 ID。该项目是您尝试在 Google Cloud 控制台中创建用户集群时选择的项目。
    • ADMIN_CLUSTER_KUBECONFIG 替换为管理员集群的 kubeconfig 文件的路径。
    • ADMIN_CLUSTER_CONTEXT 替换为 kubeconfig 文件中显示的管理员集群的上下文。您可以通过运行 kubectl config current-context 从命令行获取此值。
    gcloud container fleet memberships unregister MEMBERSHIP_NAME \
      --project=FLEET_HOST_PROJECT_ID \
      --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \
      --context=ADMIN_CLUSTER_CONTEXT
    
  3. 按照注册管理员集群中的步骤重新注册集群。

集群创建错误

本部分介绍了在 Google Cloud 控制台中创建集群期间发生的一些错误。

资源已存在错误

用户集群创建失败,并显示类似于以下内容的错误消息:

Resource 'projects/1234567890/locations/europe-west1/vmwareClusters/user-cluster1'
already exists
Request ID: 129290123128705826

此错误消息表示集群名称已被使用。

以下是解决此问题的一种方案:

  1. 删除集群

  2. 使用与现有集群不冲突的其他名称再次创建集群。

反亲和性群组错误

用户集群创建失败,并显示类似于以下内容的错误消息:

- Validation Category: VCenter
    - [FATAL] Hosts for AntiAffinityGroups: Anti-affinity groups enabled with
    available vsphere host number 1 less than 3, please add more vsphere hosts
    or disable anti-affinity groups.

VMware 分布式资源调度器 (DRS) 反亲和性规则要求 vSphere 环境中至少有 3 个物理主机。如需解决此问题,请在集群的集群详细信息页面上的功能部分中,停用反亲和性群组,如下所示:

  1. 在 Google Cloud 控制台中,进入 GKE Enterprise 集群页面。

    进入 GKE Enterprise 集群页面

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

  3. 在集群列表中,点击集群的名称,然后点击详细信息面板中的查看详细信息

  4. 功能部分中,点击 修改

  5. 取消选中启用反亲和性群组,然后点击完成

  6. Google Cloud 控制台会显示集群状态:正在更改。点击显示详情,以查看资源状态条件状态消息

IP 地址有冲突错误

用户集群创建失败,并显示类似于以下内容的错误消息:

- Validation Category: Network Configuration
- [FAILURE] CIDR, VIP and static IP (availability and overlapping): user: user
  cluster control plane VIP "10.251.133.132" overlaps with
  example-cluster1/control plane VIP "10.251.133.132"

目前,您无法修改 Google Cloud 控制台的集群详情页面的负载均衡器部分中的控制平面 VIPIngress VIP 等字段。如需解决有冲突的 IP 地址,请执行以下操作:

  1. 删除集群

  2. 使用与现有集群不冲突的 IP 地址再次创建集群。

集群删除操作未能从 Cloud 控制台中移除集群

删除用户集群后,该集群仍会显示在 Google Cloud 控制台中。当用户集群断开与其管理员集群的连接时,可能会发生这种情况。如需解决此问题,请按照移除 Anthos On-Prem API 资源中的步骤操作。

移除 GKE On-Prem API 资源

Google Cloud 控制台使用 GKE On-Prem API 来管理用户集群生命周期。您还可以将用户集群配置为由 GKE On-Prem API 管理。在以下情况下,不会删除 GKE On-Prem API 资源:

  • 由 GKE On-Prem API 管理的用户集群的节点池是使用 gkectl 删除的。

  • 在 Cloud 控制台中创建的用户集群的管理员集群被删除。

如果 GKE On-Prem API 资源未删除,则用户集群仍会在 Google Cloud 控制台中显示为健康状况不佳。按照以下步骤移除剩余的资源。

  1. 设置以下环境变量:

    export PROJECT_ID=FLEET_HOST_PROJECT_ID
    export REGION=REGION
    export CLUSTER_NAME=USER_CLUSTER_NAME
    

    替换以下内容:

    • FLEET_HOST_PROJECT_ID:在其中创建用户集群的项目 ID,也是舰队宿主项目。

    • REGION:集群的区域。该区域显示在控制台中集群的详细信息面板中的位置字段。

    • USER_CLUSTER_NAME:集群的名称。

  2. 如果用户集群的节点池被删除,则集群仍会向舰队注册。通过运行以下命令删除用户集群的舰队成员资格:

    gcloud container fleet memberships delete USER_CLUSTER_NAME
    

    如果管理员集群被删除,则集群仍会向舰队注册。通过运行以下命令删除管理员集群的舰队成员资格:

    gcloud container fleet memberships delete ADMIN_CLUSTER_NAME
    

    如需了解详情,请参阅 gcloud command reference

  3. 删除 GKE On-Prem API 元数据:

    curl -X DELETE "https://gkeonprem.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/vmwareClusters/${CLUSTER_NAME}:unenroll?force=true&allow_missing=true" \
    -H "Content-Type: application/json" \
    -H "X-GFE-SSL: yes" \
    -H "Authorization: Bearer $(gcloud auth print-access-token)"