Cloud Run ヘルスチェックは、コンテナ インスタンスが正しく実行され、トラフィックを処理できることを確認します。Cloud Run のヘルスチェックを使用すると、コンテナがリクエストを受信する準備が整うタイミングと、コンテナが異常と見なされて再起動が必要なタイミングをカスタマイズできます。
ユースケース
次のタイプのヘルスチェック プローブを構成できます。
起動プローブは、コンテナが起動し、トラフィックを受け入れる準備ができているかどうかを判断します。
- 起動プローブを構成すると、コンテナを起動したことを起動プローブが把握するまで、ライブネス チェックと準備チェックは無効になります。これにより、サービス起動時での干渉が防止されます。
- 起動プローブは、起動に時間がかかるコンテナでライブネス チェックを行う場合に特に役立ちます。これは、コンテナが起動して動作する前にシャットダウンされることを防ぐためです。
liveness プローブは、コンテナを再起動するかどうかを判断します。
- この場合、コンテナを再起動すると、バグが発生したときにサービスの可用性を高めることができます。
- ライブネス プローブは、他の方法では復元できない個々のインスタンスを再起動することを目的としています。主に、回復不能なインスタンス障害に使用します。たとえば、サービスは実行されているが、処理が進まないデッドロックを捕捉する場合などです。カスタムの組織のポリシーを使用して、すべてのコンテナで Liveness Probe を必須にできます。
- サービスでプローブの失敗が繰り返し発生すると、制御不能なクラッシュ ループを防ぐため、Cloud Run はインスタンスの再起動を制限します。
readiness プローブ(プレビュー)
readiness プローブは、Cloud Run サービスのインスタンスがトラフィックを処理するタイミングを決定します。準備状況チェックは、コンテナの起動プローブが正常に完了した後に開始されます。インスタンスの readiness プローブが構成した失敗しきい値を超えて失敗すると、Cloud Run はそのインスタンスへの新しいトラフィックの送信を停止します。Cloud Run は、インスタンスを終了せず、readiness プローブが再び成功すると、トラフィックをインスタンスに送り返します。
Startup Probe を構成する
構成を変更すると、新しいリビジョンが作成されます。明示的に更新しない限り、以降のリビジョンでも、この構成が自動的に設定されます。
HTTP、TCP、gRPC のプローブは、 Google Cloud コンソール、YAML、または Terraform を使用して構成できます。
コンソール
Google Cloud コンソールで、[Cloud Run] ページに移動します。
新しいサービスの場合は、[コンテナ、ボリューム、ネットワーキング、セキュリティ] を開いて、ヘルスチェック オプションを表示します。既存のサービスの場合は、構成するサービスをクリックし、[新しいリビジョンの編集とデプロイ] をクリックして、ヘルスチェック オプションを表示します。
[コンテナ] セクションで [ヘルスチェック] に移動し、[ヘルスチェックを追加します] をクリックして、[ヘルスチェックを追加] 構成パネルを開きます。
[ヘルスチェックの種類の選択] メニューから、[起動チェック] を選択します。
[プローブタイプの選択] メニューで、使用するプローブのタイプ(HTTP や gRPC など)を選択すると、プローブ構成フォームが表示されます。
プローブの構成はプローブの種類によって異なります。プローブ設定を構成します。
HTTP プローブを使用している場合:
プローブに応答するために、サービスコードに HTTP/1 エンドポイント(HTTP/2 ではなく Cloud Run のデフォルト)を追加します。エンドポイント名(
/startup、/health、/are_you_readyなど)は、プローブ構成のpathと一致する必要があります。HTTP ヘルスチェック エンドポイントは外部からアクセスでき、外部に公開される他の HTTP サービス エンドポイントと同じ原則に従います。[パス] フィールドに、エンドポイントへの相対パスを指定します(例:
/)。[HTTP ヘッダー] チェックボックスをオンにして、オプションのカスタム ヘッダーを指定します。[名前] フィールドにヘッダー名、[値] フィールドにヘッダー値を指定します。[HTTP ヘッダーを追加] をクリックして、他のヘッダーを指定します。
gRPC プローブを使用している場合:
- コンテナ イメージが gRPC ヘルスチェック プロトコルを実装していることを確認します。
[ポート] に、サービスに使用するコンテナポートを指定します。
[初期遅延] に、コンテナが起動してから最初のプローブを実行するまでの待機時間を秒単位で指定します。0 秒~240 秒の値を指定します。デフォルト値は 0 秒です。
[期間] に、プローブを実行する期間(秒単位)を指定します。たとえば、2 秒ごとにプローブを実行する場合は
2です。1 秒~240 秒の値を指定します。デフォルト値は 10 秒です。[失敗しきい値] に、コンテナをシャットダウンする前にプローブを再試行する回数を指定します。デフォルト値は 3 です。
[タイムアウト] に、プローブがタイムアウトするまでの待機時間を秒単位で指定します。この値は、
periodSecondsに指定された値を超えることはできません。1 ~ 240 の値を指定します。デフォルトは 1 です。
[追加] をクリックして、新しいしきい値を追加します。
[作成] または [デプロイ] をクリックします。
gcloud
TCP 起動
次のコマンドを実行します。
gcloud run deploy SERVICE \
--image=IMAGE_URL \
--startup-probe tcpSocket.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
次のように置き換えます。
- SERVICE: 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 run deploy SERVICE \
--image=IMAGE_URL \
--startup-probe httpGet.path=PATH,httpGet.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
次のように置き換えます。
- SERVICE: 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 run deploy SERVICE \
--image=IMAGE_URL \
--startup-probe grpc.port=CONTAINER_PORT,grpc.service=GRPC_SERVICE,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
次のように置き換えます。
- SERVICE: 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_SERVICE: 設定されている場合、
grpc.health.v1.Health.CheckRPC が呼び出されると、grpc.health.v1.HealthCheckRequestの service フィールドで使用されます。 - 省略可。CONTAINER_PORT: サービスで使用されるコンテナポート。
- 省略可。DELAY: コンテナが起動してから最初のプローブを実行するまでの待機時間(秒単位)。0 秒~240 秒の値を指定します。デフォルト値は 0 秒です。
- 省略可。THRESHOLD: コンテナをシャットダウンする前にプローブを再試行する回数。デフォルト値は 3 です。
- 省略可。TIMEOUT: プローブがタイムアウトするまでの待機時間(秒)。この値は、periodSeconds に指定された値を超えることはできません。1~240 の値を指定します。デフォルトは 1 です。
- 省略可。PERIOD: プローブを実行する期間(秒単位)。たとえば、2 秒ごとにプローブを実行する場合は
2です。1 秒~240 秒の値を指定します。デフォルト値は 10 秒です。
YAML
TCP 起動
-
新しいサービスを作成する場合は、この手順をスキップします。既存のサービスを更新する場合は、その YAML 構成をダウンロードします。
gcloud run services describe SERVICE --format export > service.yaml
次のように
startupProbe属性を構成します。apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: spec: containers: - image: IMAGE_URL startupProbe: tcpSocket: port: CONTAINER_PORT initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
次のように置き換えます。
- SERVICE: 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 run services replace service.yaml
HTTP 起動
プローブに応答するために、サービスコードに HTTP/1 エンドポイント(HTTP/2 ではなく Cloud Run のデフォルト)を追加します。エンドポイント名(/startup、/health、/are_you_ready など)は、プローブ構成の path と一致する必要があります。HTTP ヘルスチェック エンドポイントは外部からアクセスでき、外部に公開される他の HTTP サービス エンドポイントと同じ原則に従います。
-
新しいサービスを作成する場合は、この手順をスキップします。既存のサービスを更新する場合は、その YAML 構成をダウンロードします。
gcloud run services describe SERVICE --format export > service.yaml
次のように
startupProbe属性を構成します。apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: 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
次のように置き換えます。
- SERVICE: 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 秒です。
-
次のコマンドを使用して、サービスを作成または更新します。
gcloud run services replace service.yaml
gRPC 起動
コンテナ イメージが gRPC ヘルスチェック プロトコルを実装していることを確認します。
-
新しいサービスを作成する場合は、この手順をスキップします。既存のサービスを更新する場合は、その YAML 構成をダウンロードします。
gcloud run services describe SERVICE --format export > service.yaml
次のように
startupProbe属性を構成します。apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: spec: containers: - image: IMAGE_URL startupProbe: grpc: service: GRPC_SERVICE port: CONTAINER_PORT initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
次のように置き換えます。
- SERVICE: 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_SERVICE: 設定されている場合、
grpc.health.v1.Health.CheckRPC が呼び出されると、grpc.health.v1.HealthCheckRequestの service フィールドで使用されます。 - 省略可。CONTAINER_PORT: サービスで使用されるコンテナポート。
- 省略可。DELAY: コンテナが起動してから最初のプローブを実行するまでの待機時間(秒単位)。0 秒~240 秒の値を指定します。デフォルト値は 0 秒です。
- 省略可。THRESHOLD: コンテナをシャットダウンする前にプローブを再試行する回数。デフォルト値は 3 です。
- 省略可。TIMEOUT: プローブがタイムアウトするまでの待機時間(秒)。この値は、periodSeconds に指定された値を超えることはできません。1~240 の値を指定します。デフォルトは 1 です。
- 省略可。PERIOD: プローブを実行する期間(秒単位)。たとえば、2 秒ごとにプローブを実行する場合は
2です。1 秒~240 秒の値を指定します。デフォルト値は 10 秒です。
-
次のコマンドを使用して、サービスを作成または更新します。
gcloud run services replace service.yaml
Terraform
Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
TCP 起動
次に示すように、startup_probe 属性を使用して Cloud Run サービスを構成します。
HTTP 起動
プローブに応答するために、サービスコードに HTTP/1 エンドポイント(HTTP/2 ではなく Cloud Run のデフォルト)を追加します。エンドポイント名(/startup、/health、/are_you_ready など)は、プローブ構成の path と一致する必要があります。HTTP ヘルスチェック エンドポイントは外部からアクセスでき、外部に公開される他の HTTP サービス エンドポイントと同じ原則に従います。
次に示すように、startup_probe 属性を使用して Cloud Run サービスを構成します。
gRPC 起動
コンテナ イメージが gRPC ヘルスチェック プロトコルを実装していることを確認します。
次に示すように、startup_probe 属性を使用して Cloud Run サービスを構成します。
デフォルトの 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 秒を超えることはできません。指定された時間内に HTTP 起動プローブが成功し、HTTP ライブネス プローブを構成している場合は、HTTP ライブネス プローブが開始されます。 |
| gRPC 起動 | Cloud Run サービスに gRPC ヘルスチェック プロトコルを実装する | Startup Probe が指定時間(failureThreshold × periodSeconds)(最長で 240 秒)以内に成功しなかった場合、コンテナはシャットダウンされます。 |
livenessProbe を構成する
構成を変更すると、新しいリビジョンが作成されます。明示的に更新しない限り、以降のリビジョンでも、この構成が自動的に設定されます。
HTTP プローブと gRPC プローブは、 Google Cloud コンソール、YAML、または Terraform を使用して構成できます。
コンソール
Google Cloud コンソールで、[Cloud Run] ページに移動します。
新しいサービスの場合は、[コンテナ、ボリューム、ネットワーキング、セキュリティ] を開いて、ヘルスチェック オプションを表示します。既存のサービスの場合は、構成するサービスをクリックし、[新しいリビジョンの編集とデプロイ] をクリックして、ヘルスチェック オプションを表示します。
[コンテナ] セクションで [ヘルスチェック] に移動し、[ヘルスチェックを追加します] をクリックして、[ヘルスチェックを追加] 構成パネルを開きます。
[ヘルスチェックの種類の選択] メニューから、[ライブネス チェック] を選択します。
[プローブタイプの選択] メニューで、使用するプローブのタイプ(HTTP や gRPC など)を選択すると、プローブ構成フォームが表示されます。
プローブの構成はプローブの種類によって異なります。プローブ設定を構成します。
HTTP プローブを使用している場合:
プローブに応答するために、サービスコードに HTTP/1 エンドポイント(HTTP/2 ではなく Cloud Run のデフォルト)を追加します。エンドポイント名(
/startup、/health、/are_you_readyなど)は、プローブ構成のpathと一致する必要があります。HTTP ヘルスチェック エンドポイントは外部からアクセスでき、外部に公開される他の HTTP サービス エンドポイントと同じ原則に従います。[パス] フィールドに、エンドポイントへの相対パスを指定します(例:
/)。[HTTP ヘッダー] チェックボックスをオンにして、オプションのカスタム ヘッダーを指定します。[名前] フィールドにヘッダー名、[値] フィールドにヘッダー値を指定します。[HTTP ヘッダーを追加] をクリックして、他のヘッダーを指定します。
gRPC プローブを使用している場合:
- コンテナ イメージが gRPC ヘルスチェック プロトコルを実装していることを確認します。
[ポート] に、サービスに使用するコンテナポートを指定します。
[初期遅延] に、コンテナが起動してから最初のプローブを実行するまでの待機時間を秒単位で指定します。0 秒~240 秒の値を指定します。デフォルト値は 0 秒です。
[期間] に、プローブを実行する期間(秒単位)を指定します。たとえば、2 秒ごとにプローブを実行する場合は
2です。1 秒~ 3,600 秒の値を指定します。デフォルト値は 10 秒です。[失敗しきい値] に、コンテナをシャットダウンする前にプローブを再試行する回数を指定します。デフォルト値は 3 です。
[タイムアウト] に、プローブがタイムアウトするまでの待機時間を秒単位で指定します。この値は、
periodSecondsに指定された値を超えることはできません。1 ~ 3,600 の値を指定します。デフォルトは 1 です。
[追加] をクリックして、新しいしきい値を追加します。
[作成] または [デプロイ] をクリックします。
gcloud
HTTP ライブネス
プローブに応答するために、サービスコードに HTTP/1 エンドポイント(HTTP/2 ではなく Cloud Run のデフォルト)を追加します。エンドポイント名(/startup、/health、/are_you_ready など)は、プローブ構成の path と一致する必要があります。HTTP ヘルスチェック エンドポイントは外部からアクセスでき、外部に公開される他の HTTP サービス エンドポイントと同じ原則に従います。
次のコマンドを実行します。
gcloud run deploy SERVICE \
--image=IMAGE_URL \
--liveness-probe httpGet.path=PATH,httpGet.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
次のように置き換えます。
- SERVICE: 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 run deploy SERVICE \
--image=IMAGE_URL \
--liveness-probe grpc.port=CONTAINER_PORT,grpc.service=GRPC_SERVICE,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
次のように置き換えます。
- SERVICE: 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_SERVICE: 設定されている場合、
grpc.health.v1.Health.CheckRPC が呼び出されると、grpc.health.v1.HealthCheckRequestの service フィールドで使用されます。 - 省略可。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 run services describe SERVICE --format export > service.yaml
次のように
livenessProbe属性を構成します。apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: 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
次のように置き換えます。
- SERVICE: 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 run services replace service.yaml
gRPC ライブネス
コンテナ イメージが gRPC ヘルスチェック プロトコルを実装していることを確認します。
-
新しいサービスを作成する場合は、この手順をスキップします。既存のサービスを更新する場合は、その YAML 構成をダウンロードします。
gcloud run services describe SERVICE --format export > service.yaml
次のように
livenessProbe属性を構成します。apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: spec: containers: - image: IMAGE_URL livenessProbe: grpc: port: CONTAINER_PORT service: GRPC_SERVICE initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
次のように置き換えます。
- SERVICE: 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_SERVICE: 設定されている場合、
grpc.health.v1.Health.CheckRPC が呼び出されると、grpc.health.v1.HealthCheckRequestの service フィールドで使用されます。 - 省略可。CONTAINER_PORT: サービスで使用されるコンテナポート。
- 省略可。DELAY: コンテナが起動してから最初のプローブを実行するまでの待機時間(秒単位)。0 秒~240 秒の値を指定します。デフォルト値は 0 秒です。
- 省略可。THRESHOLD: コンテナをシャットダウンする前にプローブを再試行する回数。デフォルト値は 3 です。
- 省略可。TIMEOUT: プローブがタイムアウトするまでの待機時間(秒)。この値は、
periodSecondsに指定された値を超えることはできません。1~3,600 の値を指定します。デフォルトは 1 です。 - 省略可。PERIOD: プローブを実行する期間(秒単位)。たとえば、2 秒ごとにプローブを実行する場合は
2です。1 秒~3,600 秒の値を指定します。デフォルト値は 10 秒です。
-
次のコマンドを使用して、サービスを作成または更新します。
gcloud run services replace service.yaml
Terraform
Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
HTTP ライブネス
プローブに応答するために、サービスコードに HTTP/1 エンドポイント(HTTP/2 ではなく Cloud Run のデフォルト)を追加します。エンドポイント名(/startup、/health、/are_you_ready など)は、プローブ構成の path と一致する必要があります。HTTP ヘルスチェック エンドポイントは外部からアクセスでき、外部に公開される他の HTTP サービス エンドポイントと同じ原則に従います。
次に示すように、liveness_probe 属性を使用して Cloud Run サービスを構成します。
gRPC ライブネス
コンテナ イメージが gRPC ヘルスチェック プロトコルを実装していることを確認します。
次に示すように、liveness_probe 属性を使用して Cloud Run サービスを構成します。
Liveness Probe の要件と動作
| プローブの種類 | 要件 | 動作 |
|---|---|---|
| HTTP ライブネス | HTTP ヘルスチェック エンドポイントを作成する HTTP/1 を使用する |
ライブネス プローブは、起動プローブが成功した後にのみ開始されます。プローブの構成後、起動プローブが成功すると、Cloud Run はヘルスチェック エンドポイント(/health など)に HTTP GET リクエストを送信します。2XX または 3XX のレスポンスは成功であり、他のレスポンスは失敗を意味します。ライブネス プローブが指定された時間( failureThreshold × periodSeconds)内に成功しない場合、コンテナは SIGKILL シグナルを使用してシャットダウンされます。コンテナによって処理されていた残りのリクエストは、HTTP ステータス コード 503 で終了します。コンテナがシャットダウンされると、Cloud Run の自動スケーリングによって新しいコンテナ インスタンスが起動します。 |
| gRPC liveness | Cloud Run サービスに gRPC ヘルスチェック プロトコルを実装する | gRPC 起動プローブを構成すると、ライブネス プローブは起動プローブが成功した後にのみ開始されます。 ライブネス プローブの構成後、起動プローブが成功すると、Cloud Run はサービスにヘルスチェック リクエストを送信します。 ライブネス プローブが指定時間( failureThreshold × periodSeconds)内に成功しなかった場合、コンテナは SIGKILL シグナルによってシャットダウンされます。コンテナがシャットダウンされると、Cloud Run の自動スケーリングによって新しいコンテナ インスタンスが起動します。 |
readinessProbe を構成する
構成を変更すると、新しいリビジョンが作成されます。明示的に更新しない限り、以降のリビジョンでも、この構成が自動的に設定されます。
Readiness プローブには次の制限が適用されます。
セッション アフィニティを有効にすると、Cloud Run は readiness チェックが失敗した場合でも、同じインスタンスにリクエストを送信し続けます。
Cloud Run は、readiness プローブが初めて完了する前に、新しく起動したインスタンスにリクエストを送信することがあります。
2025 年 11 月より前に Cloud Run Admin API v1 を使用して Cloud Run サービスの準備状況プローブを構成した場合、そのサービスの新しい構成をデプロイしても、準備状況チェックは有効になりません。これは、サービスが古い構成を保持しているために発生します。2025 年 11 月以降に作成したサービス、または準備完了プローブを一度も使用したことがないサービスは影響を受けません。影響を受けるサービスでサポートされている Readiness プローブを有効にするには、次の操作を行います。
古い readiness プローブ定義を削除する新しいリビジョンをデプロイします。
関連する Readiness Probe の定義を追加する別の新しいリビジョンをデプロイします。
これらの手順では、古い構成をクリアして、準備状況プローブ機能を有効にします。
準備状況プローブは、 Google Cloud コンソール、Google Cloud CLI、または YAML を使用して構成できます。
コンソール
Google Cloud コンソールで、[Cloud Run] ページに移動します。
新しいサービスの場合は、[コンテナ、ボリューム、ネットワーキング、セキュリティ] を開いて、ヘルスチェック オプションを表示します。既存のサービスの場合は、構成するサービスをクリックし、[新しいリビジョンの編集とデプロイ] をクリックして、ヘルスチェック オプションを表示します。
[コンテナ] セクションで [ヘルスチェック] に移動し、[ヘルスチェックを追加します] をクリックして、[ヘルスチェックを追加] 構成パネルを開きます。
[ヘルスチェックの種類の選択] メニューから、[準備状況チェック] を選択します。
[プローブタイプの選択] メニューで、使用するプローブのタイプ(HTTP や gRPC など)を選択すると、プローブ構成フォームが表示されます。
プローブの構成はプローブの種類によって異なります。プローブ設定を構成します。
HTTP プローブを使用している場合:
プローブに応答するために、サービスコードに HTTP/1 エンドポイント(HTTP/2 ではなく Cloud Run のデフォルト)を追加します。エンドポイント名(
/startup、/health、/are_you_readyなど)は、プローブ構成のpathと一致する必要があります。HTTP ヘルスチェック エンドポイントは外部からアクセスでき、外部に公開される他の HTTP サービス エンドポイントと同じ原則に従います。[パス] フィールドに、エンドポイントへの相対パスを指定します(例:
/are_you_ready)。デフォルトのパスは/です。
gRPC プローブを使用している場合:
- コンテナ イメージが gRPC ヘルスチェック プロトコルを実装していることを確認します。
[ポート] に、サービスのコンテナポートを指定します。デフォルトのポートはメインの入力ポートです。
[期間] に、プローブを実行する期間(秒単位)を指定します。たとえば、2 秒ごとにプローブを実行する場合は
2です。1 ~ 300 の値を指定します。デフォルト値は 10 秒です。[成功しきい値] に、失敗後にプローブが成功とみなされるために必要な最小の連続成功回数を指定します。デフォルトは 2 です。
[失敗しきい値] に、失敗を報告する前にプローブを再試行する回数を指定します。これにより、インスタンスがトラフィックの受信を停止します。デフォルト値は 3 です。
[タイムアウト] に、プローブがタイムアウトするまでの待機時間を秒単位で指定します。この値は、
periodSecondsに指定された値を超えることはできません。1 ~ 300 の値を指定します。デフォルトは 1 です。
[追加] をクリックして、新しいしきい値を追加します。
[作成] または [デプロイ] をクリックします。
gcloud
HTTP の準備状況
プローブに応答するために、サービスコードに HTTP/1 エンドポイント(HTTP/2 ではなく Cloud Run のデフォルト)を追加します。エンドポイント名(/startup、/health、/are_you_ready など)は、プローブ構成の path と一致する必要があります。HTTP ヘルスチェック エンドポイントは外部からアクセスでき、外部に公開される他の HTTP サービス エンドポイントと同じ原則に従います。
次のコマンドを実行します。
gcloud beta run deploy SERVICE \
--image=IMAGE_URL \
--readiness-probe httpGet.path=PATH,httpGet.port=CONTAINER_PORT,successThreshold=SUCCESS_THRESHOLD,failureThreshold=FAILURE_THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
次のように置き換えます。
- SERVICE: 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 deploy SERVICE \
--image=IMAGE_URL \
--readiness-probe grpc.port=CONTAINER_PORT,grpc.service=GRPC_SERVICE,successThreshold=SUCCESS_THRESHOLD,failureThreshold=FAILURE_THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
次のように置き換えます。
- SERVICE: 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_SERVICE: 設定されている場合、
grpc.health.v1.Health.CheckRPC が呼び出されると、grpc.health.v1.HealthCheckRequestの service フィールドで使用されます。 - 省略可。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 run services describe SERVICE --format export > service.yaml
次のように
readinessProbe属性を構成します。apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE 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
次のように置き換えます。
- SERVICE: 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 run services replace service.yaml
gRPC の準備
コンテナ イメージが gRPC ヘルスチェック プロトコルを実装していることを確認します。
-
新しいサービスを作成する場合は、この手順をスキップします。既存のサービスを更新する場合は、その YAML 構成をダウンロードします。
gcloud run services describe SERVICE --format export > service.yaml
次のように
readinessProbe属性を構成します。apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE annotations: run.googleapis.com/launch-stage: BETA spec: template: metadata: spec: containers: - image: IMAGE_URL readinessProbe: grpc: port: CONTAINER_PORT service: GRPC_SERVICE successThreshold: SUCCESS_THRESHOLD failureThreshold: FAILURE_THRESHOLD timeoutSeconds: TIMEOUT periodSeconds: PERIOD
次のように置き換えます。
- SERVICE: 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_SERVICE: 設定されている場合、
grpc.health.v1.Health.CheckRPC が呼び出されると、grpc.health.v1.HealthCheckRequestの service フィールドで使用されます。 - 省略可。SUCCESS_THRESHOLD: 失敗後にプローブが成功とみなされるために必要な最小の連続成功回数。デフォルトは 2 です。
- 省略可。FAILURE_THRESHOLD: 失敗を報告する前にプローブを再試行する回数。これにより、インスタンスはトラフィックの受信を停止します。デフォルトは 3 です。
- 省略可。TIMEOUT: プローブがタイムアウトするまでの待機時間(秒)。この値は、
periodSecondsに指定された値を超えることはできません。1 ~ 300 の値を指定します。デフォルトは 1 です。 - 省略可。PERIOD: プローブを実行する期間(秒単位)。たとえば、2 秒ごとにプローブを実行する場合は
2です。1 ~ 300 の値を指定します。デフォルト値は 10 秒です。
-
次のコマンドを使用して、サービスを作成または更新します。
gcloud run services replace service.yaml
CPU の割り当て
- プローブの実行時に CPU が常に割り当てられます。
- すべてのプローブは CPU 使用率とメモリ使用量に対して課金されます。リクエスト ベースの料金は発生しません。
次のステップ
- gRPC ヘルスチェック プロトコルを構成する方法を学習する。