AWS Batch の「DockerTimeoutError」エラーを解決する方法を教えてください。

所要時間2分
0

AWS Batch コンピューティング環境のジョブが失敗し、次のエラーが返されます。 「DockerTimeoutError: Could not transition to created; timed out after waiting 4m0s」 このエラーを解決するにはどうすればよいですか?

簡単な説明

Docker の起動Docker 作成の API コールに 4 分以上かかる場合、AWS Batch は DockerTimeoutError エラーを返します。

**注:**Amazon Elastic Container Service (Amazon ECS) のコンテナエージェントが設定するデフォルトのタイムアウト制限は 4 分です。

このエラーの原因として最もよく見られる原因は以下のとおりです。

  • AWS Batch コンピューティング環境の ECS インスタンスボリュームが、キュー内の他のすべてのジョブからの高い I/O 負荷にさらされている。これらのジョブはバーストバランスを使い果たす可能性があります。
  • 停止した ECS コンテナが、Docker デーモンを解放するのに十分な速さでクリーンアップされていない。AWS Batch が提供するデフォルトの AMI ではなく、カスタマイズされた Amazon マシンイメージ (AMI) を使用すると、Docker の問題が発生する可能性があります。

どちらの問題もエラーの原因になっていない場合は、次のアクションを実行して問題を解決してください。

  • Docker ログを確認して、エラーの原因を特定する。
  • AWS Batch コンピューティング環境に関連付けられている ECS クラスターの ECS インスタンスで、Amazon ECS ログコレクタースクリプトを実行する。

解決策

バーストバランスの問題の解決

**ECS インスタンスのバーストバランスを確認する **

**注:**AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI エラーのトラブルシューティング」を参照してください。また、使用している AWS CLI が最新バージョンであることを確認してください。

次の手順を実行します。

  1. Amazon ECS コンソールを開きます。
  2. ナビゲーションペインで [クラスター] を選択します。次に、ジョブを含むクラスターを選択します。
    **注:クラスターの名前はコンピューティング環境の名前で始まり、その後に\ _Batch\ _ **、数字と文字のランダムハッシュが続きます。
  3. [インフラストラクチャ] タブを選択します。
  4. [コンテナインスタンス] 行の下の**[インフラストラクチャ]** 列からインスタンス ID を選択します。
    **注:**失敗したジョブのインスタンス ID を確認するには、AWS Batch のdescribe-jobs AWS CLI コマンドを実行します。インスタンス ID は **containerInstanceArn ** の出力に表示されます。
  5. Amazon EC2 コンソールで、インスタンスがまだ選択されていることを確認します。次に、[ストレージ] セクションで volumeID のリンクを選択します。
  6. ブロックデバイスのポップアップウィンドウの **[ボリューム ID]**で、ボリュームを選択します。
  7. [モニタリング] タブを選択します。次に、[バーストバランス] を選択して、バーストバランスの指標を確認します。バーストバランスが使い果たされると 0 になります。

**マネージドコンピューティング環境用の起動テンプレートを作成する **

**注:**起動テンプレートを変更する場合は、新しいコンピューティング環境を作成する必要があります。

次の手順を実行します。

  1. Amazon EC2 コンソールを開き、[テンプレートを起動] を選択します。
  2. [起動テンプレートの作成] を選択します。
  3. AMI ID には、デフォルトの Amazon ECS に最適化された AMI を選択します。
  4. **[ストレージ (ボリューム)]**セクションの [ボリュームタイプ] ** 列でボリュームタイプを選択します。次に、[サイズ (GiB)] ** 列に整数値を入力します。
    **注:**ボリュームタイプにプロビジョンド IOPS SSD (io1) を選択した場合は、IOPS で許可される整数値を入力します。
  5. [起動テンプレートの作成] を選択します。
  6. 新しい起動テンプレートを使用して、新しいマネージドコンピューティング環境を作成します。

**AMI を使用して AWS Batch コンピューティング環境を作成する **

**注:**AMI を変更する場合は、AMI ID パラメータを更新できないため、新しいコンピューティング環境を作成する必要があります。

次の手順を実行します。

  1. Amazon EC2 コンソールを開きます。
  2. [インスタンスを起動] を選択します。
  3. セットアップウィザードの手順に従ってインスタンスを作成します。
    重要:****[ストレージの追加] ページで、インスタンスのボリュームタイプまたはサイズを変更します。ボリュームサイズが大きいほど、ベースラインパフォーマンスが向上し、バーストバランスの補充が遅くなります。I/O 負荷が高い場合のパフォーマンスを向上させるには、ボリュームを io1 タイプに変更します。
  4. インスタンスからコンピュートリソース AMI を作成します。
  5. AMI ID を含む AWS Batch 用のコンピューティング環境を作成します。

Docker の問題を解決する

デフォルトでは、Amazon ECS コンテナエージェントは、コンテナインスタンスが使用していない停止したタスクと Docker イメージを自動的にクリーンアップします。新しいイメージを使用して新しいジョブを実行すると、使用しない Docker イメージでコンテナストレージがいっぱいになる可能性があります。AWS Batch のデフォルト AMI は、Amazon ECS クリーンアップ設定を最適化します。

次の手順を実行します。

  1. SSH を使用して、AWS Batch コンピューティング環境のコンテナインスタンスに接続します。
  2. Amazon ECS コンテナエージェントを検査するには、inspect ecs-agent Docker コマンドを実行します。次に、出力の env セクションを確認します。
    **注:**タスクとイメージのクリーンアップを迅速に行うには、次の変数の値を減らします。
    ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION
    ECS_IMAGE_CLEANUP_INTERVAL
    ECS_IMAGE_MINIMUM_CLEANUP_AGE
    ECS_NUM_IMAGES_DELETE_PER_CYCLE
    また、調整可能なパラメーターを使用して自動タスクとイメージのクリーンアップを実行することもできます。
  3. 値を更新して新しい AMI を作成します。
    または、
    新しい環境変数を含むユーザーデータを使用して起動テンプレートを作成します。

**更新された値を使って新しい AMI を作成する **

次の手順を実行します。

  1. /etc/ecs/ecs.config ファイルでエージェント設定パラメータを設定します。
  2. コンテナエージェントを再起動します。
  3. インスタンスからコンピュートリソース AMI を作成します。
  4. AMI ID を含む AWS Batch 用のコンピューティング環境を作成します。

新しい環境変数を含むユーザーデータを使用して起動テンプレートを作成します。

次の手順を実行します。

  1. ユーザーデータを含む起動テンプレートを作成します。

    例えば、次の MIME multi-part ファイル内のユーザーデータは、コンピュートリソースのデフォルトの Docker イメージクリーンアップ設定よりも優先されます。

    MIME-Version: 1.0
    Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="
    --==MYBOUNDARY==
    Content-Type: text/x-shellscript; charset="us-ascii"
    #!/bin/bash
    echo ECS_IMAGE_CLEANUP_INTERVAL=60m >> /etc/ecs/ecs.config
    echo ECS_IMAGE_MINIMUM_CLEANUP_AGE=60m >> /etc/ecs/ecs.config
    --==MYBOUNDARY==--

    MIME multi-part ファイルの詳細については、cloud-init ウェブサイトの「MIME multi-part file」を参照してください。

  2. 新しい起動テンプレートを使用して、マネージドコンピューティング環境を作成します。

関連情報

CloudWatch メトリクスを発行する AWS のサービス

Compute resource AMIs

GitHub ウェブサイトの amazon-ecs-agent

AWS公式
AWS公式更新しました 1年前
コメントはありません

関連するコンテンツ