既知の問題

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

Composer 1.10.2 と Composer 1.10.3 で DAG のシリアル化がオンの場合、Airflow UI はタスクログを表示しません。

Composer のバージョン 1.10.2 と 1.10.3 を使用する環境で DAG のシリアル化を有効にすると、Airflow ウェブサーバーにログが表示されなくなります。この問題を解決するには、バージョン 1.10.4 以降にアップグレードしてください。

Cloud Composer でのスケジューリング中にタスクが断続的に失敗する

この問題は、タスクの実行中にタスク インスタンスの Airflow スケジューラで発生します。ただし、ログではタスクの失敗の原因が示されず、Airflow ワーカーと Airflow スケジューラは比較的正常だったように見えます。

Airflow スケジューラのエラー メッセージは次のようになります。

Executor reports task instance <TaskInstance: xx.xxxx
scheduled__2022-04-21T06:00:00+00:00 [queued]> finished (failed) although the
task says its queued. (Info: None) Was the task killed externally?

または、Airflow ワーカーに次のようなエラー メッセージでエラーが表示される場合があります。

Log file is not found: gs://$BUCKET_NAME/logs/$DAG_NAME/$TASK_NAME/
2023-01-25T05:01:17.044759+00:00/1.log.
The task might not have been executed or worker executing it might have
finished abnormally (e.g. was evicted).

Airflow の長年の問題に起因するこのようなエラーに対して堅牢性を確保するため、タスクレベルと DAG レベルの両方で適切な再試行戦略を事前に実装することを強くおすすめします。これらの対策を組み込むことで、システムはこれらのエラーの影響を効果的に軽減し、ワークフローの全体的な信頼性と復元力を強化できます。

GKE Workload Identity Federation for GKE はサポートされていません

Cloud Composer 1 では、Cloud Composer 環境クラスタで Workload Identity Federation for GKE を有効にできません。その結果、Security Command Center に WORKLOAD_IDENTITY_DISABLED が表示される場合があります。

更新中に追加された環境ラベルが完全には反映されていません

環境ラベルを更新しても、環境のクラスタ内の Compute Engine VM には適用されません。回避策として、ラベルを手動で適用できます。

Airflow 1.9.0 から Airflow 1.10.x へのアップグレード後、Airflow ウェブサーバーで Airflow タスクログが利用できなくなります

Airflow 1.10.x では、ログファイルの命名規則に関する下位互換性のない変更が導入されています。Airflow タスクのログ名にゾーン情報が追加されました。

Airflow 1.9.0 では、次の形式でのログ名が保存、想定されます。BUCKET/logs/DAG/2020-03-30T10:29:06/1.log Airflow 1.10.x では、次の形式でのログ名が保存、想定されます。BUCKET/logs/DAG/2020-03-30T10:29:06+00:00/1.log

そのため、Airflow 1.9.0 から Airflow 1.10.x にアップグレードする際に Airflow 1.9.0 で実行されるタスクのログを読み取ると、Airflow ウェブサーバーに次のエラー メッセージが表示されます。Unable to read remote log from BUCKET/logs/DAG/2020-03-30T10:29:06+00:00/1.log

回避策: Cloud Storage バケットで Airflow 1.9.0 によって生成されたログの名前を、次の形式を使用して変更します。BUCKET/logs/DAG/2020-03-30T10:29:06+00:00/1.log

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>.

回避策:

  1. Cloud Composer 環境を作成するプロジェクトで組織のポリシーを無効にします。

    親リソース(組織またはフォルダ)で有効にされていても、プロジェクト レベルで組織のポリシーをいつでも無効にできます。詳細については、ブール型制約のポリシーのカスタマイズ ページをご覧ください。

  2. 除外フィルタを使用する

    シリアルポート ログに除外フィルタを使用すると、ログにシリアル コンソール ログが記録されるため、組織ポリシーを無効にする場合と同じ目標が達成されます。詳しくは、除外フィルタのページをご覧ください。

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. ]

クラスタがすでに削除されている場合に環境を削除するには:

  1. Google Cloud コンソールで、[Deployment Manager] ページに移動します。

    Deployment Manager に移動

  2. ラベルが付いているすべてのデプロイを検索します。

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

    以下のラベルが付けられた 2 つのデプロイが表示されます。

    • <environment-location>-<environment-name-prefix>-<hash>-sd という名前のデプロイ
    • addons-<uuid> という名前のデプロイ
  3. これら 2 つのデプロイにまだリストされ、プロジェクト(Pub/Sub のトピックとサブスクリプションなど)に存在しているリソースを、手動で削除します。手順は次のとおりです。

    1. デプロイを選択します。

    2. [削除] をクリックします。

    3. [2 つのデプロイと、それらによって作成されたすべてのリソース(VM、ロードバランサ、ディスクなど)の削除] オプションを選択し、[すべて削除] をクリックします。

    削除操作は失敗しますが、残りのリソースは削除されます。

  4. 次のいずれかの方法でデプロイを削除します。

    • 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
      
  5. Cloud Composer 環境を削除します

