排解常見問題
本頁說明如何解決 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 閘道,但無法連線至叢集,請嘗試下列步驟:
取得叢集的授權使用者。
gcloud container azure clusters describe CLUSTER_NAME \ --format 'value(authorization.admin_users)'
將
CLUSTER_NAME
替換為叢集的名稱。輸出結果包含具有叢集管理員存取權的使用者名稱。 例如:
{'username': 'administrator@example.com'}
取得目前透過 Google Cloud CLI 驗證的使用者名稱。
gcloud config get-value account
輸出內容會包含透過 Google Cloud CLI 驗證的帳戶。如果
gcloud containers azure clusters describe
和gcloud 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.com
cannot find active connections for cluster
如果是 Kubernetes 1.25 以上版本的叢集,gke-connect-agent
會執行於控制層,不需要節點集區。如果 kubectl
指令沒有回應,請使用 Cloud Logging 檢查控制層元件記錄。
kubectl exec、attach 和 port-forward 指令失敗
使用 Connect 閘道時,kubectl exec
、kubectl attach
和 kubectl 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
。
後續步驟
- 如需其他協助,請與 Cloud Customer Care 團隊聯絡。