Liveness プローブと Readiness プローブは、コンテナの状態をチェックするために使用されるメカニズムです。Liveness プローブは、コンテナが期待どおりに実行されているかどうかをチェックするために使用されます。Readiness プローブは、コンテナがリクエストを処理する準備ができているかどうかをチェックするために使用されます。このトピックでは、コンテナのヘルスチェックを実行するために Liveness プローブと Readiness プローブを設定する方法について説明します。このようにして、Elastic Container Instance はコンテナの実行状態をより適切に監視および管理し、サービスの高可用性と安定性を確保できます。
機能の説明
Elastic Container Instance では、Liveness プローブと Readiness プローブを使用して、コンテナの状態と実行状態をチェックできます。
プローブ | 説明 | シナリオ |
Liveness プローブ | Liveness プローブは、コンテナが期待どおりに動作しているかどうかをチェックするために使用されます。
|
|
Readiness プローブ | Readiness プローブは、コンテナがリクエストを処理する準備ができているかどうかをチェックするために使用されます。
| アプリケーションは、起動時に大量のデータまたは構成ファイルを読み込むときに、一時的に外部リクエストを処理できない場合があります。この場合、アプリケーションを終了したり、アプリケーションにリクエストを送信したくない場合は、Readiness プローブを使用して、このような状況を検出し、軽減するためのアクションを実行できます。 |
構成の説明(API モード)
CreateContainerGroup オペレーションを呼び出して Elastic Container Instance を作成する場合、LivenessProbe 関連および ReadinessProbe 関連のパラメーターを使用して、Liveness プローブと Readiness プローブをそれぞれ設定できます。次の表にパラメーターを示します。詳細については、CreateContainerGroup を参照してください。
LivenessProbe 関連パラメーター
LivenessProbe 関連パラメーターを設定する場合、HttpGet、Exec、TcpSocket チェックメソッドのいずれか 1 つのみを選択できます。
パラメーター | タイプ | サンプル値 | 説明 |
Container.N.LivenessProbe.HttpGet.Path | string | /healthyz | HTTP リクエストを使用してヘルスチェックを実行する場合に HTTP GET リクエストが送信されるパス。 |
Container.N.LivenessProbe.HttpGet.Port | integer | 8888 | HTTP リクエストを使用してヘルスチェックを実行する場合に HTTP GET リクエストが送信されるポート。 |
Container.N.LivenessProbe.HttpGet.Scheme | string | HTTP | HTTP リクエストを使用してヘルスチェックを実行する場合の HTTP GET リクエストのプロトコルタイプ。有効な値:
|
Container.N.LivenessProbe.Exec.Command.N | array | cat /tmp/healthy | CLI を使用してヘルスチェックを実行する場合にコンテナで実行されるコマンド N。 |
Container.N.LivenessProbe.TcpSocket.Port | integer | 8000 | TCP ソケットを使用してヘルスチェックを実行する場合に TCP ソケットリクエストが送信されるポート。 |
Container.N.LivenessProbe.InitialDelaySeconds | integer | 5 | コンテナの起動からチェックの開始までの秒数。 |
Container.N.LivenessProbe.PeriodSeconds | integer | 1 | コンテナがチェックされる間隔。デフォルト値:10。最小値:1。単位:秒。 |
Container.N.LivenessProbe.SuccessThreshold | integer | 1 | チェックが成功したと見なされるまでに発生する必要がある連続成功の最小数。デフォルト値:1。値を 1 に設定します。 |
Container.N.LivenessProbe.FailureThreshold | integer | 3 | チェックが失敗したと見なされるまでに発生する必要がある連続失敗の最小数。デフォルト値:3。 |
Container.N.LivenessProbe.TimeoutSeconds | integer | 1 | ヘルスチェックのタイムアウト期間。デフォルト値:1。最小値:1。単位:秒。 |
ReadinessProbe 関連パラメーター
ReadinessProbe 関連パラメーターを設定する場合、HttpGet、Exec、TcpSocket チェックメソッドのいずれか 1 つのみを選択できます。
パラメーター | タイプ | サンプル値 | 説明 |
Container.N.ReadinessProbe.HttpGet.Path | string | /healthyz | HTTP リクエストを使用してヘルスチェックを実行する場合に HTTP GET リクエストが送信されるパス。 |
Container.N.ReadinessProbe.HttpGet.Port | integer | 8888 | HTTP リクエストを使用してヘルスチェックを実行する場合に HTTP GET リクエストが送信されるポート。 |
Container.N.ReadinessProbe.HttpGet.Scheme | string | HTTP | HTTP リクエストを使用してヘルスチェックを実行する場合の HTTP GET リクエストのプロトコルタイプ。有効な値:
|
Container.N.ReadinessProbe.Exec.Command.N | array | cat /tmp/healthy | CLI を使用してヘルスチェックを実行する場合にコンテナで実行されるコマンド N。 |
Container.N.ReadinessProbe.TcpSocket.Port | integer | 8000 | TCP ソケットを使用してヘルスチェックを実行する場合に TCP ソケットリクエストが送信されるポート。 |
Container.N.ReadinessProbe.InitialDelaySeconds | integer | 5 | コンテナの起動からチェックの開始までの秒数。 |
Container.N.ReadinessProbe.PeriodSeconds | integer | 1 | コンテナがチェックされる間隔。デフォルト値:10。最小値:1。単位:秒。 |
Container.N.ReadinessProbe.SuccessThreshold | integer | 1 | チェックが成功したと見なされるまでに発生する必要がある連続成功の最小数。デフォルト値:1。値を 1 に設定します。 |
Container.N.ReadinessProbe.FailureThreshold | integer | 3 | チェックが失敗したと見なされるまでに発生する必要がある連続失敗の最小数。デフォルト値:3。 |
Container.N.ReadinessProbe.TimeoutSeconds | integer | 1 | ヘルスチェックのタイムアウト期間。デフォルト値:1。最小値:1。単位:秒。 |
構成の説明(コンソールモード)
Elastic Container Instance コンソールの購入ページで Elastic Container Instance を作成する場合、コンテナ構成セクションでコンテナを選択し、コンテナの詳細設定を展開し、ヘルスチェックをオンにすることができます。次の図は、構成の詳細を示しています。
Elastic Container Instance コンソールでヘルスチェックを設定する場合、CLI と HTTP リクエストメソッドのみがサポートされています。TCP ソケットメソッドはサポートされていません。

