解決建立環境的相關問題

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

本頁面提供疑難排解資訊,協助您解決建立 Cloud Composer 環境時可能遇到的問題。

如需更新及升級環境的疑難排解資訊,請參閱「排解環境更新與升級問題」。

建立 Cloud Composer 環境時,大多數問題都是由下列原因造成:

  • 服務帳戶權限問題。

  • 防火牆、DNS 或路由資訊不正確。

  • 網路相關問題。例如虛擬私有雲設定無效、IP 位址衝突,或網路 IP 範圍過窄。

  • 配額相關問題。

  • 不相容的機構政策。

您的權限不足,無法建立環境

如果帳戶權限不足,導致 Cloud Composer 無法建立環境,系統會輸出下列錯誤訊息:

ERROR: (gcloud.composer.environments.create) PERMISSION_DENIED: The caller
does not have permission

ERROR: (gcloud.composer.environments.create) PERMISSION_DENIED: User not
authorized to act as service account <service-account-name>.
The user must be granted iam.serviceAccounts.actAs permission, included in
Owner, Editor, Service Account User role. See https://cloud.google.com/iam/docs
/understanding-service-accounts for additional details.

解決方法:如「存取權控管」一文所述,將角色指派給您的帳戶和環境的服務帳戶。

  • 在 Cloud Composer 2 中,請確認 Cloud Composer 服務代理人服務帳戶 (service-PROJECT_NUMBER@cloudcomposer-accounts.iam.gserviceaccount.com) 已獲派 Cloud Composer v2 API 服務代理人擴充角色

  • 確認 Google API 服務代理人 (PROJECT_NUMBER@cloudservices.gserviceaccount.com) 已獲派編輯者角色。

  • 在共用虛擬私有雲設定中,請按照設定共用虛擬私有雲的操作說明操作。

環境的服務帳戶權限不足

建立 Cloud Composer 環境時,您會指定服務帳戶,用來執行環境的 GKE 叢集節點。如果這個服務帳戶沒有足夠的權限執行要求作業,Cloud Composer 會輸出下列錯誤:

