このトピックでは、エラスティックコンテナインスタンス内のコンテナの起動および終了の優先度を設定する方法について説明します。これにより、コンテナは順次起動および終了します。
機能の説明
デフォルトでは、エラスティックコンテナインスタンス内のコンテナは同時に起動および終了します。場合によっては、インスタンス内のコンテナに依存関係がある場合があります。あるコンテナは別のコンテナが起動した後に起動する必要がある場合や、あるコンテナは別のコンテナが終了した後に終了する必要がある場合があります。次に例を示します。
Istioサービスガバナンスのシナリオでは、アプリケーションコンテナでデータ転送が生成される前にistio-proxyコンテナの準備が整っている必要があり、アプリケーションコンテナが終了した後にのみistio-proxyコンテナが終了できます。
ログ収集のシナリオでは、アプリケーションコンテナでログが生成される前にログコンテナの準備が整っている必要があり、アプリケーションコンテナが終了した後にのみログコンテナが終了できます。
上記のシナリオでは、Elastic Container Instanceでは、環境変数を使用して、エラスティックコンテナインスタンス内のコンテナの起動および終了の優先度を設定できます。ビジネス要件に基づいてコンテナに環境変数を追加して、コンテナが順次起動または終了するようにすることができます。
設定の説明
次の表に、コンテナの起動および終了の優先度を設定するために使用できる環境変数を示します。
項目 | 環境変数の名前 | 説明 |
コンテナの起動優先度 | ECI_CONTAINER_LAUNCH_PRIORITY |
|
コンテナの終了優先度 | ECI_CONTAINER_EXIT_PRIORITY |
|
API操作を呼び出してエラスティックコンテナインスタンスを作成する場合は、TerminationGracePeriodSecondsパラメータを設定して、インスタンスが正常に終了するようにすることができます。コンテナが終了する順序を設定した場合、インスタンスが破棄されるまでの時間は、TerminationGracePeriodSecondsで指定された時間よりも長くなる場合があります。
設定例
コンテナの起動優先度の設定
APIモード
コンテナの起動優先度を設定するエラスティックコンテナインスタンスを作成します。
次の例は、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" ] } ] }
インスタンスの詳細を表示し、各コンテナの起動時刻を確認します。
DescribeContainerGroups API操作を呼び出して、インスタンスの詳細をクエリします。レスポンスの
Containers
セクションで各コンテナの詳細を表示します。CurrentState.StartTime
パラメータは、c2コンテナの起動時刻がc1コンテナの起動時刻よりも遅いことを示しています。
コンソールモード
Elastic Container Instanceコンソールでエラスティックコンテナインスタンスを作成する場合は、各コンテナの詳細設定セクションで環境変数を設定して、コンテナの起動優先度を設定できます。ヘルスチェックをオンにし、アプリケーションサービスプローブタブをクリックすることで、コンテナのreadinessプローブを設定することもできます。
インスタンスが作成された後、インスタンスのイベントを表示して、コンテナの起動シーケンスを確認できます。
コンテナの終了優先度の設定
APIモード
コンテナの終了優先度を設定するエラスティックコンテナインスタンスを作成します。
次の例は、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" ] } ] }
インスタンスを削除し、インスタンス内のコンテナの強制終了イベントシーケンスを観察します。
説明コンテナが終了する順序を確認する場合は、イベントをタイムリーに表示してください。エラスティックコンテナインスタンスが削除された後、イベントを観察できない場合があります。
DescribeContainerGroupEvents API操作を呼び出して、インスタンスイベントをクエリします。レスポンスの
Events
セクションで各コンテナの強制終了イベント時刻を表示します。c1、c2、c3コンテナは順次終了します。
コンソールモード
Elastic Container Instanceコンソールでエラスティックコンテナインスタンスを作成する場合は、各コンテナの詳細設定セクションで環境変数を設定して、コンテナの終了優先度を設定できます。