Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
このページには、Cloud Composer の既知の問題が記載されています。問題の修正については、リリースノートをご覧ください。
古いバージョンに影響するいくつかの問題は、環境のアップグレードによって解決できます。
RFC 1918 以外のアドレス範囲は Pod とサービスで部分的にサポートされています
Cloud Composer は、Pod とサービスの RFC 1918 以外のアドレスのサポートの提供を GKE に依存しています。Cloud Composer では、次にあげる 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 には適用されません。回避策として、ラベルを手動で適用できます。
constraints/compute.disableSerialPortLogging の組織のポリシーを有する Cloud Composer 環境が作成できません
constraints/compute.disableSerialPortLogging
組織のポリシーがターゲット プロジェクトに適用されている場合、Cloud Composer 環境の作成は失敗します。
診断
この問題の影響を受けたかどうかを判断するには、次の手順に従います。
Google Cloud コンソールの GKE メニューに移動します。GKE メニューに移動
次に、新しく作成したクラスタを選択します。次のエラーを確認します。
Not all instances running in IGM after 123.45s.
Expect <number of desired instances in IGM>. Current errors:
Constraint constraints/compute.disableSerialPortLogging violated for
project <target project number>.
回避策:
Cloud Composer 環境を作成するプロジェクトで組織のポリシーを無効にします。
親リソース(組織またはフォルダ)で有効にされていても、プロジェクト レベルで組織のポリシーをいつでも無効にできます。詳細については、ブール型制約のポリシーのカスタマイズ ページをご覧ください。
除外フィルタを使用する
シリアルポート ログに除外フィルタを使用すると、ログにシリアル コンソール ログが記録されるため、組織ポリシーを無効にする場合と同じ目標が達成されます。詳しくは、除外フィルタのページをご覧ください。
VPC Service Controls で保護されている Google Cloud リソースを管理することを目的とした Deployment Manager の使用
Cloud Composer 1 と Cloud Composer 2 バージョン 2.0.x では、Deployment Manager を使用して Cloud Composer 環境のコンポーネントを作成します。
2020 年 12 月に、Deployment Manager で VPC Service Controls で保護されているリソースを管理できるようにするために、追加の VPC Service Controls の構成を実施することが必要になるという内容の情報を受信されている可能性があります。
Cloud Composer を使用しており、Deployment Manager を直接 Google Cloud リソースの管理に使用しない場合は、Deployment Manager のお知らせでお伝えしているとおり、お客様側で何も操作していただく必要がないことを明記します。
Deployment Manager で、サポートされていない機能に関する情報が表示されます
Deployment Manager のタブに次のような警告が表示されることがあります。
The deployment uses actions, which are an unsupported feature. We recommend
that you avoid using actions.
Cloud Composer が所有する Deployment Manager のデプロイの場合は、この警告を無視してください。
クラスタが削除された後は環境を削除できません
この問題は、Cloud Composer 1 と Cloud Composer 2 バージョン 2.0.x に該当します。
お使いの環境そのものを削除する前にその環境の GKE クラスタを削除する場合、お使いの環境を削除しようとしたときに次のエラーが発生します。
Got error "" during CP_DEPLOYMENT_DELETING [Rerunning Task. ]
クラスタがすでに削除されている場合に環境を削除するには:
Google Cloud コンソールで、[Deployment Manager] ページに移動します。
ラベルが付いているすべてのデプロイを検索します。
goog-composer-environment:<environment-name>
goog-composer-location:<environment-location>
。
以下のラベルが付けられた 2 つのデプロイが表示されます。
<environment-location>-<environment-name-prefix>-<hash>-sd
という名前のデプロイaddons-<uuid>
という名前のデプロイ
これら 2 つのデプロイにまだリストされ、プロジェクト(Pub/Sub のトピックとサブスクリプションなど)に存在しているリソースを、手動で削除します。手順は次のとおりです。
デプロイを選択します。
[削除] をクリックします。
[2 つのデプロイと、それらによって作成されたすべてのリソース(VM、ロードバランサ、ディスクなど)の削除] オプションを選択し、[すべて削除] をクリックします。
削除操作は失敗しますが、残りのリソースは削除されます。
次のいずれかの方法でデプロイを削除します。
Google Cloud Console で、もう一度両方のデプロイを選択します。[削除] をクリックし、[2 つのデプロイを削除しますが、作成されたリソースを保持します] オプションを選択します。
gcloud コマンドを実行して、
ABANDON
ポリシーを持つデプロイを削除します。gcloud deployment-manager deployments delete addons-<uuid> \ --delete-policy=ABANDON gcloud deployment-manager deployments delete <location>-<env-name-prefix>-<hash>-sd \ --delete-policy=ABANDON
「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 とタスク処理に影響しないため、これらのログエントリは無視できます。
Google は、こうした警告を Airflow ログから取り除くように Cloud Composer サービスを改善しています。
Identity-Aware Proxy API が VPC Service Controls の境界に追加されたプロジェクトで環境の作成が失敗する
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 ポリシーが無効な場合、Cloud Composer 環境の作成またはアップグレードが失敗する
この問題は、Cloud Composer 1 環境と Cloud Composer 2 環境に該当します。
パブリック IP モードで構成された Cloud Composer 所有の GKE クラスタでは、VM に外部への接続性が必要です。このため、compute.vmExternalIpAccess
ポリシーでは外部 IP アドレスを持つ VM の作成を禁止できません。この組織のポリシーの詳細については、組織のポリシーの制約をご覧ください。
アップロードした DAG ファイルに対する初回の DAG 実行に、失敗したタスクがいくつかある
DAG ファイルをアップロードするとき、そのファイルに対する初回の DAG 実行時に、最初のいくつかのタスクが Unable to read remote log...
エラーで失敗します。この問題が発生するのは、DAG ファイルが環境のバケット、Airflow ワーカー、環境内の Airflow スケジューラの間で同期されているためです。スケジューラが DAG ファイルを取得し、ワーカーが実行するようにスケジュールした場合、ワーカーに DAG ファイルがまだない場合は、タスクの実行が失敗します。
この問題を軽減するため、Airflow 2 を使用する環境は、失敗したタスクに対して 2 回の再試行を行うようにデフォルトで構成されています。タスクが異常終了した場合、5 分間隔で 2 回再試行されます。
GKE バージョンからサポートが終了したベータ版 API を削除することについて
Cloud Composer は、基盤となる Cloud Composer が所有する GKE クラスタを管理します。DAG とコードでこのような API を明示的に使用しない限り、GKE API のサポート終了に関する通知は無視できます。必要に応じて、Cloud Composer により移行処理が行われます。
Cloud Composer には Apache Log4j 2 の脆弱性(CVE-2021-44228)の影響なし
Apache Log4j 2 脆弱性(CVE-2021-44228)が発見されたことを受けて、Cloud Composer の詳細な調査を行ったところ、Cloud Composer にはこの脆弱性の悪用に対する脆弱性はないものと思われます。
環境の Cloud Storage バケットへのアクセス時、Airflow ワーカーや Airflow スケジューラに問題が発生する可能性あり
Cloud Composer は gcsfuse を使用して、環境のバケット内の /data
フォルダにアクセスし、Airflow タスクログを /logs
ディレクトリに保存します(有効な場合)。gcsfuse が過負荷になっている場合や、環境のバケットを使用できない場合、Airflow タスク インスタンスで障害が発生し、Airflow ログに Transport endpoint is not connected
エラーが表示されることがあります。
解決策:
- 環境のバケットへのログの保存を無効にします。 Cloud Composer 2.8.0 以降のバージョンを使用して環境を作成する場合は、このオプションはすでにデフォルトで無効になっています。
- Cloud Composer 2.8.0 以降のバージョンにアップグレードします。
[celery]worker_concurrency
を減らし、代わりに Airflow ワーカーの数を増やします。- DAG のコードで生成されるログの量を減らします。
- DAG を実装するための推奨事項とベスト プラクティスに従い、タスクの再試行を有効にします。
プラグインを変更すると、Airflow UI でそのプラグインが再読み込みされないことがある
プラグインが他のモジュールをインポートする多数のファイルで構成されている場合、Airflow UI はプラグインを再読み込みする必要があることを認識できない可能性があります。このような場合は、環境の Airflow ウェブサーバーを再起動します。
環境のクラスタでワークロードがスケジュール不可の状態になっています
この既知の問題は Cloud Composer 2 についてのみ該当します。
Cloud Composerr 2 では、環境が作成されると、環境のクラスタ内のいくつかのワークロードがスケジュール不可の状態のままになります。
環境がスケールアップされると、新しいワーカー Pod が作成され、Kubernetes がそれらを実行しようとします。実行できる空きリソースがない場合、ワーカー Pod はスケジュール不可とマークされます。
この場合、クラスタ オートスケーラーがノードを追加します(数分かかる場合があります)。完了するまで、Pod はスケジュール不可能の状態のままで、タスクは実行されません。
composer-gcsfuse
および composer-fluentd
という名前のスケジュール不可能な DaemonSet ワークロードは、Airflow コンポーネントが存在しないノードで起動できないため、環境には影響しません。
この問題が長時間(1 時間以上)続く場合は、Cluster Autoscaler のログを調べてください。このログはログビューアで次のフィルタを使用することで確認できます。
resource.type="k8s_cluster"
logName="projects/<project-name>/logs/container.googleapis.com%2Fcluster-autoscaler-visibility"
resource.labels.cluster_name="<cluster-name>"
Cluster Autoscaler による決定に関する情報が含まれます。noDecisionStatus を展開して、クラスタをスケールアップまたはスケールダウンできない理由を確認します。
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 でトラフィックを送信する場合は、Cloud DNS を*.composer.cloud.google.com
ドメイン名にも構成します。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
のようなログエントリを確認します。 これらのエラーが表示された場合は、エラー メッセージに記載されているファイルが環境のバケットに存在するかどうかを確認します。誤って削除された場合(たとえば、保持ポリシーが構成されたため)は、次の方法で復元できます。
環境に新しい環境変数を設定します。任意の変数名と値を使用できます。
Airflow 構成オプションをオーバーライドします。存在しない Airflow 構成オプションを使用できます。
ツリービューでタスク インスタンスにカーソルを合わせると、捕捉されていない 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 をサポートする最新の Cloud Composer バージョンにアップグレードします。
ワーカーは以前の Airflow バージョンよりも多くのメモリを必要とします
症状
Cloud Composer 2 環境で、Airflow ワーカーのすべての環境のクラスタ ワークロードが
CrashLoopBackOff
ステータスになり、タスクを実行しない。この問題の影響を受けると、OOMKilling
警告が生成されて表示されることもあります。この問題により、環境アップグレードが妨げられる可能性があります。
原因:
[celery]worker_concurrency
Airflow 構成オプションでカスタム値を使用し、Airflow ワーカーでカスタムメモリ設定を使用すると、リソース使用量が上限に近づいたときにこの問題が発生する可能性があります。- Python 3.11 を使用した Airflow 2.6.3 の Airflow ワーカーのメモリ要件は、以前のバージョンのワーカーと比較して 10% 高くなっています。
- Airflow 2.3 以降のバージョンの Airflow ワーカーのメモリ要件は、Airflow 2.2 または Airflow 2.1 のワーカーと比較して 30% 高くなっています。
解決策:
worker_concurrency
のオーバーライドを削除して、Cloud Composer がこの値を自動的に計算できるようにします。worker_concurrency
にカスタム値を使用する場合は、より小さな値に設定します。 自動的に計算された値を出発点として使用できます。- それ以外の方法としては、Airflow ワーカーが使用できるメモリの量を増やすこともできます。
- この問題が原因で環境を新しいバージョンにアップグレードできない場合は、アップグレード前に提案された解決策のいずれかを適用します。
Cloud Run functions を使用したプライベート ネットワーク経由の DAG トリガー
Cloud Composer では、VPC コネクタを使用してプライベート ネットワーク経由で Cloud Run functions によって DAG をトリガーすることはサポートされていません。
推奨: Cloud Run functions を使用して Pub/Sub にメッセージをパブリッシュします。このようなイベントによって Pub/Sub センサーを起動し、Airflow DAG をトリガーしたり、遅延可能な演算子に基づいてアプローチを実装したりできます。
スケジューラとワーカーの空のフォルダ
Cloud Composer では、Airflow ワーカーとスケジューラから空のフォルダを積極的に削除しません。このようなフォルダがバケットに存在し、最終的に削除された場合に、環境バケット同期プロセスの結果として、そのようなエンティティが作成される可能性があります。
推奨事項: このような空のフォルダをスキップするように DAG を調整します。
こうしたエンティティは、このようなコンポーネントの再起動時に Airflow スケジューラとワーカーのローカル ストレージから最終的に削除されます(環境のクラスタでのスケールダウンやメンテナンス オペレーションの結果として)。
Kerberos のサポート
Cloud Composer では、Airflow Kerberos の構成はサポートされていません。
Cloud Composer 2 と Cloud Composer 3 でのコンピューティング クラスのサポート
Cloud Composer 3 と Cloud Composer 2 は、汎用のコンピューティング クラスのみをサポートしています。つまり、他のコンピューティング クラス(バランスやスケールアウトなど)をリクエストする Pod は実行できません。
汎用クラスでは、最大 110 GB のメモリと最大 30 個の CPU をリクエストする Pod を実行できます(コンピューティング クラスの最大リクエストを参照)。
ARM ベースのアーキテクチャを使用する場合や、CPU とメモリを増やす必要がある場合は、別のコンピューティング クラスを使用する必要があります。これは、Cloud Composer 3 クラスタと Cloud Composer 2 クラスタではサポートされていません。
推奨事項: GKEStartPodOperator
を使用して、選択したコンピューティング クラスをサポートする別のクラスタで Kubernetes Pod を実行します。別のコンピューティング クラスを必要とするカスタム Pod を実行する場合は、Cloud Composer 2 以外のクラスタで実行する必要があります。
Google キャンペーン マネージャー 360 の演算子のサポート
2.1.13 より前のバージョンの Cloud Composer の Google キャンペーン マネージャーの演算子は、サポートが終了したキャンペーン マネージャー 360 の v3.5 API に基づいており、廃止日は 2023 年 5 月 1 日です。
Google キャンペーン マネージャーの演算子を使用する場合は、環境を Cloud Composer バージョン 2.1.13 以降にアップグレードします。
Google ディスプレイ&ビデオ 360 の演算子のサポート
2.1.13 より前のバージョンの Cloud Composer の Google ディスプレイ&ビデオ 360 の演算子は、サポートが終了したディスプレイとビデオ 360 v1.1 API をベースに基づいており、廃止日は 2023 年 4 月 27 日です。
Google ディスプレイ&ビデオ 360 の演算子を使用している場合は、環境を Cloud Composer バージョン 2.1.13 以降にアップグレードします。加えて、一部の Google ディスプレイ&ビデオ 360 の演算子はサポートが終了し、新しいものに置き換えられるため、DAG の変更が必要になることがあります。
GoogleDisplayVideo360CreateReportOperator
のサポートは終了しました。代わりにGoogleDisplayVideo360CreateQueryOperator
を使用します。この演算子はreport_id
ではなくquery_id
を返します。GoogleDisplayVideo360RunReportOperator
のサポートは終了しました。代わりにGoogleDisplayVideo360RunQueryOperator
を使用します。この演算子はreport_id
のみではなくquery_id
とreport_id
を返し、パラメータとしてreport_id
ではなくquery_id
を必要とします。- レポートの準備ができているかどうかを確認するには、
query_id
パラメータとreport_id
パラメータを使用する新しいGoogleDisplayVideo360RunQuerySensor
センサーを使用します。非推奨のGoogleDisplayVideo360ReportSensor
センサーに必要なのはreport_id
のみでした。 GoogleDisplayVideo360DownloadReportV2Operator
にはquery_id
パラメータとreport_id
パラメータの両方が必要になりました。GoogleDisplayVideo360DeleteReportOperator
には、DAG に影響する変更はありません。
セカンダリ範囲の名前の制限事項
CVE-2023-29247(保存された XSS に対して UI のタスク インスタンスの詳細ページが脆弱)
Airflow バージョン 2.0.x~2.5.x の Airflow UI には CVE-2023-29247 の脆弱性があります。
2.4.2 より前のバージョンの Cloud Composer を使用していて、環境がセキュリティ上の脆弱性を利用した不正プログラムに対して脆弱であると思われる場合は、以下の説明と考えられる解決策をご覧ください。
Cloud Composer では、Airflow UI へのアクセスは IAM と Airflow UI アクセス制御によって保護されます。
つまり、Airflow UI の脆弱性を悪用するには、攻撃者はまず必要な IAM 権限とロールとともにプロジェクトへのアクセス権を取得する必要があります。
解決方法:
プロジェクトの IAM 権限とロール(個々のユーザーに割り当てられた Cloud Composer ロールなど)を確認します。承認されたユーザーのみが Airflow UI にアクセスできるようにします。
Airflow UI アクセス制御メカニズム(これは、Airflow UI へのよりきめ細かいアクセスを提供する別のメカニズムです)を使用して、ユーザーに割り当てられたロールを確認します。承認されたユーザーのみが Airflow UI にアクセスできることと、すべての新規ユーザーが適切なロールに登録されていることを確認してください。
VPC Service Controls による追加の強化を検討してください。
削除後に Cloud Composer 2 の Composer 環境の Airflow モニタリング DAG が再作成されない
ユーザーが削除したり、composer-2.1.4-airflow-2.4.3 の環境のバケットから移動したりしても、Airflow モニタリング DAG は自動的に再作成されません。
解決方法:
- これは、composer-2.4.2-airflow-2.5.3 などの新しいバージョンで修正されています。環境を新しいバージョンにアップグレードすることをおすすめします。
- 環境のアップグレードの代替手段または一時的な回避策として、同じバージョンの別の環境から airflow_monitoring DAG をコピーする方法もあります。
Cloud SQL のストレージを削減できない
Cloud Composer は Cloud SQL を使用して Airflow データベースを実行します。Cloud SQL インスタンスのディスク ストレージは時間の経過とともに増加する場合があります。これは、Airflow データベースの拡大時に Cloud SQL オペレーションによって保存されたデータに合わせてディスクがスケールアップされるためです。
Cloud SQL ディスクのサイズをスケールダウンすることはできません。
回避策として、最小の Cloud SQL ディスクサイズを使用したい場合は、スナップショットによって Cloud Composer 環境を再作成できます。
Cloud SQL からレコードを削除した後も、データベースのディスク使用量の指標が減少しない
Postgres や MySQL などのリレーショナル データベースでは、削除や更新時に行が物理的に削除されることはありません。代わりに、「デッドタプル」としてマークされ、データの整合性を維持して同時実行トランザクションがブロックされないようになります。
MySQL と Postgres の両方で、削除されたレコードの後に領域を再利用するメカニズムを実装しています。
データベースに未使用のディスク容量の再利用を強制することはできますが、これはリソースを大量に消費するオペレーションになり、データベースがさらにロックされ、Cloud Composer を使用できなくなります。したがって、未使用の容量を再利用するための構築メカニズムを使用することをおすすめします。
アクセスをブロック: 認証エラーです
この問題がユーザーに影響する場合、[アクセスをブロック: 認証エラーです] ダイアログに Error 400: admin_policy_enforced
メッセージが含まれます。
[API の制御] > [未設定のサードパーティ製アプリ] > [ユーザーにサードパーティ製アプリへのアクセスを許可しない] オプションが Google Workspace で有効になっており、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
ID タイプが使用されている場合、ユーザーは Airflow UI にアクセスできず、ログイン ループに陥ります。このシナリオに対処する方法については、VPC Service Controls 上り(内向き)ルールで Airflow UI へのアクセスを許可するをご覧ください。
過去に成功したタスク インスタンスが [FAILED] とマークされています
特定の状況やまれなシナリオでは、過去に成功した Airflow タスク インスタンスが FAILED
とマークされる可能性があります。
このエラーが発生した場合、通常は環境の更新またはアップグレード オペレーション、あるいは GKE のメンテナンスによってトリガーされます。
注: この問題自体は環境に問題があることを示しているわけではなく、タスクの実行で実際に失敗することはありません。
この問題は、Cloud Composer バージョン 2.6.5 以降で修正されています。
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 バッグサイズの図が連続していない
Monitoring ダッシュボードの DAG 解析時間と DAG バッグサイズの図が連続していない場合は、DAG 解析時間が長い(5 分を超える)問題が発生しています。

