ワーカープールのコンテナのヘルスチェックを構成する

HTTP、TCP、gRPC の起動プローブと、新規および既存の Cloud Run ワーカープールに対する HTTP と gRPC のライブネス プローブを構成できます。構成は、プローブの種類によって異なります。

ユースケース

構成できるヘルスチェック プローブには次の 2 種類があります。

  • ライブネス プローブは、コンテナを再起動するかどうかを判断します。

    • この場合にコンテナを再起動すると、バグの発生時におけるワーカープールの可用性を高めることができます。
    • ライブネス プローブは、他の方法では復元できない個々のインスタンスを再起動することを目的としています。主に、回復不能なインスタンス障害に使用します。たとえば、ワーカープールは実行されていものの処理が進まないデッドロックを捕捉する場合などです。カスタムの組織のポリシーを使用して、すべてのコンテナで Liveness Probe を必須にできます。
  • 起動プローブは、コンテナが起動したかどうかを判断します。

    • 起動プローブを構成すると、コンテナが起動したと起動プローブが判断するまで、ライブネス チェックは無効になります。これにより、ワーカープール起動時の干渉が防止されます。
    • 起動プローブは、開始が遅いコンテナでライブネス チェックを行う場合に特に役立ちます。これは、コンテナが起動して動作する前にシャットダウンされることを防ぐためです。

ワーカープールで起動またはライブネス プローブの失敗が繰り返し発生すると、Cloud Run はインスタンスの再起動を制限して、制御不能なクラッシュ ループを防ぎます。

CPU の割り当て

  • プローブの実行時に CPU が常に割り振られます。
  • すべてのプローブは CPU 使用率とメモリ使用量に対して課金されます。

プローブの要件と動作

プローブの種類 要件 動作
TCP 起動 なし Cloud Run は指定されたポートで TCP ソケットを開くための TCP 接続を確立します。Cloud Run が接続を確立できない場合は、失敗を示します。

起動プローブが指定された時間内に成功しなかった場合、Cloud Run はコンテナをシャットダウンします。時間は最大 240 秒で、failureThreshold × periodSeconds として計算されます。これは、ワーカープールの起動プローブを構成するときに設定します。
HTTP 起動 HTTP ヘルスチェック エンドポイントを作成する
HTTP/1 を使用する
プローブの構成後、Cloud Run はワーカープールのヘルスチェック エンドポイント(/ready など)に HTTP GET リクエストを送信します。200400 のレスポンスはどれも成功であり、他のレスポンスは失敗を意味します。

起動プローブが指定時間内(failureThreshold × periodSeconds)(最長で 240 秒)に成功しなかった場合、Cloud Run はコンテナをシャットダウンします。

HTTP 起動プローブが指定時間内に成功し、HTTP ライブネス プローブを構成している場合、Cloud Run は HTTP ライブネス プローブを開始します。
HTTP ライブネス HTTP ヘルスチェック エンドポイントを作成する
HTTP/1 を使用する
ライブネス プローブは、起動プローブが成功した後にのみ開始されます。プローブの構成後、起動プローブが成功すると、Cloud Run はヘルスチェック エンドポイント(たとえば、/health)に HTTP GET リクエストを送信します。200400 のレスポンスはどれも成功であり、他のレスポンスは失敗を意味します。

ライブネス プローブが指定時間内(failureThreshold × periodSeconds)に成功しなかった場合、Cloud Run は SIGKILL シグナルを使用してコンテナをシャットダウンします。コンテナによって処理されていた残りのリクエストは、HTTP ステータス コード 503 で終了します。Cloud Run がコンテナをシャットダウンすると、Cloud Run の自動スケーリングによって新しいコンテナ インスタンスが起動されます。
gRPC 起動 Cloud Run ワーカープールに gRPC ヘルスチェック プロトコルを実装する 起動プローブが指定時間内(failureThreshold × periodSeconds)(最長で 240 秒)に成功しなかった場合、Cloud Run はコンテナをシャットダウンします。
gRPC ライブネス Cloud Run ワーカープールに gRPC ヘルスチェック プロトコルを実装する gRPC 起動プローブを構成すると、ライブネス プローブは起動プローブが成功した後にのみ開始されます。

ライブネス プローブが構成され、起動プローブが成功すると、Cloud Run はワーカープールにヘルスチェック リクエストを送信します。

ライブネス プローブが指定時間内(failureThreshold * periodSeconds)に成功しなかった場合、Cloud Run は SIGKILL シグナルを使用してコンテナをシャットダウンします。Cloud Run がコンテナをシャットダウンすると、Cloud Run の自動スケーリングによって新しいコンテナ インスタンスが起動されます。

プローブを構成する

構成を変更すると、新しいリビジョンが作成されます。明示的に更新しない限り、以降のリビジョンでも、この構成が自動的に設定されます。

HTTP、TCP、gRPC のプローブは、Cloud Run REST API を使用して構成できます。

REST API

重要: HTTP プローブ用に Cloud Run ワーカープールを構成する場合は、プローブに応答するために、ワーカープール コードに HTTP ヘルスチェック エンドポイントを追加する必要があります。gRPC プローブを構成する場合は、Cloud Run ワーカープールに gRPC ヘルスチェック プロトコルを実装する必要があります。

HTTP 起動

この構成には REST API を使用します。

HTTP ライブネス

この構成には REST API を使用します。

gRPC 起動

この構成には REST API を使用します。

gRPC ライブネス

この構成には REST API を使用します。

HTTP ヘルスチェック エンドポイントを作成する

HTTP 起動プローブまたはライブネス プローブ用に Cloud Run ワーカープールを構成する場合、プローブに応答するため、ワーカープール コードにエンドポイントを追加する必要があります。エンドポイントには任意の名前(/startup/ready など)を使用できますが、名前はプローブ構成で path に指定した値と一致する必要があります。たとえば、HTTP 起動プローブに /ready を指定する場合は、次のようにプローブ構成で path を指定します。

startupProbe:
  httpGet:
    path: /ready

HTTP ヘルスチェック エンドポイントは外部からアクセスでき、外部に公開される他の HTTP エンドポイントと同じ原則に従います。