排解 Cloud Service Mesh GKE 服務網格部署問題

本指南提供相關資訊,協助解決 Gateway API 服務網格部署作業的問題。

status 欄位中的資訊

所有 Gateway API 資源都有 status 欄位,可從控制器角度反映資源狀態。除了 status 欄位,控制器也會將事件附加至 Gateway API 資源,提供這些資源的作業相關資訊。

舉例來說,使用下列指令檢查 TDMesh 的狀態和事件:

kubectl describe tdmesh td-mesh

輸出結果會與下列內容相似:

...
Status:
  Conditions:
    Last Transition Time:  1970-01-01T00:00:00Z
    Message:               Waiting for controller
    Reason:                NotReconciled
    Status:                False
    Type:                  Scheduled
Events:
...

先前的狀態表示控制器尚未開始調解這個特定網格。如果這個狀態持續超過 5 分鐘,且沒有附加任何事件,請參閱下一節「控制器似乎無法調解 TDMesh 資源」,進一步排解問題。

您可以使用類似方法,偵錯與其他資源相關的問題,例如 HTTPRouteTCPRoute 和其他路由資源。

通常狀態和事件會指出根本問題。

控制器似乎無法調解 TDMesh 資源

如要診斷問題,請確認 gke-td GatewayClass 是否存在:

kubectl get gatewayclasses

輸出內容應包含名為 gke-tdGatewayClass

NAME             CONTROLLER
gke-td           networking.gke.io/gateway

如果系統未傳回該名稱的 GatewayClass,請按照「安裝必要的自訂資源定義」一文的說明,確認所有必要的 CRD 都已安裝在設定叢集中,然後使用下列指令重新啟用 Cloud Service Mesh Google Kubernetes Engine 服務網格的 Hub 功能:

  1. 停用這項功能:

    gcloud container hub ingress disable
    
  2. 重新啟用這項功能:

    gcloud container hub ingress enable \
      --config-membership=/projects/PROJECT_ID/locations/global/memberships/gke-1