本页面介绍如何调查在 Google Cloud 控制台中创建 GKE on VMware 用户集群时遇到的问题。
集群基本信息下拉列表中未显示管理员集群
您必须先将管理员集群注册到舰队,然后才能在 Google Cloud 控制台中创建用户集群。如果您在 Google Cloud 控制台的集群基本信息部分上的下拉列表中没有看到管理员集群,则表示管理员集群未注册或已使用 gcloud container hub memberships register
命令注册。
检查注册状态:
在 Google Cloud 控制台中,转到 Anthos > 集群页面,然后选择您尝试在其中创建用户集群的 Google Cloud 项目。
如果列表中未显示管理员集群,请参阅注册管理员集群。
如果列表中显示管理员集群,则表示集群使用
gcloud container hub memberships register
命令注册。此gcloud
命令未正确注册管理员集群。
如需解决注册问题,请执行以下操作:
在管理员工作站上,获取成员资格名称:
kubectl describe membership membership \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
取消注册管理员集群。在以下命令中进行以下替换:
- 将
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
- 将
按照注册管理员集群中的步骤重新注册集群。
集群创建错误
本部分介绍了在 Google Cloud 控制台中创建集群期间发生的一些错误。
资源已存在错误
用户集群创建失败,并显示类似于以下内容的错误消息:
Resource 'projects/1234567890/locations/europe-west1/vmwareClusters/user-cluster1'
already exists
Request ID: 129290123128705826
此错误消息表示集群名称已被使用。
以下是解决此问题的一种方案:
删除集群。
使用与现有集群不冲突的其他名称再次创建集群。
反亲和性群组错误
用户集群创建失败,并显示类似于以下内容的错误消息:
- 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 个物理主机。如需解决此问题,请在集群的集群详细信息页面上的功能部分中,停用反亲和性群组,如下所示:
在 Google Cloud 控制台中,进入 GKE Enterprise 集群页面。
选择用户集群所在的 Google Cloud 项目。
在集群列表中,点击集群的名称,然后点击详细信息面板中的查看详细信息。
在功能部分中,点击
修改。取消选中启用反亲和性群组,然后点击完成。
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 控制台的集群详情页面的负载均衡器部分中的控制平面 VIP 和 Ingress VIP 等字段。如需解决有冲突的 IP 地址,请执行以下操作:
删除集群。
使用与现有集群不冲突的 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 控制台中显示为健康状况不佳。按照以下步骤移除剩余的资源。
设置以下环境变量:
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:集群的名称。
如果用户集群的节点池被删除,则集群仍会向舰队注册。通过运行以下命令删除用户集群的舰队成员资格:
gcloud container fleet memberships delete USER_CLUSTER_NAME
如果管理员集群被删除,则集群仍会向舰队注册。通过运行以下命令删除管理员集群的舰队成员资格:
gcloud container fleet memberships delete ADMIN_CLUSTER_NAME
如需了解详情,请参阅
gcloud command reference
。删除 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)"