すべてのプロダクト
Search
ドキュメントセンター

Elastic Container Instance:コンテナの起動および終了優先度の設定

最終更新日:Dec 28, 2024

このトピックでは、エラスティックコンテナインスタンス内のコンテナの起動および終了の優先度を設定する方法について説明します。これにより、コンテナは順次起動および終了します。

機能の説明

デフォルトでは、エラスティックコンテナインスタンス内のコンテナは同時に起動および終了します。場合によっては、インスタンス内のコンテナに依存関係がある場合があります。あるコンテナは別のコンテナが起動した後に起動する必要がある場合や、あるコンテナは別のコンテナが終了した後に終了する必要がある場合があります。次に例を示します。

  • Istioサービスガバナンスのシナリオでは、アプリケーションコンテナでデータ転送が生成される前にistio-proxyコンテナの準備が整っている必要があり、アプリケーションコンテナが終了した後にのみistio-proxyコンテナが終了できます。

  • ログ収集のシナリオでは、アプリケーションコンテナでログが生成される前にログコンテナの準備が整っている必要があり、アプリケーションコンテナが終了した後にのみログコンテナが終了できます。

上記のシナリオでは、Elastic Container Instanceでは、環境変数を使用して、エラスティックコンテナインスタンス内のコンテナの起動および終了の優先度を設定できます。ビジネス要件に基づいてコンテナに環境変数を追加して、コンテナが順次起動または終了するようにすることができます。

設定の説明

次の表に、コンテナの起動および終了の優先度を設定するために使用できる環境変数を示します。

項目

環境変数の名前

説明

コンテナの起動優先度

ECI_CONTAINER_LAUNCH_PRIORITY

  • 有効な値:-1000~1000。デフォルト値:0。値が大きいほど、起動優先度が高くなります。

  • 優先度の高いコンテナは、優先度の低いコンテナが起動する前に起動することが保証されています。同じ優先度のコンテナは、順次起動することが保証されておらず、同時に起動します。

  • コンテナが別のコンテナが提供するサービスに依存している場合は、別のコンテナのreadinessプローブを設定する必要があります。たとえば、コンテナBがコンテナAが提供するサービスに依存している場合は、コンテナAにより高い起動優先度とreadinessプローブを設定して、コンテナAの準備が整った後にのみコンテナBが起動できるようにする必要があります。

コンテナの終了優先度

ECI_CONTAINER_EXIT_PRIORITY

  • 有効な値:-1000~1000。デフォルト値:0。値が大きいほど、終了優先度が高くなります。

  • 優先度の高いコンテナは、優先度の低いコンテナが終了する前に終了することが保証されています。同じ優先度のコンテナは、順次終了することが保証されておらず、同時に終了します。

重要

API操作を呼び出してエラスティックコンテナインスタンスを作成する場合は、TerminationGracePeriodSecondsパラメータを設定して、インスタンスが正常に終了するようにすることができます。コンテナが終了する順序を設定した場合、インスタンスが破棄されるまでの時間は、TerminationGracePeriodSecondsで指定された時間よりも長くなる場合があります。

設定例

コンテナの起動優先度の設定

APIモード

  1. コンテナの起動優先度を設定するエラスティックコンテナインスタンスを作成します。

    次の例は、CreateContainerGroup API操作を呼び出してエラスティックコンテナインスタンスを作成する場合に使用されるパラメータを示しています。インスタンスには2つのコンテナが含まれています。c1コンテナはc2コンテナよりも起動優先度が高く、c1コンテナにはreadinessプローブが設定されています。この場合、c2コンテナはc1コンテナの準備が整った後にのみ起動します。

    {
      "RegionId": "cn-beijing",
      "SecurityGroupId": "sg-2ze63v3jtm8e6syi****",
      "VSwitchId": "vsw-2ze94pjtfuj9vaymf****",
      "ContainerGroupName": "test-launch",
      "Container": [
        {
          "Name": "c1",
          "Image": "registry.cn-shanghai.aliyuncs.com/eci_open/nginx:alpine",
          "EnvironmentVar": [
            {
              "Key": "ECI_CONTAINER_LAUNCH_PRIORITY",
              "Value": "1000"
            }
          ],
          "ReadinessProbe.PeriodSeconds": 3,
          "ReadinessProbe.HttpGet.Path": "/",
          "ReadinessProbe.HttpGet.Port": 80
        },
        {
          "Name": "c2",
          "Image": "registry.cn-shanghai.aliyuncs.com/eci_open/nginx:alpine",
          "EnvironmentVar": [
            {
              "Key": "ECI_CONTAINER_LAUNCH_PRIORITY",
              "Value": "0"
            }
          ],
          "Arg": [
            "/bin/sh",
            "-c",
            "sleep 3600s"
          ]
        }
      ]
    }
  2. インスタンスの詳細を表示し、各コンテナの起動時刻を確認します。

    DescribeContainerGroups API操作を呼び出して、インスタンスの詳細をクエリします。レスポンスのContainersセクションで各コンテナの詳細を表示します。CurrentState.StartTimeパラメータは、c2コンテナの起動時刻がc1コンテナの起動時刻よりも遅いことを示しています。

