コンテナのヘルスチェックを構成する(ジョブ)

このページでは、新規および既存の Cloud Run ジョブに HTTP、TCP、gRPC の起動プローブを構成する方法について説明します。構成は、プローブの種類によって異なります。

ユースケース

起動ヘルスチェック プローブを構成できます。起動プローブは、コンテナが起動してジョブを実行する準備ができているかどうかを判断します。

ジョブが繰り返し起動に失敗すると、Cloud Run はタスクの再起動を制限して、制御不能なクラッシュ ループを防ぎます。

プローブの要件と動作

プローブの種類 要件 動作
TCP 起動 なし Cloud Run が接続を確立できない場合は、失敗を示します。

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

起動プローブが指定時間(failureThreshold × periodSeconds)(最長で 240 秒)以内に成功しなかった場合、コンテナはシャットダウンされます。
gRPC 起動 Cloud Run ジョブに gRPC ヘルスチェック プロトコルを実装する 起動プローブが指定時間(failureThreshold × periodSeconds)(最長で 240 秒)以内に成功しなかった場合、コンテナはシャットダウンされます。

プローブを構成する

Google Cloud コンソールまたは YAML を使用して、HTTP、TCP、gRPC のプローブを構成します。

Console

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

  1. Google Cloud のコンソールで、[Cloud Run] ページに移動します。

    Cloud Run に移動します

  2. 新しいジョブの場合は、[DEPLOY CONTAINER]、[Job] の順にクリックします。既存のジョブの場合は、[ジョブ] タブをクリックし、目的のジョブをクリックして、[ジョブ構成の表示と編集] をクリックします。

  3. [コンテナ、ボリューム、ネットワーキング、セキュリティ] を開きます。

  4. [コンテナ] セクションで [ヘルスチェック] に移動し、[ヘルスチェックを追加します] をクリックして、[ヘルスチェックを追加] 構成パネルを開きます。

  5. [ヘルスチェックの種類の選択] メニューから、ヘルスチェックの起動タイプを選択します。

  6. [プローブタイプの選択] メニューで、プローブのタイプ(HTTP や gRPC など)を選択します。プローブ構成フォームが表示されます。

  7. プローブの構成はプローブの種類によって異なりますのでご注意ください。プローブ設定を構成します。

    • HTTP プローブを使用している場合:
      • [パス] フィールドに、エンドポイントへの相対パスを指定します(例: /)。
      • [HTTP ヘッダー] チェックボックスをオンにして、オプションのカスタム ヘッダーを指定します。[名前] フィールドにヘッダー名、[] フィールドにヘッダー値を指定します。[HTTP ヘッダーを追加] をクリックして、他のヘッダーを指定します。
    • [ポート] に、ジョブコンテナがプローブをリッスンするポートを指定します。
    • [初期遅延] に、コンテナが起動してから最初のプローブを実行するまでの待機時間を秒単位で指定します。0 秒~240 秒の値を指定します。デフォルト値は 0 秒です。
    • [期間] に、プローブを実行する時間間隔(秒単位)を指定します。たとえば、2 秒ごとにプローブを実行する場合は 2 です。1 秒~240 秒の値を指定します。デフォルト値は 10 秒です。
    • [失敗しきい値] に、コンテナをシャットダウンする前にプローブを再試行する回数を指定します。デフォルト値は 3 です。
    • [タイムアウト] に、プローブがタイムアウトするまでの待機時間を秒単位で指定します。この値は、periodSeconds に指定された値を超えることはできません。1~240 の値を指定します。デフォルトは 1 です。
  8. [追加] をクリックして、新しいしきい値を追加します。

YAML

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

TCP 起動

  1. 新しいジョブを作成する場合は、この手順をスキップします。既存のジョブを更新する場合は、その YAML 構成をダウンロードします。

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. 次のように startupProbe 属性を構成します。

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
     name: JOB
    spec:
     template:
       metadata:
       spec:
         containers:
         - image: IMAGE_URL
           startupProbe:
             tcpSocket:
               port: CONTAINER_PORT
             initialDelaySeconds: DELAY
             timeoutSeconds: TIMEOUT
             failureThreshold: THRESHOLD
             periodSeconds: PERIOD

    次の変数を置き換えます。

    • JOB: Cloud Run ジョブの名前。
    • IMAGE_URL は、ジョブ コンテナ イメージの URL に置き換えます(例: us-docker.pkg.dev/cloudrun/container/job:latest)。
    • 省略可: CONTAINER_PORT は、ジョブ コンテナがプローブをリッスンするポートに置き換えます。
    • DELAY は、コンテナが開始された後、最初のプローブを実行するまでに待機する秒数に置き換えます。0 秒~240 秒の値を指定します。デフォルト値は 0 秒です。
    • 省略可: TIMEOUT は、プローブがタイムアウトするまでの待機時間(秒)に置き換えます。この値は、periodSeconds に指定された値を超えることはできません。1~240 の値を指定します。デフォルトは 1 です。
    • THRESHOLD は、コンテナをシャットダウンする前にプローブを再試行する回数に置き換えます。デフォルト値は 3 です。
    • PERIOD は、プローブを実行する期間(秒単位)に置き換えます。たとえば、2 秒ごとにプローブを実行する場合は 2 です。1 秒~240 秒の値を指定します。デフォルト値は 10 秒です。
  3. 次のコマンドを使用して、ジョブを作成または更新します。

    gcloud run jobs replace job.yaml