Errors in: [Web server]; Error messages:
  Creation of airflow web server version failed. This may be an intermittent
  issue of the App Engine service. You may retry the operation later.
{"ResourceType":"appengine.v1.version","ResourceErrorCode":"504","ResourceError
Message":"Your deployment has failed to become healthy in the allotted time
and therefore was rolled back. If you believe this was an error, try adjusting
the 'app_start_timeout_sec' setting in the 'readiness_check' section."}

解決方法:如「存取權控管」一文所述,將角色指派給您的帳戶和環境的服務帳戶。

服務帳戶缺少 IAM 角色的警告

如果環境建立失敗,Cloud Composer 會在發生錯誤後產生下列警告訊息:The issue may be caused by missing IAM roles in the following Service Accounts ...

這則警告訊息會指出錯誤的可能原因。 Cloud Composer 會檢查專案中服務帳戶的必要角色,如果缺少這些角色,就會產生這則警告訊息。

解決方法:檢查警告訊息中提及的服務帳戶是否具備必要角色。如要進一步瞭解 Cloud Composer 中的角色和權限,請參閱「存取權控管」。

在某些情況下,您可以忽略這則警告。Cloud Composer 不會檢查指派給角色的個別權限。舉例來說,如果您使用自訂 IAM 角色,警告訊息中提及的服務帳戶可能已具備所有必要權限。在這種情況下,您可以忽略這則警告。

為環境選取的虛擬私有雲網路不存在

建立 Cloud Composer 環境時,您可以指定虛擬私有雲網路和子網路。如未指定虛擬私有雲網路,Cloud Composer 服務會為環境的區域和可用區選取 default 虛擬私有雲和 default 子網路。

如果指定的虛擬私有雲網路和子網路不存在,Cloud Composer 會輸出下列錯誤:

Errors in: [GKE cluster]; Error messages:
        {"ResourceType":"gcp-types/container-v1:projects.locations.clusters","R
        esourceErrorCode":"400","ResourceErrorMessage":{"code":400,"message":"P
        roject \"<your composer project>\" has no network named \"non-existing-
        vpc\".","status":"INVALID_ARGUMENT","statusMessage":"Bad
        Request","requestPath":"https://container.googleapis.com/
        v1/projects/<your composer
        project>/locations/<zone>/clusters","httpMethod":"POST"}}

解決方法

  • 在 Cloud Composer 2 中,您可以建立使用 Private Service Connect 而非虛擬私有雲網路的環境。
  • 建立環境前,請確認新環境的虛擬私有雲網路和子網路存在。

網路設定有誤

建立 Cloud Composer 環境時,需要正確設定網路或 DNS。請按照下列操作說明設定與 Google API 和服務的連線:

如果您在共用虛擬私有雲模式下設定 Cloud Composer 環境,請一併按照共用虛擬私有雲操作說明操作。

Cloud Composer 環境會使用子網路做為叢集節點,並使用 IP 範圍做為 Pod 和 Service。如要確保與這些和其他 IP 範圍的通訊,請按照下列操作說明設定防火牆規則:

您也可以在 Cloud Logging 中,檢查所選 GCE NetworkingSubnetwork 設定類別中的任何記錄項目,查看環境建立期間是否回報任何錯誤:Cloud Logging

在大型網路中建立環境時發生配額問題

在大規模網路中建立 Cloud Composer 環境時,您可能會遇到下列配額限制:

  • 單一 VPC 網路的 VPC 對等互連數量已達上限。
  • 主要和次要子網路 IP 範圍數量已達上限。
  • 對等互連群組中內部 TCP/UDP 負載平衡的轉送規則數量已達上限。

解決方法

不相容的機構政策

您必須適當設定下列政策,才能順利建立 Cloud Composer 環境。

機構政策 Cloud Composer 3 Cloud Composer 2 Cloud Composer 1
compute.disableSerialPortLogging 可輸入任何值 必須停用 1.13.0 以下版本會停用這項功能,否則可使用任何值
compute.requireOsLogin 可輸入任何值 可輸入任何值 必須停用
compute.vmCanIpForward 可輸入任何值 可輸入任何值 如果未設定虛擬私有雲原生模式 (使用別名 IP),則必須允許 (Cloud Composer 擁有的 GKE 叢集需要此設定)
compute.vmExternalIpAccess 可輸入任何值 必須允許公開 IP 環境 必須允許公開 IP 環境
compute.restrictVpcPeering 可強制執行 無法強制執行 無法強制執行
compute.disablePrivateServiceConnectCreationForConsumers 可輸入任何值 無法禁止私人和公開 IP 環境的 SERVICE_PRODUCERS。 不會影響現有環境,啟用這項政策後,現有環境仍可運作。 無法禁止私人 IP 環境的 SERVICE_PRODUCERS。 不會影響現有環境,啟用這項政策後,現有環境仍可運作。
compute.restrictPrivateServiceConnectProducer 啟用後,將 google.com 機構加入允許清單 啟用後,將 google.com 機構加入允許清單 可輸入任何值

不相容的主體存取邊界政策

您在機構中設定的主體存取邊界政策,可能會封鎖部分環境作業或禁止建立新環境。

如果發生這種情況,錯誤訊息中可能會顯示下列內容:

Operations on resource are denied due to an IAM Principal Access Boundary Policy.

環境的元件位於用戶端和客戶專案中。租戶專案由 Google 管理,不屬於環境所在的機構。環境的服務帳戶必須具備在租戶專案中執行作業的權限。

解決方法

  • 在政策的繫結中新增條件運算式,將環境的服務帳戶排除在政策之外。如要瞭解如何排除主體,讓政策不適用於該主體,請參閱 Identity and Access Management 說明文件中的「主體存取邊界政策的條件式政策繫結」。

限制機構或專案內使用的服務

機構或專案管理員可以使用gcp.restrictServiceUsage組織政策限制,限制專案中可使用的 Google 服務。

使用這項機構政策時,請務必允許 Cloud Composer 需要的所有服務

400 錯誤訊息:無法部署 Airflow 網路伺服器。

如果 IP 範圍重疊,就可能無法建立私人 IP 環境的 GKE 叢集,進而導致這項錯誤。

解決方法:檢查環境叢集是否有任何失敗記錄,並根據 GKE 錯誤訊息解決問題。

Cloud Build 無法建構環境映像檔

適用於:Cloud Composer 2 和 Cloud Composer 1。

如果 Cloud Build 服務帳戶 (PROJECT_NUMBER@cloudbuild.gserviceaccount.com) 在專案中沒有 Cloud Build 服務帳戶 (roles/cloudbuild.builds.builder) 角色,則嘗試建立或更新環境時,可能會因權限相關錯誤而失敗。

舉例來說,您可能會在 Cloud Build 記錄中看到 denied: Permission "artifactregistry.repositories.uploadArtifacts" denied 訊息,後面接著 ERROR: failed to push because we ran out of retries

如要解決這個問題,請確認 Cloud Build 服務帳戶具有「Cloud Build Service Account」(Cloud Build 服務帳戶) 角色。

後續步驟