コンソールモード

Elastic Container Instanceコンソールでエラスティックコンテナインスタンスを作成する場合は、各コンテナの詳細設定セクションで環境変数を設定して、コンテナの起動優先度を設定できます。ヘルスチェックをオンにし、アプリケーションサービスプローブタブをクリックすることで、コンテナのreadinessプローブを設定することもできます。

容器启动-控制台.png

インスタンスが作成された後、インスタンスのイベントを表示して、コンテナの起動シーケンスを確認できます。

コンテナの終了優先度の設定

APIモード

  1. コンテナの終了優先度を設定するエラスティックコンテナインスタンスを作成します。

    次の例は、CreateContainerGroup API操作を呼び出してエラスティックコンテナインスタンスを作成する場合に使用されるパラメータを示しています。TerminationGracePeriodSecondsパラメータは30秒に設定されています。インスタンスには、終了優先度が降順のc1、c2、c3コンテナが含まれています。

    {
      "RegionId": "cn-beijing",
      "ContainerGroupName": "test-exit",
      "SecurityGroupId": "sg-2ze63v3jtm8e6syi****",
      "VSwitchId": "vsw-2ze94pjtfuj9vaymf****",
      "TerminationGracePeriodSeconds": 30,
      "Container": [
        {
          "Name": "c1",
          "Image": "registry.cn-shanghai.aliyuncs.com/eci_open/nginx:alpine",
          "EnvironmentVar": [
            {
              "Key": "ECI_CONTAINER_EXIT_PRIORITY",
              "Value": "1000"
            }
          ]
        },
        {
          "Name": "c2",
          "Image": "registry.cn-shanghai.aliyuncs.com/eci_open/nginx:alpine",
          "EnvironmentVar": [
            {
              "Key": "ECI_CONTAINER_EXIT_PRIORITY",
              "Value": "0"
            }
          ],
          "Arg": [
            "/bin/sh",
            "-c",
            "sleep 3600s"
          ]
        },
        {
          "Name": "c3",
          "Image": "registry.cn-shanghai.aliyuncs.com/eci_open/nginx:alpine",
          "EnvironmentVar": [
            {
              "Key": "ECI_CONTAINER_EXIT_PRIORITY",
              "Value": "-1000"
            }
          ],
          "Arg": [
            "/bin/sh",
            "-c",
            "sleep 3600s"
          ]
        }
      ]
    }
  2. インスタンスを削除し、インスタンス内のコンテナの強制終了イベントシーケンスを観察します。

    説明

    コンテナが終了する順序を確認する場合は、イベントをタイムリーに表示してください。エラスティックコンテナインスタンスが削除された後、イベントを観察できない場合があります。

    DescribeContainerGroupEvents API操作を呼び出して、インスタンスイベントをクエリします。レスポンスのEventsセクションで各コンテナの強制終了イベント時刻を表示します。c1、c2、c3コンテナは順次終了します。

コンソールモード

Elastic Container Instanceコンソールでエラスティックコンテナインスタンスを作成する場合は、各コンテナの詳細設定セクションで環境変数を設定して、コンテナの終了優先度を設定できます。

容器退出-控制台.png