パラメーター | 説明 |
タイムアウト期間 |
|
メソッド | ビジネス要件に基づいてチェックメソッドを選択します。有効な値:
|
スクリプト | メソッドをスクリプトに設定した場合、コンテナで実行されるコマンドラインスクリプトを設定する必要があります。 |
HTTP リクエスト | メソッドをHTTP リクエストに設定した場合、HTTP GET リクエストのパス、ポート、およびプロトコルを設定する必要があります。 |
構成例
この例では、Liveness プローブと Readiness プローブが設定された Elastic Container Instance を作成します。次に、サービス例外をシミュレートして、設定されたプローブが有効になるかどうかを確認します。
CreateContainerGroup オペレーションを呼び出して Elastic Container Instance を作成します。
次のサンプルコードは、TCP ソケットを使用してヘルスチェックを実行する方法の例を示しています:
ContainerGroupName=test-probe # NGINX イメージを使用します。Elastic IP アドレス(EIP)を作成し、EIP を Elastic Container Instance に関連付けます。 Container.1.Name=container-1 Container.1.Image=nginx AutoCreateEip=true # Liveness プローブを設定します。コンテナが 5 秒間実行された後、kubelet は 3 秒ごとにポート 80 で Liveness プローブを実行します。各チェックのタイムアウト期間は 10 秒に設定されています。チェックが成功したと見なされるまでに発生する必要がある連続成功の最小数は 1 に設定され、チェックが失敗したと見なされるまでに発生する必要がある連続失敗の最小数は 3 に設定されます。 Container.1.LivenessProbe.TcpSocket.Port=80 Container.1.ReadinessProbe.InitialDelaySeconds=5 Container.1.LivenessProbe.PeriodSeconds=3 Container.1.LivenessProbe.SuccessThreshold=1 Container.1.LivenessProbe.FailureThreshold=3 Container.N.LivenessProbe.TimeoutSeconds=10 # Readiness プローブを設定します。コンテナが 5 秒間実行された後、kubelet は 3 秒ごとにポート 80 で Readiness プローブを実行します。各チェックのタイムアウト期間は 10 秒に設定されています。チェックが成功したと見なされるまでに発生する必要がある連続成功の最小数は 1 に設定され、チェックが失敗したと見なされるまでに発生する必要がある連続失敗の最小数は 3 に設定されます。 Container.1.ReadinessProbe.TcpSocket.Port=80 Container.1.ReadinessProbe.InitialDelaySeconds=5 Container.1.ReadinessProbe.PeriodSeconds=3 Container.1.ReadinessProbe.SuccessThreshold=1 Container.1.ReadinessProbe.FailureThreshold=3 Container.1.ReadinessProbe.TimeoutSeconds=10Elastic Container Instance が作成された後、Elastic Container Instance コンソールで関連イベントを表示します。
Elastic Container Instance が作成された後、インスタンスリストページの [コンテナグループ ID/名前] 列にある Elastic Container Instance の ID をクリックして、[インスタンスの詳細] ページに移動します。イベントタブをクリックして、Elastic Container Instance のイベントを表示します。インスタンス上のコンテナが期待どおりに起動していることがわかります。

コンテナに接続します。詳細については、Elastic Container Instance への接続を参照してください。
構成ファイルの NGINX リッスンポートを変更して、サービス例外をシミュレートします。
NGINX リッスンポートを変更します。
説明この例では、Vim がインストールされていない NGINX イメージが使用されています。次の vi コマンドを実行して NGINX リッスンポートを変更する前に、
apt-get updateおよびapt-get install vimコマンドを実行して Vim をインストールします。vi /etc/nginx/conf.d/default.confたとえば、次の図に示すように、NGINX リッスンポートをポート 80 からポート 8080 に変更します。

NGINX を再起動します。
nginx -s reload
プローブの有効な状態を表示します。
NGINX を再起動してから数秒後に、コンテナが自動的に再起動します。Elastic Container Instance のイベントを表示します。Liveness プローブと Readiness プローブのそれぞれでチェックエラーが発生した後、コンテナが再起動されたことがわかります。
