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