解決策: DAG の合計解析時間を 5 分未満にすることをおすすめします。DAG の解析時間を短縮するには、DAG の作成ガイドラインに沿って対応してください。
Cloud Logging に Cloud Composer コンポーネントのログがない
Airflow コンポーネントのログを Cloud Logging にアップロードする環境のコンポーネントに問題があります。このバグにより、Airflow コンポーネントの Cloud Composer レベルのログが欠落することがあります。同じログは Kubernetes コンポーネント レベルでも引き続き使用できます。
問題が発生する頻度: 非常にまれ、断続的
原因:
Cloud Logging にログをアップロードする Cloud Composer コンポーネントの動作が正しくない。
解決策:
環境を Cloud Composer バージョン 2.10.0 以降にアップグレードします。
以前のバージョンの Cloud Composer では、この状況が発生した場合の暫定的な回避策として、ログが欠落しているコンポーネントを再起動する Cloud Composer オペレーションを開始します。
環境のクラスタを GKE Enterprise エディションに切り替えることはできません
この注記は、Cloud Composer 1 と Cloud Composer 2 に適用されます。
Cloud Composer 環境の GKE クラスタは、GKE Standard Edition 内に作成されます。
2024 年 12 月現在、Cloud Composer サービスでは、Enterprise Edition でクラスタを使用して Cloud Composer 環境を作成することはサポートされていません。
Cloud Composer 環境は GKE Enterprise エディションでテストされておらず、請求モデルが異なります。
GKE Standard エディションと Enterprise エディションに関する詳細は、2025 年第 2 四半期に通知されます。
Cloud Composer 構成の他の部分と通信する際に Airflow コンポーネントの問題が発生する
DNS 解決に失敗すると、Airflow コンポーネントが Cloud Composer 環境外の他の Cloud Composer コンポーネントまたはサービス エンドポイントと通信する際に問題が発生することがあります。
症状:
Airflow コンポーネントのログ(Airflow スケジューラ、ワーカー、ウェブサーバーなど)に次のエラーが表示されることがあります。
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.
解決策の提示
Cloud Composer 2.9.11 にアップグレードするか、
環境変数
GCE_METADATA_HOST=169.254.169.254
を設定します。
プロジェクトの請求先アカウントが削除または無効にされた後、または Cloud Composer API が無効にされた後、環境が ERROR 状態になっている
これらの問題の影響を受ける Cloud Composer 環境は復元できません。
- プロジェクトの請求先アカウントが削除または無効化された後(後で別のアカウントがリンクされた場合でも)。
- プロジェクトで Cloud Composer API が無効にされた後(後で有効にした場合でも)。
この問題に対処するには、次の操作を行います。
環境のバケットに保存されているデータには引き続きアクセスできますが、環境自体はもう使用できなくなります。新しい Cloud Composer 環境を作成してから、DAG とデータを転送できます。
環境を復元不能にするオペレーションを実行する場合は、環境のスナップショットを作成するなど、必ずデータをバックアップしてください。この方法で、別の環境を作成し、このスナップショットを読み込んでデータを転送できます。
環境クラスタの Pod Disruption Budget に関する警告
Cloud Composer 環境クラスタの 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.
これらの警告を排除することはできません。Google は、このような警告が生成されないように取り組んでいます。
解決策の提示
- 問題が解決するまで、これらの警告は無視してください。