排解已向 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,這表示您可以使用標準用戶端管理叢集的生命週期 (部分情況除外)。

管理員叢集未顯示在「Cluster basics」(叢集基本資訊) 下拉式清單中

管理員叢集必須先向車隊註冊,才能在 Google Cloud 控制台中建立使用者叢集。如果 Google Cloud 控制台「叢集基本資訊」部分的下拉式清單中未顯示管理員叢集,表示管理員叢集未註冊,或註冊時使用了 gcloud container fleet memberships register 指令。這個 gcloud 指令無法正確註冊管理員叢集。

查看註冊狀態:

  • 在 Google Cloud 控制台中,前往「Kubernetes Engine」 >「Clusters」(叢集) 頁面,然後選取您嘗試建立使用者叢集的 Google Cloud 專案。

    前往 GKE 叢集頁面

    • 如果管理員叢集顯示在清單中,請參閱「註冊管理員叢集」。

    • 如果清單中顯示管理員叢集 is,表示該叢集是使用 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 Distributed Resource Scheduler (DRS) 反相依性規則需要 vSphere 環境中至少有 3 個實體主機。如要修正問題,請在叢集的「Cluster details」(叢集詳細資料) 頁面中,依下列步驟停用「Features」(功能) 部分的「Anti-affinity groups」(反親和性群組)

  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 控制台的「叢集詳細資料」頁面中,編輯「負載平衡器」部分中的「控制層 VIP」和「Ingress VIP」等欄位。如要修正 IP 位址衝突問題,請刪除並重新建立叢集:

  1. 刪除叢集
  2. 使用與現有叢集不衝突的 IP 位址,重新建立叢集。

移除不正常的叢集

叢集可能因多種原因而進入不健康的狀態,例如:

  • Connect 代理程式或地端環境的連線問題。
  • 使用者叢集的管理員叢集已刪除,或管理員與使用者叢集之間有連線問題。
  • 叢集的 VM 已刪除,但叢集尚未刪除。

如果控制台無法刪除叢集,請使用 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 團隊聯絡。

如要進一步瞭解支援資源,包括下列項目,請參閱「取得支援」: