排解常見問題

本頁說明如何解決 GKE on Azure 的常見問題。

如需其他協助,請與 Cloud Customer Care 團隊聯絡。

常見錯誤訊息

下列各節說明一些常見錯誤訊息的原因和解決方法。

伺服器沒有資源

如果叢集沒有正在執行的節點集區,或 Connect 閘道無法連線至節點集區,就會發生 error: the server doesn't have a resource type "services" 等錯誤。如要檢查節點集區的狀態,請執行下列指令:

gcloud container azure node-pools list \
    --cluster-name CLUSTER_NAME \
    --location LOCATION

更改下列內容:

  • CLUSTER_NAME:叢集名稱
  • LOCATION:管理叢集的 Google Cloud 位置

輸出結果包含叢集節點集區的狀態。如果沒有列出節點集區,請建立節點集區

禁止使用的使用者

如果使用者名稱沒有叢集的管理員存取權,就會發生下列錯誤:

Error from server (Forbidden): users "administrator@example.com" is forbidden:
User "system:serviceaccount:gke-connect:connect-agent-sa" cannot impersonate
resource "users" in API group "" at the cluster scope

建立叢集時,您可以傳遞 --admin-users 旗標,設定其他使用者。

如果您使用 Connect 閘道,但無法連線至叢集,請嘗試下列步驟:

  1. 取得叢集的授權使用者。

    gcloud container azure clusters describe CLUSTER_NAME \
        --format 'value(authorization.admin_users)'
    

    CLUSTER_NAME 替換為叢集的名稱。

    輸出結果包含具有叢集管理員存取權的使用者名稱。 例如:

    {'username': 'administrator@example.com'}
    
  2. 取得目前透過 Google Cloud CLI 驗證的使用者名稱。

    gcloud config get-value account
    

    輸出內容會包含透過 Google Cloud CLI 驗證的帳戶。如果 gcloud containers azure clusters describegcloud config get-value account 的輸出內容不相符,請執行 gcloud auth login,並以具有叢集管理存取權的使用者名稱進行驗證。

kubectl 指令相關問題

下列各節提供指引,說明如何解決 kubectl 指令沒有回應或失敗的問題。

kubectl 指令停止回應

如果叢集執行的 Kubernetes 版本低於 1.25,且 kubectl 指令沒有回應或逾時,最常見的原因是您尚未建立節點集區。根據預設,Azure 上的 GKE 會產生使用 Connect 閘道做為可連上網際網路端點的 kubeconfig 檔案。如要這麼做,gke-connect-agent Deployment 必須在叢集的節點集區中執行。

如需更多診斷資訊,請執行下列指令:

kubectl cluster-info -v=9

如果沒有正在執行的節點集區,要求會失敗並顯示 404 錯誤。connectgateway.googleapis.comcannot find active connections for cluster

如果是 Kubernetes 1.25 以上版本的叢集,gke-connect-agent會執行於控制層,不需要節點集區。如果 kubectl 指令沒有回應,請使用 Cloud Logging 檢查控制層元件記錄。

kubectl exec、attach 和 port-forward 指令失敗

使用 Connect 閘道時,kubectl execkubectl attachkubectl port-forward 指令可能會失敗,並顯示 error: unable to upgrade connection 訊息。使用 Connect 閘道做為 Kubernetes API 伺服器端點時,會受到這項限制。

如要解決這個問題,請使用 kubeconfig 指定叢集的私有端點。如要瞭解如何透過叢集的私有端點存取叢集,請參閱「設定 kubectl 的叢集存取權」。

一般 kubectl 疑難排解

如果使用 Connect Gateway:

  • 確認您已在 Google Cloud 專案中啟用 Connect 閘道:

    gcloud services enable connectgateway.googleapis.com
    
  • 如果叢集的 Kubernetes 版本低於 1.25,請確保您至少有一個 Linux 節點集區正在執行,且 gke-connect-agent 正在執行。詳情請參閱「排解叢集連線問題」。

  • 如果是 Kubernetes 1.25 以上版本的叢集,請使用 Cloud Logging 查看記錄檔gke-connect-agent

後續步驟