解決建立環境的相關問題

Managed Airflow (第 3 代) | Managed Airflow (第 2 代) | Managed Airflow (舊版第 1 代)

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

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

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

  • 服務帳戶權限問題。

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

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

  • 配額相關問題。

  • 不相容的機構政策。

權限不足,無法建立環境

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

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.

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

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

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

  • 在 Shared VPC 設定中,請按照設定 Shared VPC 的操作說明進行操作。

環境的服務帳戶權限不足

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

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 角色時的警告

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

這則警告訊息會指出錯誤的可能原因。 Managed Airflow 會檢查專案中服務帳戶是否具備必要角色,如果沒有,就會產生這則警告訊息。

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

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

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

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

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

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"}}

解決方法

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

網路設定有誤

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

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

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

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

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

在大型網路中建立 Managed Service for Apache Airflow 環境時,可能會遇到下列配額限制:

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

解決方法

不相容的組織政策

您必須正確設定下列政策,才能順利建立 Managed Airflow 環境。

機構政策 Managed Airflow (第 3 代) Managed Airflow (第 2 代) Managed Airflow (舊版第 1 代)
compute.disableSerialPortLogging 可輸入任何值 必須停用 1.13.0 以下版本會停用這項功能,否則可使用任何值
compute.requireOsLogin 可輸入任何值 可輸入任何值 必須停用
compute.vmCanIpForward 可輸入任何值 可輸入任何值 如果未設定虛擬私有雲原生模式 (使用別名 IP),則必須允許 (管理式 Airflow 擁有的 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 管理,不屬於環境所在的機構。環境的服務帳戶必須具備在租戶專案中執行作業的權限。

解決方法

  • 在政策的繫結中新增條件運算式,將環境的服務帳戶從政策中排除。如要瞭解如何排除主體,讓政策不適用於該主體,請參閱「身分與存取權管理」說明文件中的「主體存取邊界政策的條件式政策繫結」。

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

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

使用這項組織政策時,請務必允許 Managed Airflow 所需的所有服務

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

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

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

Cloud Build 無法建構環境映像檔

適用於:Managed Airflow (第 2 代) 和 Managed Airflow (舊版第 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 服務帳戶」角色。

後續步驟