「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 APIIdentity-Aware Proxy TCP API をセキュリティ境界に追加しないでください。

  • YAML 条件ファイルで次の構成を使用して、cloud-airflow-prod@system.gserviceaccount.com サービス アカウントをセキュリティ境界のメンバーとして追加します。

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

compute.requireOsLogin ポリシーが有効な場合に Cloud Composer 1 環境の作成が失敗します

プロジェクトで compute.requireOsLogin ポリシーが true に設定されている場合、Cloud Composer 1 v1 環境の作成オペレーションは失敗します。

Cloud Composer 1 環境を作成するには、プロジェクトでこのポリシーを無効にします。

この組織のポリシーの詳細については、組織のポリシーの制約をご覧ください。

compute.vmExternalIpAccess ポリシーが無効な場合、Cloud Composer 環境の作成またはアップグレードが失敗する

この問題は、Cloud Composer 1 環境と Cloud Composer 2 環境に該当します。

パブリック IP モードで構成された Cloud Composer 所有の GKE クラスタでは、VM に外部への接続性が必要です。このため、compute.vmExternalIpAccess ポリシーでは外部 IP アドレスを持つ VM の作成を禁止できません。この組織のポリシーの詳細については、組織のポリシーの制約をご覧ください。

compute.vmCanIpForward ポリシーが無効になっていると、Cloud Composer 環境の作成に失敗します

VPC ネイティブ以外のモード(エイリアス IP を使用)で作成された Cloud Composer 1 環境では、有効な IP 転送機能を使用して VM を作成できるようにするために、このポリシーが必要となります。この組織のポリシーの詳細については、組織のポリシーの制約をご覧ください。

アップロードした DAG ファイルに対する初回の DAG 実行に、失敗したタスクがいくつかある

DAG ファイルをアップロードするとき、そのファイルに対する初回の DAG 実行時に、最初のいくつかのタスクが Unable to read remote log... エラーで失敗します。この問題が発生するのは、DAG ファイルが環境のバケット、Airflow ワーカー、環境内の Airflow スケジューラの間で同期されているためです。スケジューラが DAG ファイルを取得し、ワーカーが実行するようにスケジュールした場合、ワーカーに DAG ファイルがまだない場合は、タスクの実行が失敗します。

この問題を軽減するため、Airflow 2 を使用する環境は、失敗したタスクに対して 2 回の再試行を行うようにデフォルトで構成されています。タスクが異常終了した場合、5 分間隔で 2 回再試行されます。

Airflow 1 でこの問題を軽減するには、[core]default_task_retries Airflow 構成オプションを 2 以上の数値に設定してオーバーライドします。

Airflow 1.10.15 以前のバージョンで「OSError: [Errno 5] Input / output error」でタスクが失敗する

まれに、Airflow 1 バージョンのバグが原因でタスクが Redis キューに 2 回挿入される場合があります。

それによってログファイルで競合状態が発生し、後続のタスクが失敗することがあります。タスクの失敗により、Cloud Logging には「OSError: [Errno 5] Input/output error」、タスク試行ログには「Task is in the 'running' state which is not a valid state for execution.」が残されます。

このバグは、Airflow 2 で修正されています。長時間実行タスクの Airflow 1 でこの問題が発生した場合は、[celery_broker_transport_options]visibility_timeout Airflow 構成オプションの値を増やします(デフォルト値は Composer 1.17.0 では 604800、古い環境では 21600 です)。短時間のタスクの場合は、影響を受けるタスクの再試行回数を増やすか、環境を Airflow 2 に移行することを検討してください。

Dataproc および Dataflow の演算子が Negsignal.SIGSEGV で失敗します

これは Celery ワーカーから使用した場合に grcpio ライブラリで断続的に発生する問題です。この問題は、Airflow 1.10.14 以降のバージョンに影響を与えます。

回避策として、環境 GRPC_POLL_STRATEGY=epoll1以下の環境変数を追加して、grpcio のポーリング方法を変更します。この回避策は、Cloud Composer 1.17.1 以降のバージョンではすでに適用できるようになっています。

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 1 についてのみ該当します。

