Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
このページでは、Cloud Composer 環境の更新中またはアップグレード中に発生する可能性がある問題のトラブルシューティングについて説明します。
環境の作成に関連するトラブルシューティング情報については、環境作成のトラブルシューティングをご覧ください。
Cloud Composer 環境が更新される際、ほとんどの問題は次の理由で発生します。
- サービス アカウントの権限の問題
- PyPI の依存関係に関する問題
- Airflow データベースのサイズ
環境を更新またはアップグレードする権限がありません
権限不足により Cloud Composer で環境を更新またはアップグレードできない場合、次のエラー メッセージが表示されます。
ERROR: (gcloud.composer.environments.update) PERMISSION_DENIED: The caller does not have permission
解決策: アクセス制御での説明に沿って、アカウントと環境のサービス アカウントの両方にロールを割り当てます。
環境のサービス アカウントに十分な権限がありません
Cloud Composer 環境を作成するときに、その環境の GKE クラスタノードを実行するサービス アカウントを指定します。リクエストされたオペレーションを実行するための十分な権限がアカウントにない場合、Cloud Composer はエラーを出力します。
UPDATE operation on this environment failed 3 minutes ago with the
following error message:
Composer Backend timed out. Currently running tasks are [stage:
CP_COMPOSER_AGENT_RUNNING
description: "No agent response published."
response_timestamp {
seconds: 1618203503
nanos: 291000000
}
].
解決策: アクセス制御での説明に沿って、アカウントと環境のサービス アカウントの両方にロールを割り当てます。
Airflow データベースのサイズが大きすぎて操作を実行できません
Airflow データベースのサイズが大きすぎてアップグレード操作を正常に処理できないため、Cloud Composer のアップグレード オペレーションが正常に実行されない場合があります。
Airflow データベースのサイズが 16 GB を超えると、Cloud Composer は次のエラーを出力します。
Airflow database uses more than 16 GB. Please clean the database before upgrading.
解決策: Airflow データベースのメンテナンスの説明に従って、Airflow データベース クリーンアップを実行します。
PyPI パッケージの競合が原因で新しい Cloud Composer バージョンへのアップグレードが失敗する
インストールされたカスタム PyPI パッケージを使用して環境をアップグレードすると、PyPI パッケージの競合に関連するエラーが発生することがあります。これは、新しい Cloud Composer イメージに新しいバージョンのプリインストール済みパッケージが含まれているため、環境にインストールした PyPI パッケージと依存関係の競合が発生するためです。
解決策:
- パッケージの競合に関する詳細情報を取得するには、アップグレード チェックを実行します。
- インストール済みのカスタム PyPI パッケージのバージョン制約を緩和します。たとえば、バージョンを
==1.0.1
ではなく>=1.0.1
として指定します。 - 競合する依存関係を解決するためにバージョン要件を変更する方法について詳しくは、pip のドキュメントをご覧ください。
まだサポートされているバージョンに環境をアップグレードできない
Cloud Composer 環境は、最新バージョンと以前のバージョンのいくつかにのみアップグレードできます。
新しい環境の作成と既存の環境のアップグレードでは、バージョンの制限が異なります。既存の環境をアップグレードするときに、新しい環境の作成時に選択した Cloud Composer のバージョンが使用できない場合があります。
アップグレード オペレーションは、Google Cloud CLI、API、Terraform を使用して実行できます。Google Cloud コンソールでは、アップグレードの選択肢として最新バージョンのみを使用できます。
DNS に接続されていないと、アップグレードや更新中に問題が発生する可能性がある
このような接続の問題により、次のようなログエントリが生成されることがあります。
WARNING - Compute Engine Metadata server unavailable attempt 1 of 5. Reason: [Errno -3] Temporary failure in name resolution Error
通常は DNS へのルートがないことを意味しているため、cluster.google.internal DNS 名をクラスタ、Pod、サービス ネットワーク内から IP アドレスに解決できるようにします。環境が作成されている VPC 内(ホストまたはサービス プロジェクト)で、限定公開の Google アクセスが有効になっているかどうかを確認してください。
詳細情報:
triggerer CPU が 1 vCPU の上限を超えている
Cloud Composer 2 バージョン 2.4.4 以降では、パフォーマンスのスケーリングを改善する別の triggerer リソース割り当て戦略が導入されています。環境の更新の実行中に triggerer CPU に関連するエラーが発生した場合は、triggerer 1 つにつき複数の vCPU を使用するように現在の triggerer が構成されているということです。
解決策:
- 1 vCPU の上限を満たすように triggerer リソースの割り当てを調整します。
- 遅延可能な演算子を使用する DAG の問題が予想される場合は、triggerer の数を増やすことをおすすめします。
失敗した移行の警告を検査する
Airflow を新しいバージョンにアップグレードすると、Airflow データベースに新しい制約が適用されることがあります。これらの制約を適用できない場合、Airflow は新しいテーブルを作成し、制約を適用できなかった行を保存します。移動したデータテーブルが名前変更または削除されるまで、Airflow UI に警告メッセージが表示されます。
解決策:
次の 2 つの DAG を使用して、移動したデータを検査し、テーブルの名前を変更できます。
list_moved_tables_after_upgrade_dag
DAG には、制約を適用できなかったすべてのテーブルから移動された行が一覧表示されます。データを調べて、保持するかどうかを決定します。保持するには、Airflow データベースのデータを手動で修正する必要があります。たとえば、正しいデータで行を追加し直します。
データが不要な場合や、すでに修正されている場合は、rename_moved_tables_after_upgrade_dag
DAG を実行できます。この DAG は、移動されたテーブルの名前を変更します。テーブルとそのデータは削除されません。後でデータを確認できます。