Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
本頁面提供疑難排解資訊,協助您解決建立 Cloud Composer 環境時可能遇到的問題。
如要瞭解如何解決更新及升級環境相關問題,請參閱「解決環境更新與升級問題」。
建立 Cloud Composer 環境時,大部分的問題都是因為以下原因造成:
服務帳戶權限問題。
防火牆、DNS 或路由資訊不正確。
網路相關問題。例如無效的 VPC 設定、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 角色,警告訊息中提及的服務帳戶可能已具備所有必要權限。在這種情況下,您可以忽略這則警告。
為環境選取的 VPC 網路不存在
建立 Cloud Composer 環境時,您可以為其指定 VPC 網路和子網路。如果未指定 VPC 網路,Cloud Composer 服務會為環境的地區和區域選取 default
VPC 和 default
子網路。
如果指定的 VPC 網路和子網路不存在,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 而非 VPC 網路的環境。
- 建立環境前,請確認新環境的虛擬私有雲網路和子網路已存在。
網路設定不正確
建立 Cloud Composer 環境時,必須設定正確的網路或 DNS。請按照下列操作說明設定連線至 Google API 和服務:
如果您在共用虛擬私有雲模式中設定 Cloud Composer 環境,請同時按照共用虛擬私有雲操作說明操作。
Cloud Composer 環境會為叢集節點使用子網路,為 Pod 和 Service 使用 IP 範圍。如要確保與這些和其他 IP 範圍的通訊,請按照下列操作說明設定防火牆規則:
您也可以在 Cloud Logging 中查看所選 GCE Networking
和 Subnetwork
設定類別中的任何記錄項目,瞭解在建立環境時是否有任何回報的錯誤:Cloud Logging
在大規模網路中建立環境時遇到配額問題
在大規模網路中建立 Cloud Composer 環境時,您可能會遇到下列配額限制:
- 單一 VPC 網路的 VPC 對等互連數量已達上限。
- 已達主要和次要子網路 IP 範圍數量上限。
- 對等互連群組中內部 TCP/UDP 負載平衡的轉送規則數量已達上限。
解決方法:
- 在 Cloud Composer 2 中,您可以建立使用 Private Service Connect 而非 VPC 網路的環境。
- 在 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 |
可輸入任何值 | 可輸入任何值 | 未設定 VPC 原生模式 (使用別名 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 服務帳戶角色。