已知問題

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

本頁列出 Managed Airflow 的已知問題。如要瞭解問題修正,請參閱版本資訊。

部分問題會影響舊版,升級環境即可修正。

Pod 和 Service 部分支援非 RFC 1918 位址範圍

Managed Airflow 仰賴 GKE,為 Pod 和 Service 提供非 RFC 1918 位址支援。Managed Airflow 僅支援下列非 RFC 1918 範圍:

  • 100.64.0.0/10
  • 192.0.0.0/24
  • 192.0.2.0/24
  • 192.88.99.0/24
  • 198.18.0.0/15
  • 198.51.100.0/24
  • 203.0.113.0/24
  • 240.0.0.0/4

更新期間新增的環境標籤未完全傳播

更新環境標籤時,標籤不會套用至環境叢集中的 Compute Engine VM。如要解決這個問題,您可以手動套用標籤。

強制執行組織政策限制/compute.disableSerialPortLogging 時,無法建立 Managed Airflow 環境

如果對目標專案強制執行 constraints/compute.disableSerialPortLogging 組織政策,則無法建立 Managed Airflow 環境。

診斷

如要判斷您是否受到這個問題影響,請按照下列程序操作:

前往Google Cloud 控制台的 GKE 選單。前往 GKE 選單

然後選取新建立的叢集。檢查是否有下列錯誤:

Not all instances running in IGM after 123.45s.
Expect <number of desired instances in IGM>. Current errors:
[CONDITION_NOT_MET]: Instance '<generated instance name>' creation failed:
Constraint constraints/compute.disableSerialPortLogging violated for
project <target project number>.

解決方法:

  1. 在要建立 Managed Airflow 環境的專案中,停用組織政策。

    即使上層資源 (組織或資料夾) 已啟用組織政策,您仍可在專案層級停用。詳情請參閱「自訂布林限制政策」頁面。

  2. 使用排除篩選器

    使用序列埠記錄的排除篩選器,可達到與停用機構政策相同的目標,因為 Logging 中會有序列控制台記錄。詳情請參閱「排除篩選器」頁面。

使用 Deployment Manager 管理受 VPC Service Controls 保護的 Google Cloud 資源

Managed Airflow (舊版第 1 代) 和 Managed Airflow (第 2 代) 2.0.x 版會使用 Deployment Manager 建立 Managed Airflow 環境的元件。

您可能在 2020 年 12 月收到通知,指出您可能需要執行額外的 VPC Service Controls 設定,才能使用 Deployment Manager 管理受 VPC Service Controls 保護的資源。

如果您使用 Managed Airflow,且並未直接透過 Deployment Manager 管理 Deployment Manager 公告中提及的 Google Cloud 資源,則無須採取任何行動。

Deployment Manager 顯示不支援功能的相關資訊

「Deployment Manager」分頁中可能會顯示下列警告:

The deployment uses actions, which are an unsupported feature. We recommend
that you avoid using actions.

如果 Deployment Manager 的部署作業是由 Managed Airflow 擁有,則可忽略這則警告。

環境的叢集刪除後,即無法刪除環境

這個問題適用於 Managed Airflow (舊版第 1 代) 和 Managed Airflow (第 2 代) 2.0.x 版。

如果您在刪除環境前先刪除環境的 GKE 叢集,則嘗試刪除環境時會發生下列錯誤:

 Got error "" during CP_DEPLOYMENT_DELETING [Rerunning Task. ]

