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 Networking 和 Subnetwork 設定類別中的任何記錄項目,查看環境建立期間是否回報任何錯誤:Cloud Logging
在大型網路中建立環境時發生配額問題
在大型網路中建立 Managed Service for Apache Airflow 環境時,可能會遇到下列配額限制:
- 單一虛擬私有雲網路的虛擬私有雲對等互連數量已達上限。
- 主要和次要子網路 IP 範圍數量已達上限。
- 對等互連群組中內部 TCP/UDP 負載平衡的轉送規則數量已達上限。
解決方法:
- 在 Managed Airflow (第 2 代) 中,您可以建立使用 Private Service Connect 而非虛擬私有雲網路的環境。
- 在 Managed Airflow (舊版第 1 代) 中,套用大規模網路中 Managed Airflow 的建議做法。
不相容的組織政策
您必須正確設定下列政策,才能順利建立 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 服務帳戶」角色。