2021 年 8 月 12 日より前に作成された古い Cloud Composer 1 環境(1.16.3 以前)では、Airflow データベースとの通信に関連する一時的な問題が発生することがあります。

この問題が発生した場合は、Airflow タスクログに次のエラー メッセージが表示されます。

"Can't connect to MySQL server on 'airflow-sqlproxy-service.default.svc.cluster.local' (104)"

Cloud Composer チームがこの問題の解決に取り組んでいます。その期間内に、この問題の影響が発生していると疑われる場合には、次の手順で問題を緩和します。

  1. Google Cloud コンソールで、影響を受ける Cloud Composer 環境の [環境の構成] ページに移動します。

  2. [クラスタの詳細を表示] リンクから、環境の基盤となる GKE クラスタに移動します。

  3. [ノード] タブに移動し、[ノードプール] セクションに表示されている [default-pool] をクリックします。

    ノードプールのリスト内の default-pool
    図 1. ノードプールのリスト内の default-pool(クリックして拡大)
  4. ページ上部の [編集] をクリックします。

  5. イメージタイプを [containerd を含む Container-Optimized OS] に変更し、構成を保存します。

    ノードプールのイメージタイプを Docker から containerd に変更する
    図 2.ノードプールのイメージタイプを Docker から containerd に変更する(クリックして拡大)
  6. 変更が送信されると、default-pool のノードプールが再構成され、containerd がコンテナ ランタイムとして使用されます。ノードプールの再構成中に、一部の Airflow タスクが失敗する可能性があります。これらのタスクの再試行が構成されている場合、ノードプールでのオペレーションが完了すると、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 でトラフィックを送信する場合は、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.tmpGCS sync exited with 1: gcloud storage cp gs://<bucket-name>/env_var.json.cfg /home/airflow/gcs/env_var.json.tmp のようなログエントリを確認します。 これらのエラーが表示された場合は、エラー メッセージに記載されているファイルが環境のバケットに存在するかどうかを確認します。

    誤って削除された場合(たとえば、保持ポリシーが構成されたため)は、次の方法で復元できます。

    1. 環境に新しい環境変数を設定します。任意の変数名と値を使用できます。

    2. Airflow 構成オプションをオーバーライドします。存在しない Airflow 構成オプションを使用できます。

Airflow 2.2.3 以前のバージョンの Airflow UI は CVE-2021-45229 に対して脆弱

CVE-2021-45229 で示されているように、[Trigger DAG with config] 画面は origin クエリ引数による XSS 攻撃の影響を受けやすくなっています。

推奨事項: Airflow 2.2.5 をサポートする最新の Cloud Composer バージョンにアップグレードします。

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 の構成はサポートされていません。

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_idreport_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 へのアクセスは IAMAirflow UI アクセス制御によって保護されます。

つまり、Airflow UI の脆弱性を悪用するには、攻撃者はまず必要な IAM 権限とロールとともにプロジェクトへのアクセス権を取得する必要があります。

解決方法:

  • プロジェクトの IAM 権限とロール(個々のユーザーに割り当てられた Cloud Composer ロールなど)を確認します。承認されたユーザーのみが Airflow UI にアクセスできるようにします。

  • Airflow UI アクセス制御メカニズム(これは、Airflow UI へのよりきめ細かいアクセスを提供する別のメカニズムです)を使用して、ユーザーに割り当てられたロールを確認します。承認されたユーザーのみが Airflow UI にアクセスできることと、すべての新規ユーザーが適切なロールに登録されていることを確認してください。

  • VPC Service Controls による追加の強化を検討してください。

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 を使用できなくなります。したがって、未使用の容量を再利用するための構築メカニズムを使用することをおすすめします。

過去に成功したタスク インスタンスが [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 を設定します。

モニタリングでの DAG 解析時間と DAG バッグサイズの図が連続していない

Monitoring ダッシュボードの DAG 解析時間と DAG バッグサイズの図が連続していない場合は、DAG 解析時間が長い(5 分を超える)問題が発生しています。

連続していない一連の間隔を示す Airflow DAG 解析時間と DAG バッグサイズのグラフ
図 3.連続していない DAG 解析時間と DAG バッグサイズのグラフ(クリックして拡大)

解決策: DAG の合計解析時間を 5 分未満にすることをおすすめします。DAG の作成ガイドラインに従い、DAG の解析時間を短縮することができます。

環境のクラスタを 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 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 は、このような警告が生成されないようにするための取り組みを行っています。

解決策の提示

  • 問題が解決するまで、これらの警告は無視してください。

次のステップ