HTTP 起動

  1. 新しいジョブを作成する場合は、この手順をスキップします。既存のジョブを更新する場合は、その YAML 構成をダウンロードします。

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. 次のように startupProbe 属性を構成します。

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB
    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

    次の変数を置き換えます。

    • JOB: Cloud Run ジョブの名前。
    • IMAGE_URL は、ジョブ コンテナ イメージの URL に置き換えます(例: us-docker.pkg.dev/cloudrun/container/job:latest)。
    • PATH は、HTTP エンドポイントの相対パス(例: /ready)に置き換えます。
    • 省略可: CONTAINER_PORT は、ジョブ コンテナがプローブをリッスンするポートに置き換えます。
    • 省略可: httpHeaders を使用すると、次のように HEADER_NAME フィールドと HEADER_VALUE フィールドを使用して複数または繰り返しのカスタム ヘッダーを指定できます。
    • 省略可: DELAY は、コンテナが開始された後、最初のプローブを実行するまでに待機する秒数に置き換えます。0 秒~240 秒の値を指定します。デフォルト値は 0 秒です。
    • 省略可: TIMEOUT は、プローブがタイムアウトするまでの待機時間(秒)に置き換えます。この値は、periodSeconds に指定された値を超えることはできません。1~240 の値を指定します。デフォルトは 1 です。
    • 省略可: THRESHOLD は、コンテナをシャットダウンする前にプローブを再試行する回数に置き換えます。デフォルト値は 3 です。
    • 省略可: PERIOD は、プローブを実行する期間(秒単位)に置き換えます。たとえば、2 秒ごとにプローブを実行する場合は 2 です。1 秒~240 秒の値を指定します。デフォルト値は 10 秒です。
  3. 次のコマンドを使用して、ジョブを作成または更新します。

    gcloud run jobs replace job.yaml

gRPC 起動

  1. 新しいジョブを作成する場合は、この手順をスキップします。既存のジョブを更新する場合は、その YAML 構成をダウンロードします。

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. 次のように startupProbe 属性を構成します。

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB
    spec:
      template:
        metadata:
        spec:
          containers:
          - image: IMAGE_URL
            startupProbe:
              grpc:
                service: GRPC_SERVICE
                port: CONTAINER_PORT
              initialDelaySeconds: DELAY
              timeoutSeconds: TIMEOUT
              failureThreshold: THRESHOLD
              periodSeconds: PERIOD

    次の変数を置き換えます。

    • JOB: Cloud Run ジョブの名前。
    • IMAGE_URL は、ジョブ コンテナ イメージの URL に置き換えます(例: us-docker.pkg.dev/cloudrun/container/job:latest)。
    • 省略可: GRPC_SERVICE。設定されている場合、grpc.health.v1.Health.Check RPC が呼び出されると、grpc.health.v1.HealthCheckRequest の service フィールドで使用されます。
    • 省略可: CONTAINER_PORT は、ジョブコンテナがプローブをリッスンするポートに置き換えます。
    • 省略可。DELAY は、コンテナが開始された後、最初のプローブを実行するまでに待機する秒数に置き換えます。0 秒~240 秒の値を指定します。デフォルト値は 0 秒です。
    • 省略可: TIMEOUT は、プローブがタイムアウトするまでの待機時間(秒)に置き換えます。この値は、periodSeconds に指定された値を超えることはできません。1~240 の値を指定します。デフォルトは 1 です。
    • 省略可: THRESHOLD は、コンテナをシャットダウンする前にプローブを再試行する回数に置き換えます。デフォルト値は 3 です。
    • 省略可: PERIOD は、プローブを実行する期間(秒単位)に置き換えます。たとえば、2 秒ごとにプローブを実行する場合は 2 です。1 秒~240 秒の値を指定します。デフォルト値は 10 秒です。
  3. 次のコマンドを使用して、ジョブを作成または更新します。

    gcloud run jobs replace job.yaml

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

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

startupProbe:
  httpGet:
    path: /ready