新規および既存の Cloud Run ワーカープールに対して、HTTP、TCP、gRPC の起動プローブと 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 リクエストを送信します。200 ~400 のレスポンスはどれも成功であり、他のレスポンスは失敗を意味します。起動プローブが指定時間内( failureThreshold × periodSeconds )(最長で 240 秒)に成功しなかった場合、Cloud Run はコンテナをシャットダウンします。HTTP 起動プローブが指定時間内に成功し、HTTP ライブネス プローブを構成している場合、Cloud Run は HTTP ライブネス プローブを開始します。 |
HTTP ライブネス | HTTP ヘルスチェック エンドポイントを作成する HTTP/1 を使用する |
ライブネス プローブは、起動プローブが成功した後にのみ開始されます。プローブの構成後、起動プローブが成功すると、Cloud Run はヘルスチェック エンドポイント(たとえば、/health )に HTTP GET リクエストを送信します。200 ~400 のレスポンスはどれも成功であり、他のレスポンスは失敗を意味します。ライブネス プローブが指定時間内( 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 のプローブは、 Google Cloud コンソールまたは Cloud Run REST API を使用して構成できます。
コンソール
Google Cloud コンソールで Cloud Run に移動します。
メニューから [ワーカープール] を選択します。
- 新しいワーカープールを構成する場合は、[コンテナのデプロイ] をクリックします。
- 既存のワーカープールを構成する場合は、ワーカープールを選択し、[新しいリビジョンの編集とデプロイ] をクリックします。
新しいワーカープールを構成する場合は、最初のワーカープール ページに入力してから、[コンテナ、ボリューム、ネットワーキング、セキュリティ] をクリックしてワーカープール構成ページを開きます。
[コンテナ] セクションで [ヘルスチェック] に移動し、[ヘルスチェックを追加します] をクリックして、[ヘルスチェックを追加] 構成パネルを開きます。
[ヘルスチェックの種類の選択] メニューから、追加するヘルスチェックの種類を選択します。
[プローブタイプの選択] メニューで、使用するプローブのタイプ(HTTP や gRPC など)を選択します。プローブ構成フォームが表示されます。
プローブの種類に応じて、プローブ設定を構成します。
HTTP プローブを使用している場合:
[パス] フィールドに、エンドポイントへの相対パスを指定します(例:
/
)。[HTTP ヘッダー] チェックボックスをオンにして、オプションのカスタム ヘッダーを指定します。[名前] フィールドにヘッダー名、[値] フィールドにヘッダー値を指定します。[HTTP ヘッダーを追加] をクリックして、他のヘッダーを指定します。
gRPC プローブを使用している場合は、コンテナ イメージが gRPC ヘルスチェック プロトコルを実装していることを確認します。詳細については、GRPC ヘルスチェック プロトコルをご覧ください。
HTTP と gRPC の両方のプローブの種類で、次の項目を指定します。
[初期遅延] に、コンテナが起動してから最初のプローブを実行するまでの待機時間を秒単位で指定します。0 秒~240 秒の値を指定します。デフォルト値は 0 秒です。
[期間] に、プローブを実行する期間(秒単位)を指定します。たとえば、2 秒ごとにプローブを実行する場合は
2
を指定します。1 秒~240 秒の値を指定します。デフォルト値は 10 秒です。[失敗しきい値] に、コンテナをシャットダウンする前にプローブを再試行する回数を指定します。デフォルト値は 3 です。
[タイムアウト] に、プローブがタイムアウトするまでの待機時間を秒単位で指定します。1~240 と
periodSeconds
のうち小さい方の値を指定します。デフォルトは 1 です。
[追加] をクリックして、新しいしきい値を追加します。
[作成] または [デプロイ] をクリックします。
REST API
重要: HTTP プローブ用に Cloud Run ワーカープールを構成する場合は、プローブに応答するために、ワーカープール コードに HTTP ヘルスチェック エンドポイントを追加する必要があります。gRPC プローブを構成する場合は、Cloud Run ワーカープールに gRPC ヘルスチェック プロトコルを実装する必要があります。
HTTP ヘルスチェック エンドポイントを作成する
HTTP 起動プローブまたはライブネス プローブ用に Cloud Run ワーカープールを構成する場合、プローブに応答するため、ワーカープール コードにエンドポイントを追加する必要があります。エンドポイントには任意の名前(/startup
、/ready
など)を使用できますが、名前はプローブ構成で path
に指定した値と一致する必要があります。たとえば、HTTP 起動プローブに /ready
を指定する場合は、次のようにプローブ構成で path
を指定します。
startupProbe: httpGet: path: /ready
HTTP ヘルスチェック エンドポイントは外部からアクセスでき、外部に公開される他の HTTP エンドポイントと同じ原則に従います。