如要在叢集已刪除的情況下刪除環境,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Deployment Manager」頁面。

    前往「Deployment Manager」頁面

  2. 找出所有標有標籤的部署作業:

    • goog-composer-environment:<environment-name>
    • goog-composer-location:<environment-location>。

    您應該會看到兩個標有上述標籤的部署作業:

    • 名為 <environment-location>-<environment-name-prefix>-<hash>-sd 的部署作業
    • 名為 addons-<uuid> 的部署作業
  3. 手動刪除仍列在這兩項部署作業中,且存在於專案中的資源 (例如 Pub/Sub 主題和訂閱項目)。方法如下:

    1. 選取部署項目。

    2. 點選「刪除」。

    3. 選取「Delete 2 deployments and all resources created by them, such as VMs, load balancers and disks」(刪除 2 個部署作業及其建立的所有資源,例如 VM、負載平衡器和磁碟) 選項,然後按一下「Delete all」(全部刪除)。

    刪除作業失敗,但剩餘資源會刪除。

  4. 請透過下列其中一種方式刪除部署作業:

    • 在 Google Cloud 控制台中,再次選取這兩項部署作業。按一下「Delete」(刪除),然後選取「Delete 2 deployments, but keep resources created by them」(刪除 2 項部署作業,但保留其建立的資源) 選項。

    • 執行 gcloud 指令,刪除採用 ABANDON 政策的 Deployment:

      gcloud deployment-manager deployments delete addons-<uuid> \
          --delete-policy=ABANDON
      
      gcloud deployment-manager deployments delete <location>-<env-name-prefix>-<hash>-sd \
          --delete-policy=ABANDON
      
  5. 刪除 Managed Airflow 環境。

警告:屬於「echo-airflow_monitoring」DAG 的「echo」工作有重複項目

Airflow 記錄中可能會顯示下列項目:

