Cloud Run ヘルスチェックは、コンテナ インスタンスが正しく実行され、トラフィックを処理できることを確認します。Cloud Run のヘルスチェックを使用すると、コンテナがリクエストを受信する準備が整うタイミングと、コンテナが異常と見なされて再起動が必要なタイミングをカスタマイズできます。
ユースケース
次のタイプのヘルスチェック プローブを構成できます。
- 起動プローブは、コンテナが起動し、トラフィックを受け入れる準備ができているかどうかを判断します。
- ライブネス プローブは、コンテナを再起動するかどうかを判断します。
- この場合、コンテナを再起動すると、バグが発生したときにインスタンスの可用性を高めることができます。
- ライブネス プローブは、他の方法では復元できない個々のインスタンスを再起動することを目的としています。主に、回復不能なインスタンス障害に使用します。たとえば、インスタンスは実行されているが、処理が進まないデッドロックを捕捉する場合などです。カスタムの組織のポリシーを使用して、すべてのコンテナでライブネス プローブを必須にできます。
- インスタンスでプローブの失敗が繰り返し発生すると、制御不能なクラッシュ ループを防ぐため、Cloud Run はインスタンスの再起動を制限します。
準備状況プローブ(プレビュー)
準備状況プローブは、Cloud Run インスタンスのインスタンスがトラフィックを処理するタイミングを決定します。準備状況チェックは、コンテナの起動プローブが正常に完了した後に開始されます。インスタンスの準備状況プローブが構成済みの失敗しきい値を超えて失敗すると、Cloud Run はそのインスタンスへの新しいトラフィックの送信を停止します。Cloud Run は、インスタンスを終了せず、準備状況プローブが再び成功すると、インスタンスへのトラフィックの送信を再開します。
コンテナでは、startupProbe、livenessProbe、readinessProbe を一貫して実装する必要があります。起動チェックが完了すると、Cloud Run はコンテナがトラフィックを処理する準備が整ったと見なします。
起動プローブで準備状況を考慮できるように、ロジックをカプセル化することをおすすめします。Cloud Run は、最初の準備状況プローブが完了する前に新しいインスタンスにトラフィックを転送できるため、起動プローブに合格すると、トラフィックをすぐに安全に処理できることを確認してください。起動プローブが成功すると、コンテナはトラフィックを受け入れる準備ができたと見なされます。
起動プローブを構成する
HTTP、TCP、gRPC のプローブは、Google Cloud CLI または YAML を使用して構成できます。
gcloud
TCP 起動
次のコマンドを実行します。
gcloud beta run instances create INSTANCE \
--image=IMAGE_URL \
--startup-probe tcpSocket.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
次のように置き換えます。
- INSTANCE: Cloud Run インスタンスの名前。
- IMAGE_URL: コンテナ イメージへの参照(
us-docker.pkg.dev/cloudrun/container/hello:latestなど)。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL の形式はLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAGです。 - CONTAINER_PORT(省略可): インスタンスに使用されるコンテナポート。
- DELAY: コンテナが起動してから最初のプローブを実行するまでの待機時間(秒単位)。0 秒~240 秒の値を指定します。デフォルト値は 0 秒です。
- TIMEOUT(省略可): プローブがタイムアウトするまでの待機時間(秒)。この値は、
periodSecondsに指定された値を超えることはできません。1~240 の値を指定します。デフォルトは 1 です。 - THRESHOLD: コンテナをシャットダウンする前にプローブを再試行する回数。デフォルト値は 3 です。
- PERIOD: プローブを実行する期間(秒単位)。
たとえば、2 秒ごとにプローブを実行する場合は
2です。1 秒~240 秒の値を指定します。デフォルト値は 10 秒です。
HTTP 起動
プローブに応答するために、インスタンス コードに HTTP/1 エンドポイント(HTTP/2 ではなく Cloud Run のデフォルト)を追加します。エンドポイント名(/startup、/health、/are_you_ready など)は、プローブ構成の path と一致する必要があります。HTTP ヘルスチェック エンドポイントは外部からアクセスでき、外部に公開される他の HTTP インスタンス エンドポイントと同じ原則に従います。
次のコマンドを実行します。
gcloud beta run instances create INSTANCE \
--image=IMAGE_URL \
--startup-probe httpGet.path=PATH,httpGet.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
次のように置き換えます。
- INSTANCE: Cloud Run インスタンスの名前。
- IMAGE_URL: コンテナ イメージへの参照(
us-docker.pkg.dev/cloudrun/container/hello:latestなど)。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL の形式はLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAGです。 - PATH: HTTP エンドポイントの相対パス(例:
/health)。 - CONTAINER_PORT(省略可): インスタンスに使用するコンテナポートに設定します。
- DELAY(省略可): コンテナが起動してから最初のプローブを実行するまでの待機時間(秒単位)。0 秒~240 秒の値を指定します。デフォルト値は 0 秒です。
- THRESHOLD(省略可): コンテナをシャットダウンする前にプローブを再試行する回数。デフォルト値は 3 です。
- TIMEOUT(省略可): プローブがタイムアウトするまでの待機時間(秒)。この値は、periodSeconds に指定された値を超えることはできません。1~240 の値を指定します。デフォルトは 1 です。
- PERIOD(省略可): プローブを実行する期間(秒単位)。たとえば、2 秒ごとにプローブを実行する場合は
2です。1 秒~240 秒の値を指定します。デフォルト値は 10 秒です。
gRPC 起動
コンテナ イメージが gRPC ヘルスチェック プロトコルを実装していることを確認します。
次のコマンドを実行します。
gcloud beta run instances create INSTANCE \
--image=IMAGE_URL \
--startup-probe grpc.port=CONTAINER_PORT,grpc.instance=GRPC_INSTANCE,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
次のように置き換えます。
- INSTANCE: Cloud Run インスタンスの名前。
- IMAGE_URL: コンテナ イメージへの参照(
us-docker.pkg.dev/cloudrun/container/hello:latestなど)。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL の形式はLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAGです。 - GRPC_INSTANCE(省略可): 設定されている場合、
grpc.health.v1.Health.CheckRPC が呼び出されると、grpc.health.v1.HealthCheckRequestの instance フィールドで使用されます。 - CONTAINER_PORT(省略可): インスタンスに使用されるコンテナポート。
- DELAY(省略可): コンテナが起動してから最初のプローブを実行するまでの待機時間(秒単位)。0 秒~240 秒の値を指定します。デフォルト値は 0 秒です。
- THRESHOLD(省略可): コンテナをシャットダウンする前にプローブを再試行する回数。デフォルト値は 3 です。
- TIMEOUT(省略可): プローブがタイムアウトするまでの待機時間(秒)。この値は、periodSeconds に指定された値を超えることはできません。1~240 の値を指定します。デフォルトは 1 です。
- PERIOD(省略可): プローブを実行する期間(秒単位)。たとえば、2 秒ごとにプローブを実行する場合は
2です。1 秒~240 秒の値を指定します。デフォルト値は 10 秒です。
YAML
TCP 起動
新しいインスタンスを作成する場合は、この手順をスキップします。既存のインスタンスを更新する場合は、その YAML 構成をダウンロードします。
gcloud beta run instances describe INSTANCE --format export > instance.yaml
次のように
startupProbe属性を構成します。apiVersion: serving.knative.dev/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA spec: containers: - image: IMAGE_URL startupProbe: tcpSocket: port: CONTAINER_PORT initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
次のように置き換えます。
- INSTANCE: Cloud Run インスタンスの名前。
- IMAGE_URL: コンテナ イメージへの参照(
us-docker.pkg.dev/cloudrun/container/hello:latestなど)。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL の形式はLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAGです。 - CONTAINER_PORT(省略可): インスタンスに使用されるコンテナポート。
- DELAY: コンテナが起動してから最初のプローブを実行するまでの待機時間(秒単位)。0 秒~240 秒の値を指定します。デフォルト値は 0 秒です。
- TIMEOUT(省略可): プローブがタイムアウトするまでの待機時間(秒)。この値は、
periodSecondsに指定された値を超えることはできません。1~240 の値を指定します。デフォルトは 1 です。 - THRESHOLD: コンテナをシャットダウンする前にプローブを再試行する回数。デフォルト値は 3 です。
- PERIOD: プローブを実行する期間(秒単位)。
たとえば、2 秒ごとにプローブを実行する場合は
2です。1 秒~240 秒の値を指定します。デフォルト値は 10 秒です。
-
次のコマンドを使用して、インスタンスを作成または更新します。
gcloud beta run instances replace instance.yaml
HTTP 起動
プローブに応答するために、インスタンス コードに HTTP/1 エンドポイント(HTTP/2 ではなく Cloud Run のデフォルト)を追加します。エンドポイント名(/startup、/health、/are_you_ready など)は、プローブ構成の path と一致する必要があります。HTTP ヘルスチェック エンドポイントは外部からアクセスでき、外部に公開される他の HTTP インスタンス エンドポイントと同じ原則に従います。
新しいインスタンスを作成する場合は、この手順をスキップします。既存のインスタンスを更新する場合は、その YAML 構成をダウンロードします。
gcloud beta run instances describe INSTANCE --format export > instance.yaml
次のように
startupProbe属性を構成します。apiVersion: serving.knative.dev/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA spec: containers: - image: IMAGE_URL startupProbe: httpGet: path: PATH port: CONTAINER_PORT httpHeaders: - name: HEADER_NAME value: HEADER_VALUE initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
次のように置き換えます。
- INSTANCE: Cloud Run インスタンスの名前。
- IMAGE_URL: コンテナ イメージへの参照(
us-docker.pkg.dev/cloudrun/container/hello:latestなど)。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL の形式はLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAGです。 - PATH: HTTP エンドポイントの相対パス(例:
/health)。 - CONTAINER_PORT(省略可): インスタンスに使用するコンテナポートに設定します。
- DELAY(省略可): コンテナが起動してから最初のプローブを実行するまでの待機時間(秒単位)。0 秒~240 秒の値を指定します。デフォルト値は 0 秒です。
- THRESHOLD(省略可): コンテナをシャットダウンする前にプローブを再試行する回数。デフォルト値は 3 です。
- 省略可:
httpHeadersを使用すると、次のように HEADER_NAME フィールドと HEADER_VALUE フィールドを使用して複数または繰り返しのカスタム ヘッダーを指定できます。 - TIMEOUT(省略可): プローブがタイムアウトするまでの待機時間(秒)。この値は、periodSeconds に指定された値を超えることはできません。1~240 の値を指定します。デフォルトは 1 です。
- PERIOD(省略可): プローブを実行する期間(秒単位)。たとえば、2 秒ごとにプローブを実行する場合は
2です。1 秒~240 秒の値を指定します。デフォルト値は 10 秒です。
新しいインスタンスを作成する場合は、この手順をスキップします。既存のインスタンスを更新する場合は、その YAML 構成をダウンロードします。
gcloud beta run instances describe INSTANCE --format export > instance.yaml
gRPC 起動
コンテナ イメージが gRPC ヘルスチェック プロトコルを実装していることを確認します。
新しいインスタンスを作成する場合は、この手順をスキップします。既存のインスタンスを更新する場合は、その YAML 構成をダウンロードします。
gcloud beta run instances describe INSTANCE --format export > instance.yaml
次のように
startupProbe属性を構成します。apiVersion: serving.knative.dev/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA spec: containers: - image: IMAGE_URL startupProbe: grpc: instance: GRPC_INSTANCE port: CONTAINER_PORT initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
次のように置き換えます。
- INSTANCE: Cloud Run インスタンスの名前。
- IMAGE_URL: コンテナ イメージへの参照(
us-docker.pkg.dev/cloudrun/container/hello:latestなど)。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL の形式はLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAGです。 - GRPC_INSTANCE(省略可): 設定されている場合、
grpc.health.v1.Health.CheckRPC が呼び出されると、grpc.health.v1.HealthCheckRequestの instance フィールドで使用されます。 - CONTAINER_PORT(省略可): インスタンスに使用されるコンテナポート。
- DELAY(省略可): コンテナが起動してから最初のプローブを実行するまでの待機時間(秒単位)。0 秒~240 秒の値を指定します。デフォルト値は 0 秒です。
- THRESHOLD(省略可): コンテナをシャットダウンする前にプローブを再試行する回数。デフォルト値は 3 です。
- TIMEOUT(省略可): プローブがタイムアウトするまでの待機時間(秒)。この値は、periodSeconds に指定された値を超えることはできません。1~240 の値を指定します。デフォルトは 1 です。
- PERIOD(省略可): プローブを実行する期間(秒単位)。たとえば、2 秒ごとにプローブを実行する場合は
2です。1 秒~240 秒の値を指定します。デフォルト値は 10 秒です。
新しいインスタンスを作成する場合は、この手順をスキップします。既存のインスタンスを更新する場合は、その YAML 構成をダウンロードします。
gcloud beta run instances describe INSTANCE --format export > instance.yaml
デフォルトの TCP 起動プローブ
新しい Cloud Run インスタンスの TCP 起動プローブが明示的に構成されていない場合、Cloud Run は次のデフォルト値を使用して TCP 起動プローブを自動的に構成します。
startupProbe:
timeoutSeconds: 240
periodSeconds: 240
failureThreshold: 1
これらのデフォルト値は、このページのプローブの構成の手順に従って変更できます。
Startup Probe の要件と動作
| プローブの種類 | 要件 | 動作 |
|---|---|---|
| TCP 起動 | なし | デフォルトでは、Cloud Run は指定されたポートで TCP ソケットを開くための TCP 接続を確立します。Cloud Run が接続を確立できない場合は、失敗を示します。 起動プローブが指定時間( failureThreshold × periodSeconds)(最長で 240 秒)以内に成功しなかった場合、コンテナはシャットダウンされます。TCP のデフォルトもご覧ください。 |
| HTTP 起動 | HTTP ヘルスチェック エンドポイントを作成する HTTP/1 を使用する |
プローブの構成後、Cloud Run はヘルスチェック エンドポイント(/health など)に HTTP GET リクエストを送信します。2XX または 3XX のレスポンスは成功であり、それ以外のレスポンスは失敗を示します。指定された時間( failureThreshold × periodSeconds、240 秒を超えない)内に起動プローブが成功しない場合、コンテナはシャットダウンされます。 |
| gRPC 起動 | Cloud Run インスタンスに gRPC ヘルスチェック プロトコルを実装する | 起動プローブが指定時間(failureThreshold × periodSeconds)(最長で 240 秒)以内に成功しなかった場合、コンテナはシャットダウンされます。 |
livenessProbe を構成する
HTTP プローブと gRPC プローブは、Google Cloud SDK または YAML を使用して構成できます。
gcloud
HTTP ライブネス
プローブに応答するために、インスタンス コードに HTTP/1 エンドポイント(HTTP/2 ではなく Cloud Run のデフォルト)を追加します。エンドポイント名(/startup、/health、/are_you_ready など)は、プローブ構成の path と一致する必要があります。HTTP ヘルスチェック エンドポイントは外部からアクセスでき、外部に公開される他の HTTP インスタンス エンドポイントと同じ原則に従います。
次のコマンドを実行します。
gcloud beta run instances deploy INSTANCE \
--image=IMAGE_URL \
--liveness-probe httpGet.path=PATH,httpGet.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
次のように置き換えます。
- INSTANCE: Cloud Run インスタンスの名前。
- IMAGE_URL: コンテナ イメージへの参照(
us-docker.pkg.dev/cloudrun/container/hello:latestなど)。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL の形式はLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAGです。 - PATH: HTTP エンドポイントの相対パス(例:
/health)。 - CONTAINER_PORT(省略可): インスタンスに使用するコンテナポートに設定します。
- DELAY(省略可): コンテナが起動してから最初のプローブを実行するまでの待機時間(秒単位)。0 秒~240 秒の値を指定します。デフォルト値は 0 秒です。
- THRESHOLD(省略可): コンテナをシャットダウンする前にプローブを再試行する回数。デフォルト値は 3 です。
- 省略可。TIMEOUT: プローブがタイムアウトするまでの待機時間(秒)。この値は、
periodSecondsに指定された値を超えることはできません。1~3,600 の値を指定します。デフォルトは 1 です。 - 省略可。PERIOD: プローブを実行する期間(秒単位)。たとえば、2 秒ごとにプローブを実行する場合は
2です。1 秒~3,600 秒の値を指定します。デフォルト値は 10 秒です。
gRPC ライブネス
コンテナ イメージが gRPC ヘルスチェック プロトコルを実装していることを確認します。
次のコマンドを実行します。
gcloud beta run instances deploy INSTANCE \
--image=IMAGE_URL \
--liveness-probe grpc.port=CONTAINER_PORT,grpc.service=GRPC_SERVICE,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
次のように置き換えます。
- INSTANCE: Cloud Run インスタンスの名前。
- IMAGE_URL: コンテナ イメージへの参照(
us-docker.pkg.dev/cloudrun/container/hello:latestなど)。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL の形式はLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAGです。 - GRPC_INSTANCE(省略可): 設定されている場合、
grpc.health.v1.Health.CheckRPC が呼び出されると、grpc.health.v1.HealthCheckRequestの instance フィールドで使用されます。 - CONTAINER_PORT(省略可): インスタンスに使用されるコンテナポート。
- DELAY(省略可): コンテナが起動してから最初のプローブを実行するまでの待機時間(秒単位)。0 秒~240 秒の値を指定します。デフォルト値は 0 秒です。
- THRESHOLD(省略可): コンテナをシャットダウンする前にプローブを再試行する回数。デフォルト値は 3 です。
- 省略可。TIMEOUT: プローブがタイムアウトするまでの待機時間(秒)。この値は、
periodSecondsに指定された値を超えることはできません。1~3,600 の値を指定します。デフォルトは 1 です。 - 省略可。PERIOD: プローブを実行する期間(秒単位)。たとえば、2 秒ごとにプローブを実行する場合は
2です。1 秒~3,600 秒の値を指定します。デフォルト値は 10 秒です。
YAML
HTTP ライブネス
プローブに応答するために、インスタンス コードに HTTP/1 エンドポイント(HTTP/2 ではなく Cloud Run のデフォルト)を追加します。エンドポイント名(/startup、/health、/are_you_ready など)は、プローブ構成の path と一致する必要があります。HTTP ヘルスチェック エンドポイントは外部からアクセスでき、外部に公開される他の HTTP インスタンス エンドポイントと同じ原則に従います。
-
新しいインスタンスを作成する場合は、この手順をスキップします。既存のインスタンスを更新する場合は、その YAML 構成をダウンロードします。
gcloud beta run instances describe INSTANCE --format export > instance.yaml
次のように
livenessProbe属性を構成します。apiVersion: serving.knative.dev/v1 apiVersion: serving.knative.dev/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA spec: containers: - image: IMAGE_URL livenessProbe: httpGet: path: PATH port: CONTAINER_PORT httpHeaders: - name: HEADER_NAME value: HEADER_VALUE initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
次のように置き換えます。
- INSTANCE: Cloud Run インスタンスの名前。
- IMAGE_URL: コンテナ イメージへの参照(
us-docker.pkg.dev/cloudrun/container/hello:latestなど)。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL の形式はLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAGです。 - PATH: HTTP エンドポイントの相対パス(例:
/health)。 - CONTAINER_PORT(省略可): インスタンスに使用するコンテナポートに設定します。
- DELAY(省略可): コンテナが起動してから最初のプローブを実行するまでの待機時間(秒単位)。0 秒~240 秒の値を指定します。デフォルト値は 0 秒です。
- THRESHOLD(省略可): コンテナをシャットダウンする前にプローブを再試行する回数。デフォルト値は 3 です。
- 省略可:
httpHeadersを使用すると、次のように HEADER_NAME フィールドと HEADER_VALUE フィールドを使用して複数または繰り返しのカスタム ヘッダーを指定できます。 - 省略可。TIMEOUT: プローブがタイムアウトするまでの待機時間(秒)。この値は、
periodSecondsに指定された値を超えることはできません。1~3,600 の値を指定します。デフォルトは 1 です。 - 省略可。PERIOD: プローブを実行する期間(秒単位)。たとえば、2 秒ごとにプローブを実行する場合は
2です。1 秒~3,600 秒の値を指定します。デフォルト値は 10 秒です。
-
次のコマンドを使用して、インスタンスを作成または更新します。
gcloud beta run instances replace instance.yaml
gRPC ライブネス
コンテナ イメージが gRPC ヘルスチェック プロトコルを実装していることを確認します。
-
新しいインスタンスを作成する場合は、この手順をスキップします。既存のインスタンスを更新する場合は、その YAML 構成をダウンロードします。
gcloud beta run instances describe INSTANCE --format export > instance.yaml
次のように
livenessProbe属性を構成します。apiVersion: serving.knative.dev/v1 apiVersion: serving.knative.dev/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA spec: containers: - image: IMAGE_URL livenessProbe: grpc: port: CONTAINER_PORT service: GRPC_SERVICE initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
次のように置き換えます。
- INSTANCE: Cloud Run インスタンスの名前。
- IMAGE_URL: コンテナ イメージへの参照(
us-docker.pkg.dev/cloudrun/container/hello:latestなど)。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL の形式はLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAGです。 - GRPC_INSTANCE(省略可): 設定されている場合、
grpc.health.v1.Health.CheckRPC が呼び出されると、grpc.health.v1.HealthCheckRequestの instance フィールドで使用されます。 - CONTAINER_PORT(省略可): インスタンスに使用されるコンテナポート。
- DELAY(省略可): コンテナが起動してから最初のプローブを実行するまでの待機時間(秒単位)。0 秒~240 秒の値を指定します。デフォルト値は 0 秒です。
- THRESHOLD(省略可): コンテナをシャットダウンする前にプローブを再試行する回数。デフォルト値は 3 です。
- 省略可。TIMEOUT: プローブがタイムアウトするまでの待機時間(秒)。この値は、
periodSecondsに指定された値を超えることはできません。1~3,600 の値を指定します。デフォルトは 1 です。 - 省略可。PERIOD: プローブを実行する期間(秒単位)。たとえば、2 秒ごとにプローブを実行する場合は
2です。1 秒~3,600 秒の値を指定します。デフォルト値は 10 秒です。
-
次のコマンドを使用して、インスタンスを作成または更新します。
gcloud beta run instances replace instance.yaml
Liveness Probe の要件と動作
| プローブの種類 | 要件 | 動作 |
|---|---|---|
| HTTP ライブネス | HTTP ヘルスチェック エンドポイントを作成する HTTP/1 を使用する |
ライブネス プローブは、起動プローブが成功した後にのみ開始されます。プローブの構成後、起動プローブが成功すると、Cloud Run はヘルスチェック エンドポイント(/health など)に HTTP GET リクエストを送信します。2XX または 3XX レスポンスはどれも成功であり、他のレスポンスは失敗を意味します。ライブネス プローブが指定時間( failureThreshold × periodSeconds)内に成功しなかった場合、コンテナは SIGKILL シグナルによってシャットダウンされます。コンテナによって処理されていた残りのリクエストは、HTTP ステータス コード 503 で終了します。コンテナがシャットダウンされると、Cloud Run の自動スケーリングによって新しいコンテナ インスタンスが起動します。 |
| gRPC ライブネス | Cloud Run インスタンスに gRPC ヘルスチェック プロトコルを実装する | gRPC 起動プローブを構成すると、ライブネス プローブは起動プローブが成功した後にのみ開始されます。 ライブネス プローブが構成され、起動プローブが成功すると、Cloud Run はインスタンスにヘルスチェック リクエストを送信します。 ライブネス プローブが指定された時間( failureThreshold * periodSeconds)内に成功しない場合、コンテナは SIGKILL シグナルを使用してシャットダウンされます。コンテナがシャットダウンされると、Cloud Run の自動スケーリングによって新しいコンテナ インスタンスが起動します。 |
readinessProbe を構成する
準備状況プローブには次の制限が適用されます。- セッション アフィニティを有効にすると、Cloud Run は準備状況チェックが失敗した場合でも、同じインスタンスにリクエストを送信し続けます。
準備状況プローブは、Google Cloud CLI または YAML を使用して構成できます。
gcloud
HTTP の準備状況
プローブに応答するために、インスタンス コードに HTTP/1 エンドポイント(HTTP/2 ではなく Cloud Run のデフォルト)を追加します。エンドポイント名(/startup、/health、/are_you_ready など)は、プローブ構成の path と一致する必要があります。HTTP ヘルスチェック エンドポイントは外部からアクセスでき、外部に公開される他の HTTP インスタンス エンドポイントと同じ原則に従います。
次のコマンドを実行します。
gcloud beta run instances deploy INSTANCE \
--image=IMAGE_URL \
--readiness-probe httpGet.path=PATH,httpGet.port=CONTAINER_PORT,successThreshold=SUCCESS_THRESHOLD,failureThreshold=FAILURE_THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
次のように置き換えます。
- INSTANCE: Cloud Run インスタンスの名前。
- IMAGE_URL: コンテナ イメージへの参照(
us-docker.pkg.dev/cloudrun/container/hello:latestなど)。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL の形式はLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAGです。 - PATH(省略可): HTTP エンドポイントの相対パス(例:
/are_you_ready)。デフォルトのパスは/です。 - CONTAINER_PORT(省略可): インスタンスに使用されるコンテナポート。デフォルトのポートはメインの上り(内向き)ポートです。
- SUCCESS_THRESHOLD(省略可): 失敗後にプローブが成功とみなされるために必要な最小の連続成功回数。デフォルトは 2 です。
- FAILURE_THRESHOLD(省略可): 失敗を報告する前にプローブを再試行する回数。この回数を超えると、インスタンスはトラフィックの受信を停止します。デフォルトは 3 です。
- TIMEOUT(省略可): プローブがタイムアウトするまでの待機時間(秒)。この値は、
periodSecondsに指定された値を超えることはできません。1~300 の値を指定します。デフォルトは 1 です。 - PERIOD(省略可): プローブを実行する期間(秒単位)。たとえば、2 秒ごとにプローブを実行する場合は
2です。1~300 の値を指定します。デフォルト値は 10 秒です。
gRPC の準備状況
コンテナ イメージが gRPC ヘルスチェック プロトコルを実装していることを確認します。
次のコマンドを実行します。
gcloud beta run instances deploy INSTANCE \
--image=IMAGE_URL \
--readiness-probe grpc.port=CONTAINER_PORT,grpc.instance=GRPC_INSTANCE,successThreshold=SUCCESS_THRESHOLD,failureThreshold=FAILURE_THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
次のように置き換えます。
- INSTANCE: Cloud Run インスタンスの名前。
- IMAGE_URL: コンテナ イメージへの参照(
us-docker.pkg.dev/cloudrun/container/hello:latestなど)。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL の形式はLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAGです。 - CONTAINER_PORT(省略可): インスタンスに使用されるコンテナポート。デフォルトのポートはメインの上り(内向き)ポートです。
- GRPC_INSTANCE(省略可): 設定されている場合、
grpc.health.v1.Health.CheckRPC が呼び出されると、grpc.health.v1.HealthCheckRequestの instance フィールドで使用されます。 - SUCCESS_THRESHOLD(省略可): 失敗後にプローブが成功とみなされるために必要な最小の連続成功回数。デフォルトは 2 です。
- FAILURE_THRESHOLD(省略可): 失敗を報告する前にプローブを再試行する回数。この回数を超えると、インスタンスはトラフィックの受信を停止します。デフォルトは 3 です。
- TIMEOUT(省略可): プローブがタイムアウトするまでの待機時間(秒)。この値は、
periodSecondsに指定された値を超えることはできません。1~300 の値を指定します。デフォルトは 1 です。 - PERIOD(省略可): プローブを実行する期間(秒単位)。たとえば、2 秒ごとにプローブを実行する場合は
2です。1~300 の値を指定します。デフォルト値は 10 秒です。
YAML
HTTP の準備状況
プローブに応答するために、インスタンス コードに HTTP/1 エンドポイント(HTTP/2 ではなく Cloud Run のデフォルト)を追加します。エンドポイント名(/startup、/health、/are_you_ready など)は、プローブ構成の path と一致する必要があります。HTTP ヘルスチェック エンドポイントは外部からアクセスでき、外部に公開される他の HTTP インスタンス エンドポイントと同じ原則に従います。
-
新しいインスタンスを作成する場合は、この手順をスキップします。既存のインスタンスを更新する場合は、その YAML 構成をダウンロードします。
gcloud beta run instances describe INSTANCE --format export > instance.yaml
次のように
readinessProbe属性を構成します。apiVersion: serving.knative.dev/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA spec: template: metadata: spec: containers: - image: IMAGE_URL readinessProbe: httpGet: path: PATH port: CONTAINER_PORT successThreshold: SUCCESS_THRESHOLD failureThreshold: FAILURE_THRESHOLD timeoutSeconds: TIMEOUT periodSeconds: PERIOD
次のように置き換えます。
- INSTANCE: Cloud Run インスタンスの名前。
- IMAGE_URL: コンテナ イメージへの参照(
us-docker.pkg.dev/cloudrun/container/hello:latestなど)。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL の形式はLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAGです。 - PATH(省略可): HTTP エンドポイントの相対パス(例:
/are_you_ready)。デフォルトのパスは/です。 - CONTAINER_PORT(省略可): インスタンスに使用されるコンテナポート。デフォルトのポートはメインの上り(内向き)ポートです。
- SUCCESS_THRESHOLD(省略可): 失敗後にプローブが成功とみなされるために必要な最小の連続成功回数。デフォルトは 2 です。
- FAILURE_THRESHOLD(省略可): 失敗を報告する前にプローブを再試行する回数。この回数を超えると、インスタンスはトラフィックの受信を停止します。デフォルトは 3 です。
- TIMEOUT(省略可): プローブがタイムアウトするまでの待機時間(秒)。この値は、
periodSecondsに指定された値を超えることはできません。1~300 の値を指定します。デフォルトは 1 です。 - PERIOD(省略可): プローブを実行する期間(秒単位)。たとえば、2 秒ごとにプローブを実行する場合は
2です。1~300 の値を指定します。デフォルト値は 10 秒です。
-
次のコマンドを使用して、インスタンスを作成または更新します。
gcloud beta run instances replace instance.yaml
gRPC の準備状況
コンテナ イメージが gRPC ヘルスチェック プロトコルを実装していることを確認します。
-
新しいインスタンスを作成する場合は、この手順をスキップします。既存のインスタンスを更新する場合は、その YAML 構成をダウンロードします。
gcloud beta run instances describe INSTANCE --format export > instance.yaml
次のように
readinessProbe属性を構成します。apiVersion: serving.knative.dev/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA spec: template: metadata: spec: containers: - image: IMAGE_URL readinessProbe: grpc: port: CONTAINER_PORT instance: GRPC_INSTANCE successThreshold: SUCCESS_THRESHOLD failureThreshold: FAILURE_THRESHOLD timeoutSeconds: TIMEOUT periodSeconds: PERIOD
次のように置き換えます。
- INSTANCE: Cloud Run インスタンスの名前。
- IMAGE_URL: コンテナ イメージへの参照(
us-docker.pkg.dev/cloudrun/container/hello:latestなど)。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL の形式はLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAGです。 - CONTAINER_PORT(省略可): インスタンスに使用されるコンテナポート。デフォルトのポートはメインの上り(内向き)ポートです。
- GRPC_INSTANCE(省略可): 設定されている場合、
grpc.health.v1.Health.CheckRPC が呼び出されると、grpc.health.v1.HealthCheckRequestの instance フィールドで使用されます。 - SUCCESS_THRESHOLD(省略可): 失敗後にプローブが成功とみなされるために必要な最小の連続成功回数。デフォルトは 2 です。
- FAILURE_THRESHOLD(省略可): 失敗を報告する前にプローブを再試行する回数。この回数を超えると、インスタンスはトラフィックの受信を停止します。デフォルトは 3 です。
- TIMEOUT(省略可): プローブがタイムアウトするまでの待機時間(秒)。この値は、
periodSecondsに指定された値を超えることはできません。1~300 の値を指定します。デフォルトは 1 です。 - PERIOD(省略可): プローブを実行する期間(秒単位)。たとえば、2 秒ごとにプローブを実行する場合は
2です。1~300 の値を指定します。デフォルト値は 10 秒です。
-
次のコマンドを使用して、インスタンスを作成または更新します。
gcloud beta run instances replace instance.yaml
CPU の割り当て
- プローブの実行時に CPU が常に割り当てられます。
- すべてのプローブは CPU 使用率とメモリ使用量に対して課金されます。リクエスト ベースの料金は発生しません。
次のステップ
- gRPC ヘルスチェック プロトコルの構成方法を確認する。