Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
本頁面列出已知的 Cloud Composer 問題。如要瞭解問題修正方式,請參閱版本資訊。
上傳的 DAG 檔案第一次執行 DAG 時,有幾項工作失敗
上傳 DAG 檔案時,有時第一個 DAG 執行時,前幾個工作會因 Unable to read remote log...
錯誤而失敗。發生這個問題的原因是 DAG 檔案會在環境的值區、Airflow 工作站和 Airflow 排程器之間同步處理。如果排程器取得 DAG 檔案並排定由 worker 執行,但 worker 尚未取得 DAG 檔案,則任務執行作業會失敗。
為緩解這個問題,Airflow 2 的環境預設會針對失敗的任務執行兩次重試。如果工作失敗,系統會以 5 分鐘的間隔重試兩次。
Cloud Composer 不受 Apache Log4j 2 安全漏洞 (CVE-2021-44228) 影響
為因應 Apache Log4j 2 安全漏洞 (CVE-2021-44228),Cloud Composer 已進行詳細調查,我們認為 Cloud Composer 不易遭到這項漏洞攻擊。
Airflow UI 有時可能不會在外掛程式變更後重新載入
如果外掛程式包含許多匯入其他模組的檔案,Airflow UI 可能無法辨識應重新載入外掛程式。在這種情況下,請重新啟動環境的 Airflow 網路伺服器。
存取 Airflow UI 時發生錯誤 504
存取 Airflow UI 時,您可能會收到 504 Gateway Timeout
錯誤。造成這項錯誤的原因可能有幾種:
通訊問題是暫時性的。在這種情況下,請稍後再嘗試存取 Airflow UI。您也可以重新啟動 Airflow 網路伺服器。
(僅限 Cloud Composer 3) 連線問題。如果 Airflow UI 永久無法使用,且系統產生逾時或 504 錯誤,請確認環境可存取
*.composer.googleusercontent.com
。(僅限 Cloud Composer 2) 連線問題。如果 Airflow UI 永久無法使用,且系統產生逾時或 504 錯誤,請確認環境可存取
*.composer.cloud.google.com
。如果您使用私人 Google 存取權,並透過private.googleapis.com
虛擬 IP 傳送流量,或是使用 VPC Service Controls,並透過restricted.googleapis.com
虛擬 IP 傳送流量,請務必為*.composer.cloud.google.com
網域名稱設定 Cloud DNS。Airflow 網路伺服器沒有回應。如果錯誤 504 持續發生,但您仍可在特定時間存取 Airflow UI,則 Airflow 網路伺服器可能因負載過高而無法回應。嘗試增加網站伺服器的規模和效能參數。
存取 Airflow UI 時發生錯誤 502
錯誤 502 Internal server exception
表示 Airflow UI 無法處理傳入的要求。造成這項錯誤的原因可能有幾種:
通訊問題是暫時性的。請稍後再嘗試存取 Airflow 使用者介面。
無法啟動網路伺服器。為了開始,網路伺服器必須先同步處理設定檔。查看網路伺服器記錄,找出類似下列內容的記錄項目:
GCS sync exited with 1: gcloud storage cp gs://<bucket-name>/airflow.cfg /home/airflow/gcs/airflow.cfg.tmp
或GCS sync exited with 1: gcloud storage cp gs://<bucket-name>/env_var.json.cfg /home/airflow/gcs/env_var.json.tmp
。如果您看到這些錯誤,請檢查錯誤訊息中提及的檔案是否仍位於環境的儲存體中。如果意外移除 (例如已設定保留政策),您可以還原這些項目:
在環境中設定新的環境變數。您可以使用任何變數名稱和值。
覆寫 Airflow 設定選項。您可以使用不存在的 Airflow 設定選項。
在樹狀檢視畫面中將滑鼠游標懸停在工作執行個體上時,會擲回未偵測到的 TypeError
在 Airflow 2 中,如果使用非預設時區,Airflow UI 中的樹狀檢視畫面有時可能無法正常運作。如要解決這個問題,請在 Airflow UI 中明確設定時區。
排程器和 worker 中的空資料夾
Cloud Composer 不會主動從 Airflow 工作者和排程器中移除空資料夾。當這些資料夾存在於儲存桶中,且最終遭到移除時,環境儲存桶同步處理程序可能會建立這類實體。
建議:調整 DAG,讓系統能略過這類空白資料夾。
當這些元件重新啟動時 (例如,在環境叢集中縮減或維護作業),這些實體最終會從 Airflow 排程器和工作站的本機儲存空間中移除。
支援 Kerberos
Cloud Composer 不支援 Airflow Kerberos 設定。
支援 Cloud Composer 2 和 Cloud Composer 3 中的運算類別
Cloud Composer 3 和 Cloud Composer 2 僅支援通用 運算類別。這表示無法執行要求其他運算類別 (例如「平衡」或「擴大規模」) 的 Pod。
一般用途類別可讓執行的 Pod 要求最多 110 GB 記憶體和最多 30 個 CPU (如運算類別的最大要求所述)。
如果您想使用以 ARM 為基礎的架構,或是需要更多 CPU 和記憶體,則必須使用其他運算類別,但 Cloud Composer 3 和 Cloud Composer 2 叢集不支援這類運算類別。
建議:請使用 GKEStartPodOperator
在支援所選運算類別的不同叢集中執行 Kubernetes Pod。如果您執行需要不同運算類別的自訂 Pod,則這些 Pod 也必須在非 Cloud Composer 叢集中執行。
無法減少 Cloud SQL 儲存空間
Cloud Composer 會使用 Cloud SQL 執行 Airflow 資料庫。隨著 Airflow 資料庫的成長,Cloud SQL 執行個體的磁碟儲存空間可能會隨著 Cloud SQL 作業儲存的資料而增加。
無法縮減 Cloud SQL 磁碟大小。
如要使用最小的 Cloud SQL 磁碟大小,可以使用快照重新建立 Cloud Composer 環境,做為解決方法。
從 Cloud SQL 移除記錄後,資料庫磁碟用量指標並未減少
關聯式資料庫 (例如 Postgres 或 MySQL) 在刪除或更新資料列時,不會實際移除資料列。而是將這些資料標示為「已死的元組」,以維持資料一致性並避免阻斷並行交易。
MySQL 和 Postgres 都會在刪除記錄後,實作回收空間的機制。
雖然可以強制資料庫回收未使用的磁碟空間,但這項作業會消耗大量資源,並且會鎖定資料庫,導致 Cloud Composer 無法使用。因此,建議您依靠建構機制來回收未使用的空間。
已封鎖存取權:授權錯誤
如果這個問題會影響使用者,「存取權遭封鎖:授權錯誤」對話方塊會包含 Error 400: admin_policy_enforced
訊息。
如果在 Google Workspace 中啟用「API 控制項」>「未設定的第三方應用程式」>「禁止使用者存取任何第三方應用程式」選項,且未明確允許 Cloud Composer 應用程式中的 Apache Airflow,使用者就無法存取 Airflow UI,除非他們明確允許該應用程式。
如要允許存取,請按照「允許存取 Google Workspace 中的 Airflow UI」一文中的步驟操作。
存取 Airflow UI 時的登入迴圈
造成這個問題的原因可能如下:
如果 Chrome Enterprise Premium 情境感知存取繫結與仰賴裝置屬性的存取層級搭配使用,且 Cloud Composer 應用程式中的 Apache Airflow 未予以豁免,則由於登入迴圈,無法存取 Airflow UI。如要允許存取權,請按照允許在情境感知存取權繫結中存取 Airflow UI所述的步驟操作。
如果在保護專案的 VPC Service Controls 範圍內設定入站規則,且允許存取 Cloud Composer 服務的入站規則使用
ANY_SERVICE_ACCOUNT
或ANY_USER_ACCOUNT
身分類型,使用者就無法存取 Airflow UI,並會進入登入迴圈。如要進一步瞭解如何處理這種情況,請參閱「在 VPC Service Controls 入站規則中允許存取 Airflow UI」。
Airflow 元件在與 Cloud Composer 設定的其他部分通訊時發生問題
在極少數情況下,與 Compute Engine 中繼資料伺服器的通訊速度緩慢,可能會導致 Airflow 元件無法正常運作。舉例來說,Airflow 排程器可能會重新啟動、Airflow 工作可能需要重新嘗試,或是工作啟動時間可能會拉長。
症狀:
Airflow 元件 (例如 Airflow 排程器、工作站或網路伺服器) 的記錄中會顯示以下錯誤:
Authentication failed using Compute Engine authentication due to unavailable metadata server
Compute Engine Metadata server unavailable on attempt 1 of 3. Reason: timed out
...
Compute Engine Metadata server unavailable on attempt 2 of 3. Reason: timed out
...
Compute Engine Metadata server unavailable on attempt 3 of 3. Reason: timed out
解決方法:
設定下列環境變數:GCE_METADATA_TIMEOUT=30
。
/data 資料夾無法在 Airflow 網路伺服器中使用
在 Cloud Composer 2 和 Cloud Composer 3 中,Airflow 網路伺服器主要是用於讀取,Cloud Composer 不會將 data/
資料夾同步處理至這個元件。
有時,您可能會想要在所有 Airflow 元件 (包括 Airflow 網路伺服器) 之間共用常用檔案。
解決方法:
將要與網路伺服器共用的檔案包裝至 PYPI 模組,並以一般 PYPI 套件安裝。在環境中安裝 PYPI 模組後,系統會將檔案新增至 Airflow 元件的映像檔,並提供給這些元件使用。
將檔案新增至
plugins/
資料夾。這個資料夾會同步至 Airflow 網路伺服器。
監控中非連續 DAG 剖析時間和 DAG 袋大小圖表
監控資訊主頁上顯示的非連續 DAG 剖析時間和 DAG 袋大小圖表,表示 DAG 剖析時間過長 (超過 5 分鐘)。

