建立 Google Kubernetes Engine (GKE) 叢集時,如果發生失敗,可能會導致您無法佈建必要的基礎架構。失敗的常見原因包括違反 constraints/compute.vmExternalIpAccess 或 constraints/compute.restrictVpcPeering 組織政策。本頁面可協助您排解及解決因這些組織政策導致的叢集建立失敗問題。
對於平台管理員和操作人員,或其他負責在Google Cloud 組織內建立及管理 GKE 叢集的使用者,這些資訊十分重要。如要進一步瞭解Google Cloud 內容中提及的常見角色和工作範例,請參閱「常見的 GKE 使用者角色和工作」。
如需 Kubernetes 叢集的一般問題,請參閱 Kubernetes 說明文件中的「疑難排解叢集」。
錯誤:違反 constraints/compute.vmExternalIpAccess 限制
嘗試建立公開 GKE 叢集時,可能會發生類似下列的錯誤:
Constraint constraints/compute.vmExternalIpAccess violated for project
這項設定只會影響公開 GKE 叢集,包括 GKE Autopilot 叢集。
建立公開 GKE 叢集時,系統會為構成叢集 worker 節點的基礎 Compute Engine VM 指派外部 IP 位址。如果您將組織政策限制 constraints/compute.vmExternalIpAccess 設為 Deny All,或在組織、資料夾或專案層級限制特定 VM 執行個體的外部 IP 位址,政策就會禁止 GKE worker 節點取得外部 IP 位址,導致叢集建立失敗。
如要尋找叢集建立作業的記錄,您可以使用Logs Explorer,透過類似下列的搜尋查詢,查看 GKE 叢集作業稽核記錄:
resource.type="gke_cluster"
logName="projects/test-last-gke-sa/logs/cloudaudit.googleapis.com%2Factivity"
protoPayload.methodName="google.container.v1beta1.ClusterManager.CreateCluster"
resource.labels.cluster_name="CLUSTER_NAME"
resource.labels.project_id="PROJECT_ID"
更改下列內容:
CLUSTER_NAME:未建立的叢集名稱。PROJECT_ID:您的專案 ID。
如要解決這個問題,請確認在您嘗試建立 GKE 公開叢集的專案中,限制 constraints/compute.vmExternalIpAccess 的有效政策為 Allow All。如要瞭解如何使用這項限制,請參閱「將外部 IP 位址限制為特定 VM 執行個體」。
將限制設為 Allow All 後,請刪除失敗的叢集並建立新叢集。這是因為無法修復失敗的叢集。
錯誤:違反限制 constraints/compute.restrictVpcPeering
嘗試建立私人 GKE 叢集,並使用虛擬私有雲網路對接,將虛擬私有雲網路連線至 Google 代管的控制層專案時,可能會發生類似下列的錯誤:
Constraint constraints/compute.restrictVpcPeering violated for project
如果您在擁有叢集虛擬私有雲網路的組織、資料夾或專案上,設定 constraints/compute.restrictVpcPeering 組織政策限制,除非允許 Google 代管的生產者階層,否則政策會禁止 GKE 將控制層虛擬私有雲網路與您的虛擬私有雲網路對接。
如要解決這個問題,請採用下列任一做法:
- 建立叢集,並使用 Private Service Connect 建立控制層連線,而非虛擬私有雲網路對接。
- 更新叢集虛擬私有雲網路所屬專案、資料夾或組織的
constraints/compute.restrictVpcPeering政策,將 Google 服務生產者組織 (under:organizations/433637338589) 新增至allowedValues欄位。
更新組織政策後,請刪除失敗的叢集,並建立新叢集。
後續步驟
如果您在說明文件中找不到問題的解決方案,請參閱「取得支援」一文,進一步瞭解如何取得協助,包括下列主題的建議:
- 與 Cloud Customer Care 聯絡,建立客服案件。
- 在 StackOverflow 提問,並使用
google-kubernetes-engine標記搜尋類似問題,向社群尋求支援。您也可以加入#kubernetes-engineSlack 頻道,取得更多社群支援。 - 使用公開 Issue Tracker 提出問題或功能要求。