对在 GKE On-Prem API 中注册的集群进行问题排查

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

GKE On-Prem API 是由 Google Cloud 托管的 API,可让您使用 Terraform 和标准 Google Cloud 工具管理本地集群的生命周期。GKE On-Prem API 在 Google Cloud 的基础架构中运行。Terraform、Google Cloud 控制台和 Google Cloud CLI 都是该 API 的客户端,它们使用该 API 创建、更新、升级和删除数据中心中的集群。如果您使用标准客户端创建集群,则集群会在 GKE On-Prem API 中注册,这意味着您可以使用标准客户端来管理集群的生命周期(有一些例外情况)。

如果您需要其他帮助,请与 Cloud Customer Care 联系。

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

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

检查注册状态:

  • 在 Google Cloud 控制台中,前往 Kubernetes Engine > 集群页面,然后选择您尝试在其中创建用户集群的同一个 Google Cloud 项目。

    转到“GKE 集群”页面

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

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

如需解决注册问题,请完成以下步骤:

  1. 删除管理员集群的舰队成员资格。

    gcloud container fleet memberships delete ADMIN_CLUSTER_NAME \
      --project=PROJECT_ID \
      --location=global
    
    • ADMIN_CLUSTER_NAME:管理员集群的名称。
    • PROJECT_ID舰队宿主项目的 ID。 该项目是您尝试在 Google Cloud 控制台中创建用户集群时选择的项目。
  2. 按照注册管理员集群中的步骤重新注册集群。

集群创建错误

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

资源已存在错误

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

Resource 'projects/1234567890/[...]/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 集群”页面。

    转到“GKE 集群”页面

  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 地址再次创建集群。

移除运行状况不佳的集群

集群可能会由于多种原因而处于运行状况不佳的状态,例如:

  • Connect Agent 或本地环境的连接问题。
  • 用户集群的管理员集群被删除,或者管理员集群和用户集群之间存在连接问题。
  • 在删除集群之前,集群的虚拟机已删除。

如果控制台无法删除集群,请使用 gcloud CLI 命令从运行状况不佳的集群中删除 Google Cloud 资源。如果您最近尚未更新 gcloud CLI,请运行以下命令来更新组件:

gcloud components update

接下来,删除 Google Cloud 资源。

用户集群

  1. 删除用户集群。

    gcloud container vmware clusters delete USER_CLUSTER_NAME \
      --project=PROJECT_ID \
      --location=REGION \
      --force \
      --allow-missing \
      --ignore-errors

    替换以下内容:

    • USER_CLUSTER_NAME:要删除的用户集群的名称。

    • PROJECT_ID:集群在其中注册的项目的 ID。

    • REGION:与用户集群关联的 Google Cloud 位置。 该位置将显示在控制台中。

      --force 标志可用于删除包含节点池的集群。如果没有 --force 标志,您必须先删除节点池,然后再删除集群。

      --allow-missing 标志使该命令可在未找到集群时继续运行。

      管理员集群和用户集群无法访问时,--ignore-errors 标志会移除 Google Cloud 资源。 之后可能会剩余某些 F5 或 vSphere 资源。如需了解如何清理剩余资源,请参阅清理资源

      此命令会删除集群(如果存在),并从 Google Cloud 中移除 GKE On-Prem API 和舰队成员资格资源。

  2. 确认 GKE On-Prem API 资源已删除:

    gcloud container vmware clusters list \
      --project=PROJECT_ID \
      --location=-

    设置 --location=- 时,意味着列出所有区域中的所有集群。如果您需要缩小列表范围,请将 --location 设置为特定区域

  3. 确认舰队成员资源已删除:

    gcloud container fleet memberships list \
      --project=PROJECT_ID

管理员集群

  1. 如果您已在 GKE On-Prem API 中注册管理员集群,请取消注册此集群:

    gcloud container vmware admin-clusters unenroll ADMIN_CLUSTER_NAME \
     --project=PROJECT_ID \
     --location=REGION \
     --allow-missing 
    

    请替换以下内容:

    • ADMIN_CLUSTER_NAME:管理员集群的名称。
    • PROJECT_ID:舰队宿主项目的 ID。
    • REGION:Google Cloud 区域。

    如果未找到舰队成员资格,则 --allow-missing 标志会取消注册集群。

    此命令会从 Google Cloud 中移除 GKE On-Prem API 资源。

  2. 从舰队中移除集群:

    gcloud container fleet memberships delete ADMIN_CLUSTER_NAME \
     --project=PROJECT_ID \
     --location=global

    此命令会从 Google Cloud 中移除舰队成员资格资源。

  3. 确认 GKE On-Prem API 资源已删除:

    gcloud container fleet memberships delete ADMIN_CLUSTER_NAME --project=FLEET_HOST_PROJECT_ID
    

    设置 --location=- 时,意味着列出所有区域中的所有集群。如果您需要缩小列表范围,请将 --location 设置为特定区域

  4. 确认舰队成员资源已删除:

    gcloud container fleet memberships list \
      --project=PROJECT_ID

后续步骤

如果您需要其他帮助,请与 Cloud Customer Care 联系。