解決方法:建議您將 DAG 的總剖析時間控制在 5 分鐘以內。如要縮短 DAG 剖析時間,請遵循 DAG 編寫指南。
任務記錄檔顯示有延遲
症狀:
- 在 Cloud Composer 3 中,Airflow 工作記錄不會立即顯示,而是延遲幾分鐘才會顯示。
- 您可能會在 Airflow 記錄檔中看到
Logs not found for Cloud Logging filter
訊息
原因:
如果環境同時執行大量工作,由於環境的基礎架構大小不足以快速處理所有記錄,因此工作記錄可能會延遲。
解決方法:
- 建議您增加環境的基礎架構大小,以提升效能。
- 將 DAG 的執行時間分散,以免工作項目同時執行。
KubernetesPodOperator 和 KubernetesExecutor 的啟動時間增加
使用 KubernetesPodOperator 建立的 Pod 和使用 KubernetesExecutor 執行的任務,啟動時間會增加。Cloud Composer 團隊正在研究解決方案,並會在問題解決後發布公告。
解決方法:
- 啟動使用更多 CPU 的 Pod。
- 盡量最佳化圖片 (減少圖層、縮小圖片大小)。
專案的帳單帳戶遭到刪除或停用,或是 Cloud Composer API 遭到停用後,環境處於 ERROR 狀態
受這些問題影響的 Cloud Composer 環境無法復原:
- 專案的帳單帳戶遭到刪除或停用後,即使日後已連結其他帳戶,仍會發生此問題。
- 在專案中停用 Cloud Composer API 後,即使日後啟用,也無法再使用。
如要解決這個問題,請按照下列步驟操作:
您仍可存取儲存在環境值區中的資料,但環境本身已無法使用。您可以建立新的 Cloud Composer 環境,然後轉移 DAG 和資料。
如果您要執行任何會導致環境無法復原的作業,請務必備份資料,例如建立環境的快照。這樣一來,您就可以建立其他環境,並透過載入這個快照來轉移資料。
如果將 [core]execute_tasks_new_python_interpreter 設為 True,系統就不會收集 Airflow 工作記錄
如果 [core]execute_tasks_new_python_interpreter
Airflow 設定選項設為 True
,Cloud Composer 就不會收集 Airflow 工作記錄。
參考解法:
- 移除這項設定選項的覆寫值,或將其值設為
False
。