in _query db.query(q) File "/opt/python3.6/lib/python3.6/site-packages/MySQLdb/
connections.py", line 280, in query _mysql.connection.query(self, query)
_mysql_exceptions.IntegrityError: (1062, "Duplicate entry
'echo-airflow_monitoring-2020-10-20 15:59:40.000000' for key 'PRIMARY'")

您可以忽略這些記錄項目,因為這項錯誤不會影響 Airflow DAG 和工作處理。

我們正努力改善 Managed Airflow 服務,從 Airflow 記錄中移除這些警告。

在 VPC Service Controls 範圍內新增 Identity-Aware Proxy API 的專案中,環境建立作業失敗

在啟用 VPC Service Controls 的專案中,cloud-airflow-prod@system.gserviceaccount.com 帳戶必須在安全範圍內具備明確存取權,才能建立環境。

如要建立環境,可以使用下列任一解決方案:

  • 請勿將 Cloud Identity-Aware Proxy API 和 Identity-Aware Proxy TCP API 新增至安全範圍。

  • 在 YAML 條件檔案中使用下列設定,將 cloud-airflow-prod@system.gserviceaccount.com 服務帳戶新增為安全範圍成員:

     - members:
        - serviceAccount:cloud-airflow-prod@system.gserviceaccount.com
    

停用 compute.vmExternalIpAccess 政策時,無法建立或升級 Managed Airflow 環境

這個問題適用於 Managed Airflow (舊版第 1 代) 和 Managed Airflow (第 2 代) 環境。

在公開 IP 模式下設定的 Managed Airflow 擁有的 GKE 叢集,需要為其 VM 建立外部連線。因此,compute.vmExternalIpAccess 政策無法禁止建立具有外部 IP 位址的 VM。如要進一步瞭解這項組織政策,請參閱「組織政策限制」。

上傳的 DAG 檔案首次執行 DAG 執行作業時,有多項任務失敗

上傳 DAG 檔案時,DAG 首次執行作業的前幾項工作有時會失敗,並顯示 Unable to read remote log... 錯誤。發生這個問題的原因,是 DAG 檔案會在環境的 bucket、Airflow worker 和 Airflow 排程器之間同步。如果排程器取得 DAG 檔案並排定由 worker 執行,但 worker 尚未取得 DAG 檔案,工作執行就會失敗。

為緩解這個問題,搭載 Airflow 2 的環境預設會對失敗的工作重試兩次。如果工作失敗,系統會重試兩次,每次間隔 5 分鐘。

公告:GKE 版本不再支援已淘汰的 Beta 版 API

Managed Airflow 會管理基礎的 Managed Airflow 專屬 GKE 叢集。除非您在 DAG 和程式碼中明確使用這類 API,否則可以忽略 GKE API 淘汰公告。如有需要,Managed Airflow 會處理所有遷移作業。

Managed Airflow 應不會受到 Apache Log4j 2 安全漏洞 (CVE-2021-44228) 的影響

Apache Log4j 2 安全漏洞 (CVE-2021-44228) 發生後,Managed Airflow 進行了詳細調查,我們認為 Managed Airflow 不會受到這個安全漏洞的影響。

Airflow worker 或排程器存取環境的 Cloud Storage bucket 時,可能會發生問題

Managed Airflow 會使用 gcsfuse 存取環境 bucket 中的 /data 資料夾,並將 Airflow 工作記錄儲存至 /logs 目錄 (如已啟用)。如果 gcsfuse 超載或環境的 bucket 無法使用,Airflow 工作執行個體可能會失敗,且 Airflow 記錄中會顯示 Transport endpoint is not connected 錯誤。

解決方法:

Airflow UI 有時可能不會重新載入已變更的外掛程式

如果外掛程式包含許多匯入其他模組的檔案,Airflow UI 可能無法辨識外掛程式應重新載入。在這種情況下,請重新啟動環境的 Airflow 網路伺服器。

環境叢集的工作負載處於無法排定的狀態

這項已知問題僅適用於 Managed Airflow (第 2 代)。

在 Managed Airflow (第 2 代) 中,建立環境後,環境叢集中的多個工作負載仍處於「無法排程」狀態。

環境向上擴充時,系統會建立新的 worker Pod,Kubernetes 則會嘗試執行這些 Pod。如果沒有可用資源,worker Pod 會標示為「無法指派」。

在這種情況下,叢集自動配置器會新增更多節點,這項作業需要幾分鐘才能完成。在完成之前,Pod 會維持在「無法指派」狀態,不會執行任何工作。

如果 DaemonSet 工作負載無法排程 (名稱為 composer-gcsfuse 和 composer-fluentd),且無法在沒有 Airflow 元件的節點上啟動,則不會影響環境。

如果問題持續超過 1 小時,請查看叢集自動配置器記錄。您可以在記錄檢視器中使用下列篩選器找到這些記錄:

resource.type="k8s_cluster"
logName="projects/<project-name>/logs/container.googleapis.com%2Fcluster-autoscaler-visibility"
resource.labels.cluster_name="<cluster-name>"

其中包含叢集自動配置器所做決策的相關資訊:展開任何 noDecisionStatus,即可查看叢集無法向上或向下擴充的原因。

存取 Airflow UI 時發生錯誤 504

存取 Airflow UI 時,可能會收到 504 Gateway Timeout 錯誤。這個錯誤可能由多種原因造成:

  • 暫時性通訊問題。在這種情況下,請稍後再嘗試存取 Airflow UI。您也可以重新啟動 Airflow 網路伺服器。

  • (僅限 Managed Airflow (第 3 代)) 連線問題。如果 Airflow UI 永久無法使用,且產生逾時或 504 錯誤,請確認環境可以存取 *.composer.googleusercontent.com。

  • (僅限 Managed Airflow (第 2 代)) 連線問題。如果 Airflow UI 永久無法使用,且產生逾時或 504 錯誤,請確認環境可以存取 *.composer.cloud.google.com。如果您使用 Private Google Access 並透過 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 UI。

  • 無法啟動網路伺服器。如要啟動,網路伺服器必須先同步處理設定檔。檢查網路伺服器記錄,找出類似 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 的記錄項目。如果看到這些錯誤,請檢查錯誤訊息中提及的檔案是否仍存在於環境的 bucket 中。

    如果意外移除 (例如設定了資料保留政策),可以按照下列步驟還原:

    1. 在環境中設定新的環境變數。您可以使用任何變數名稱和值。

    2. 覆寫 Airflow 設定選項。您可以使用不存在的 Airflow 設定選項。

覆寫 [webserver]analytics_tool 後,存取 Airflow UI 時發生錯誤 500

在 Airflow 2 環境中,如果您覆寫 [webserver]analytics_tool Airflow 設定選項,將匿名 Airflow UI 使用資料轉送至數據分析服務 (例如 Google Analytics、Segment、MetaRouter 或 Matomo),則在環境更新成功後存取 Airflow UI 時,可能會傳回 (500) Internal Server Error 回應,並在 Airflow 網路伺服器記錄中顯示下列其中一項錯誤:

airflow.exceptions.AirflowConfigException: section/key [webserver/analytics_id] not found in config
airflow.exceptions.AirflowConfigException: section/key [webserver/analytics_url] not found in config

在 Airflow 2 中設定 [webserver]analytics_tool 時,Airflow 網路伺服器會要求在轉譯 Airflow UI 時,也必須定義 [webserver] 區段中的隨附數據分析選項。

在 Airflow 3 中,[webserver]analytics_tool、[webserver]analytics_id 和 [webserver]analytics_url 設定選項已移除。

解決方法:

  • 移除 [webserver]analytics_tool Airflow 設定選項的覆寫,或
  • 一併指定所有必要的 Airflow 設定選項:
    • [webserver]analytics_tool
    • [webserver]analytics_id
    • [webserver]analytics_url (Airflow 2.9 以上版本必須提供,即使數據分析工具未使用自訂網址也一樣)

在樹狀檢視中將滑鼠游標懸停在工作執行個體上,會擲回未擷取的 TypeError

在 Airflow 2 中,如果使用非預設時區,Airflow UI 中的樹狀檢視有時可能無法正常運作。如要解決這個問題,請在 Airflow UI 中明確設定時區。

Airflow 2.2.3 或更早版本的 Airflow UI 容易受到 CVE-2021-45229 攻擊

如 CVE-2021-45229 所述,「Trigger DAG with config」畫面容易受到透過 origin 查詢引數發動的 XSS 攻擊。

建議:升級至支援 Airflow 2.2.5 的最新 Managed Airflow 版本。

工作站需要的記憶體比舊版 Airflow 多

問題:

  • 在 Managed Airflow (第 2 代) 環境中,Airflow worker 的所有環境叢集工作負載都處於 CrashLoopBackOff 狀態,且不會執行工作。如果受到這個問題影響,您也會看到系統產生的 OOMKilling 警告。

  • 這個問題可能會導致環境無法升級。

原因:

  • 如果您為 [celery]worker_concurrency Airflow 設定選項使用自訂值,並為 Airflow worker 使用自訂記憶體設定,則資源消耗量接近上限時,可能會發生這個問題。
  • 在 Airflow 2.6.3 搭配 Python 3.11 的環境中,Airflow worker 的記憶體需求比舊版 worker 高出 10%。
  • 相較於 Airflow 2.2 或 Airflow 2.1 中的 worker,Airflow 2.3 以上版本的 Airflow worker 記憶體需求高出 30%。

解決方法:

  • 移除 worker_concurrency 的覆寫值,讓 Managed Airflow 自動計算這個值。
  • 如果您為 worker_concurrency 使用自訂值,請將其設為較低的值。您可以先使用自動計算的值。
  • 或者,您也可以增加 Airflow worker 的可用記憶體。
  • 如果因為這個問題而無法將環境升級至較新版本,請先套用其中一項建議解決方案,再升級。

使用 Cloud Run functions 透過私人網路觸發 DAG

Managed Airflow 不支援透過虛擬私有雲連接器,使用 Cloud Run functions 透過私人網路觸發 DAG。

建議:使用 Cloud Run functions 在 Pub/Sub 發布訊息。這類事件可啟動 Pub/Sub 感應器,觸發 Airflow DAG,或採用以可延遲運算子為基礎的方法。

排程器和工作站中的空白資料夾

Managed Airflow 不會主動從 Airflow worker 和排程器中移除空資料夾。如果 bucket 中有這些資料夾,且最終遭到移除,則環境 bucket 同步處理程序可能會建立這類實體。

建議:調整 DAG,讓 DAG 略過這類空白資料夾。

當 Airflow 排程器和 worker 重新啟動時 (例如環境叢集縮減或維護作業),這些實體最終會從本機儲存空間中移除。

支援 Kerberos

Managed Airflow 不支援 Airflow Kerberos 設定。

支援 Managed Airflow (第 2 代) 和 Managed Airflow (第 3 代) 的運算類別

Managed Airflow (第 3 代) 和 Managed Airflow (第 2 代) 僅支援一般用途 運算類別。也就是說,您無法執行要求其他運算類別 (例如 Balanced 或 Scale-Out) 的 Pod。

一般用途類別可執行要求最多 110 GB 記憶體和最多 30 個 CPU 的 Pod (如運算類別要求上限所述)。

如要使用 ARM 架構,或需要更多 CPU 和記憶體,則必須使用其他運算類別,但 Managed Airflow (第 3 代) 和 Managed Airflow (第 2 代) 叢集不支援這類別。

建議:使用 GKEStartPodOperator 在支援所選運算類別的其他叢集上執行 Kubernetes Pod。如果您執行的自訂 Pod 需要不同的運算類別,則也必須在非 Managed Airflow 叢集上執行。

支援 Google Campaign Manager 360 運算子

在 2.1.13 之前的 Managed Airflow 版本中,Google Campaign Manager 運算子是以 Campaign Manager 360 v3.5 API 為基礎,該 API 已淘汰,停用日期為 2023 年 5 月 1 日。

如果您使用 Google Campaign Manager 運算子,請將環境升級至 Managed Airflow 2.1.13 以上版本。

支援 Google Display & Video 360 運算子

2.1.13 之前的 Managed Airflow 版本中,Google Display & Video 360 運算子是以 Display & Video 360 v1.1 API 為基礎,該 API 已淘汰,停用日期為 2023 年 4 月 27 日。

如果您使用 Google Display & Video 360 運算子,請將環境升級至 Managed Airflow 2.1.13 以上版本。此外,您可能需要變更 DAG,因為部分 Google Display & Video 360 運算子已淘汰,並由新運算子取代。

  • GoogleDisplayVideo360CreateReportOperator 現已淘汰。請改用 GoogleDisplayVideo360CreateQueryOperator。這個運算子會傳回 query_id,而不是 report_id。
  • GoogleDisplayVideo360RunReportOperator 現已淘汰。請改用 GoogleDisplayVideo360RunQueryOperator。這個運算子會傳回 query_id 和 report_id,而非僅傳回 report_id,且需要 query_id 做為參數,而非 report_id。
  • 如要檢查報表是否已準備就緒,請使用新的 GoogleDisplayVideo360RunQuerySensor 感應器,該感應器會使用 query_id 和 report_id 參數。已淘汰的 GoogleDisplayVideo360ReportSensor 感應器只需要 report_id。
  • GoogleDisplayVideo360DownloadReportV2Operator 現在需要 query_id 和 report_id 參數。
  • GoogleDisplayVideo360DeleteReportOperator 中沒有任何會影響 DAG 的變更。

次要範圍名稱限制

CVE-2023-29247 (使用者介面中的任務執行個體詳細資料頁面容易受到儲存型 XSS 攻擊)

Airflow 2.0.x 至 2.5.x 版的 Airflow UI 容易受到 CVE-2023-29247 影響。

如果您使用的 Managed Airflow 版本低於 2.4.2,且懷疑環境可能容易受到這項漏洞攻擊,請參閱下列說明和可能的解決方案。

在 Managed Airflow 中,Airflow UI 的存取權受到 IAM 和 Airflow UI 存取控管機制保護。

也就是說,攻擊者必須先取得專案存取權,以及必要的 IAM 權限和角色,才能利用 Airflow UI 漏洞。

解決方法:

刪除 Managed Airflow (第 2 代) Composer 環境的 Airflow 監控 DAG 後,系統不會重新建立該 DAG

在搭載 composer-2.1.4-airflow-2.4.3 的環境中,如果使用者刪除 Airflow 監控 DAG,或將其移出 bucket,系統不會自動重新建立。

解決方法:

  • 這個問題已在較新版本 (例如 composer-2.4.2-airflow-2.5.3) 中修正。建議您將環境升級至新版本。
  • 如要升級環境,替代或暫時性的解決方法是從相同版本的其他環境複製 airflow_monitoring DAG。

無法縮減 Cloud SQL 儲存空間

Managed Airflow 使用 Cloud SQL 執行 Airflow 資料庫。隨著時間推移,Cloud SQL 執行個體的磁碟儲存空間可能會增加,因為當 Airflow 資料庫成長時,磁碟會擴充以容納 Cloud SQL 作業儲存的資料。

Cloud SQL 磁碟大小無法縮減。

如要使用最小的 Cloud SQL 磁碟大小,可以改用快照重新建立 Managed Airflow 環境。

從 Cloud SQL 移除記錄後,資料庫磁碟用量指標並未減少

Postgres 或 MySQL 等關聯式資料庫在刪除或更新資料列時,不會實際移除資料列,而是標示為「無效元組」,以維持資料一致性,並避免封鎖並行交易。

MySQL 和 Postgres 都會實作機制,在刪除記錄後回收空間。

雖然可以強制資料庫回收未使用的磁碟空間,但這項作業會耗用大量資源,而且會鎖定資料庫,導致 Managed Airflow 無法使用。因此,建議您使用建構機制來回收未使用的空間。

已封鎖存取權:授權錯誤

如果使用者受到這個問題影響,「存取權遭封鎖:授權錯誤」對話方塊會顯示 Error 400: admin_policy_enforced 訊息。

如果 Google Workspace 啟用「API 控制項」>「未設定的第三方應用程式」>「禁止使用者存取任何第三方應用程式」選項,且未明確允許 Managed Airflow 應用程式中的 Apache Airflow,使用者就必須明確允許該應用程式,才能存取 Airflow UI。

如要允許存取,請按照「允許在 Google Workspace 中存取 Airflow UI」中的步驟操作。

存取 Airflow UI 時,登入程序陷入迴圈

這個問題的可能原因如下:

過去成功的任務執行個體標示為「失敗」

在某些情況和罕見情境下,過去成功的 Airflow 工作執行個體可能會標示為 FAILED。

如果發生這種情況,通常是由環境更新或升級作業,或 GKE 維護作業觸發。

注意:問題本身並不代表環境有任何問題,也不會導致工作執行失敗。

這個問題已在 Managed Airflow 2.6.5 以上版本中修正。

Airflow 元件與 Managed Airflow 設定的其他部分通訊時發生問題

這個問題僅適用於 Managed Airflow (第 2 代) 2.10.2 以下版本。

在極少數情況下,與 Compute Engine 中繼資料伺服器的通訊速度緩慢,可能會導致 Airflow 元件無法以最佳狀態運作。例如,Airflow 排程器可能會重新啟動、Airflow 任務可能需要重試,或任務啟動時間可能較長。

問題:

Airflow 元件 (例如 Airflow 排程器、worker 或網路伺服器) 的記錄中會顯示下列錯誤:

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

解決方法:

  • 將環境升級至較新的 Managed Airflow 版本。這個問題已在 Managed Airflow 2.11.0 以上版本修正。

Airflow 網路伺服器不提供 /data 資料夾

在 Managed Airflow (第 2 代) 和 Managed Airflow (第 3 代) 中,Airflow 網路伺服器主要是唯讀元件,Managed Airflow 不會將 data/ 資料夾同步至這個元件。

有時,您可能需要在所有 Airflow 元件 (包括 Airflow 網路伺服器) 之間共用通用檔案。

解決方法:

  • 將要與網路伺服器共用的檔案包裝成 PYPI 模組,並以一般 PYPI 套件的形式安裝。在環境中安裝 PYPI 模組後,檔案會新增至 Airflow 元件的映像檔,並可供這些元件使用。

  • 將檔案新增至 plugins/ 資料夾。這個資料夾會同步到 Airflow 網路伺服器。

監控頁面中的非連續 DAG 剖析時間和 DAG 包大小圖表

如果監控資訊主頁上的 DAG 剖析時間和 DAG 包大小圖表不連續,表示 DAG 剖析時間過長 (超過 5 分鐘)。

Airflow DAG 剖析時間和 DAG 包大小圖表,顯示一系列不連續的時間間隔
圖 1. 非連續 DAG 剖析時間和 DAG 包裹大小圖表 (按一下即可放大)

解決方案: 建議將 DAG 剖析總時間控制在 5 分鐘內。如要縮短 DAG 剖析時間,請遵循 DAG 編寫指南。

Cloud Logging 缺少 Managed Airflow 元件記錄

環境元件發生問題,無法將 Airflow 元件的記錄上傳至 Cloud Logging。這項錯誤有時會導致 Airflow 元件缺少 Managed Airflow 層級記錄。Kubernetes 元件層級仍會提供相同的記錄。

問題發生頻率:極少、偶爾

原因:

Managed Airflow 元件行為不正確,導致無法將記錄上傳至 Cloud Logging。

解決方法:

  • 將環境升級至 Managed Airflow 2.10.0 以上版本。

  • 在舊版 Managed Airflow 中,遇到這種情況時,暫時的解決方法是啟動 Managed Airflow 作業,重新啟動缺少記錄的元件。

不支援將環境的叢集切換至 GKE Enterprise 版本

這項附註適用於 Managed Airflow 1 和 Managed Airflow 2。

Managed Airflow 環境的 GKE 叢集是在 GKE Standard 版本中建立。

自 2024 年 12 月起,Managed Airflow 服務不支援在 Enterprise Edition 中建立具備叢集的 Managed Airflow 環境。

Managed Airflow 環境未經 GKE Enterprise Edition 測試,且計費模式不同。

我們會在 2025 年第 2 季進一步說明 GKE Standard 版和 Enterprise 版。

Airflow 元件與 Managed Airflow 設定的其他部分通訊時發生問題

在某些情況下,由於 DNS 解析失敗,Airflow 元件在與其他 Managed Airflow 元件或 Managed Airflow 環境外的服務端點通訊時,可能會發生問題。

問題:

Airflow 元件 (例如 Airflow 排程器、worker 或網路伺服器) 的記錄中可能會顯示下列錯誤:

google.api_core.exceptions.ServiceUnavailable: 503 DNS resolution failed ...
... Timeout while contacting DNS servers

或

Could not access *.googleapis.com: HTTPSConnectionPool(host='www.googleapis.com', port=443): Max retries exceeded with url: / (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0x7c5ef5adba90>: Failed to resolve 'www.googleapis.com' ([Errno -3] Temporary failure in name resolution)"))

或

redis.exceptions.ConnectionError: Error -3 connecting to
airflow-redis-service.composer-system.svc.cluster.local:6379.
Temporary failure in name resolution.

可能的解決方案:

  • 升級至 Managed Airflow 2.9.11 或

  • 設定下列環境變數:GCE_METADATA_HOST=169.254.169.254。

專案的帳單帳戶遭到刪除或停用,或是 Cloud Composer API 遭到停用,導致環境處於「錯誤」狀態

受這些問題影響的 Managed Airflow 環境無法復原:

  • 專案的帳單帳戶遭到刪除或停用後,即使之後連結其他帳戶也一樣。
  • 專案中的 Cloud Composer API 已停用,即使之後啟用也一樣。

您可以採取下列做法解決問題:

  • 您仍可存取儲存在環境 bucket 中的資料,但環境本身已無法使用。您可以建立新的 Managed Airflow 環境,然後轉移 DAG 和資料。

  • 如要執行任何會導致環境無法復原的操作,請務必備份資料,例如建立環境快照。這樣一來,您就能建立另一個環境,並載入這個快照來移轉資料。

環境叢集 Pod disruption budget 警告

在 Managed Airflow 環境叢集的 GKE UI 中,您可能會看到下列警告:

GKE can't perform maintenance because the Pod Disruption Budget allows
for 0 Pod evictions. Update the Pod Disruption Budget.
A StatefulSet is configured with a Pod Disruption Budget but without readiness
probes, so the Pod Disruption Budget isn't as effective in gauging application
readiness. Add one or more readiness probes.

這些警告無法消除。我們正努力避免產生這些警告。

可能的解決方案:

  • 在問題修正前,請忽略這些警告。

無法移除 Airflow 連線中的欄位值

原因:

Apache Airflow 使用者介面有限制,無法將連線欄位更新為空白值。如果嘗試這麼做,系統會還原為先前儲存的設定。

可能的解決方案:

雖然 Apache Airflow 2.10.4 版包含永久修正程式,但使用舊版的使用者仍可採取暫時性的解決方法。這包括刪除連線後重新建立,並特別將必要欄位留空。建議使用指令列介面刪除連線:

gcloud composer environments run ENVIRONMENT_NAME \
--location LOCATION \
connections delete -- \
CONNECTION_ID

刪除連線後,請使用 Airflow UI 重新建立連線,並確保要留空的欄位確實留空。您也可以使用 Google Cloud CLI 執行 connections add Airflow CLI 指令,建立連線。

如果 [core]execute_tasks_new_python_interpreter 設為 True,系統就不會收集 Airflow 工作的記錄

如果 [core]execute_tasks_new_python_interpreter Airflow 設定選項設為 True,Managed Airflow 就不會收集 Airflow 工作的記錄。

參考解法:

  • 移除這個設定選項的覆寫,或將其值設為 False。

指標缺少資料點,ValueError:無法在沒有值區名稱的情況下判斷路徑

如果環境採用 Managed Airflow (第 2 代) 2.16.0 和 2.16.1 版,可能會遇到指標回報的已知問題。您可以在回報的指標中看到一些略過的資料點,並在環境記錄中看到 airflow-monitoring Pod 重新啟動的錯誤訊息。

錯誤訊息範例:ValueError: Cannot determine path without bucket name error。

這個問題不會影響環境功能。環境仍可運作,且環境健康狀態和監控資訊會正確回報。您可以忽略錯誤訊息。

多個 google-api-core 套件版本的環境效能降低

預先安裝的 google-api-core 套件版本 2.28.0 至 2.30.2 可能會導致環境效能降低,進而延長執行工作的時間,以及將工作從佇列狀態移至執行狀態的時間。

受影響的 Managed Airflow (第 3 代) 版本:

  • composer-3-airflow-3.1.7-build.0 至 composer-3-airflow-3.1.7-build.5
  • composer-3-airflow-3.1.0-build.5 至 composer-3-airflow-3.1.0-build.10
  • composer-3-airflow-2.11.1-build.0
  • composer-3-airflow-2.10.5-build.22 至 composer-3-airflow-2.10.5-build.33
  • composer-3-airflow-2.9.3-build.42 至 composer-3-airflow-2.9.3-build.53

受影響的 Managed Airflow (第 2 代) 版本:

  • composer-2.16.10-airflow-2.11.1
  • composer-2.16.0-airflow-2.10.5 至 composer-2.16.10-airflow-2.10.5
  • composer-2.16.0-airflow-2.9.3 至 composer-2.16.10-airflow-2.9.3

建議您將環境升級至下列版本,其中包含已修正或不存在問題的套件版本:

  • composer-3-airflow-3.1.7-build.7 以上版本
  • composer-3-airflow-2.11.1-build.3 以上版本
  • composer-3-airflow-2.10.5-build.36 以上版本
  • composer-3-airflow-2.9.3-build.54 (包含 2.27.0)
  • composer-2.17.0-airflow-2.11.1 以上版本
  • composer-2.17.0-airflow-2.10.5 以上版本
  • composer-2.16.11-airflow-2.11.1 (包含 2.27.0)
  • composer-2.16.11-airflow-2.10.5 (包含 2.27.0)
  • composer-2.16.11-airflow-2.9.3 (包含 2.27.0)

如要解決這個問題,您可以手動將較新版本的 google-api-core 套件安裝到受影響的環境,並指定 >=2.30.3 為必要版本。

後續步驟