コンテナのヘルスチェック(サービス)

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

新規または既存の Cloud Run サービスに対して HTTP および TCP 起動ヘルスチェック プローブを構成できます。

起動プローブを使用して、コンテナが起動し、トラフィックを受け入れる準備ができたときを特定できます。

起動プローブを構成する

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

次のタイプのプローブを構成できます。

  • HTTP 起動プローブ
  • TCP 起動プローブ

YAML ファイルを使用して、Cloud Run サービスの起動プローブを構成します。構成は、プローブの種類によって異なります。

HTTP 起動プローブを構成する

HTTP にはデフォルトの HTTP 起動プローブはありませんが、Cloud Run サービス用に構成できます。HTTP ヘルスチェック プローブを使用するには、サービスに対して対応する HTTP ヘルスチェック エンドポイントを作成してプローブに応答する必要があります。

起動プローブが構成されると、Cloud Run はサービス ヘルスチェック エンドポイント(たとえば、/ready)に HTTP GET リクエストを送信します。200400 の間のすべてのレスポンスは成功であり、他のすべてのレスポンスは失敗を示します。

起動プローブが指定された時間(failureThreshold * periodSeconds)内で失敗し、240 秒を超えると、コンテナはシャットダウンされます。

HTTP 起動プローブは、既存のサービスの場合は Google Cloud コンソールを使用し、新規または既存のサービスの場合は YAML を使用して構成します。

Console

  1. Cloud Run に移動します

  2. 構成するサービスをクリックします。

  3. [YAML] タブをクリックします。

  4. [編集] をクリックし、次のように startupProbe 属性を構成します。

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
    name: SERVICE
    spec:
    template:
    metadata:
    spec:
      containers:
        image: IMAGE_URL
        startupProbe:
          httpGet:
            path: PATH
            httpHeaders:
              - name: HEADER_NAME
                value: HEADER_VALUE
          initialDelaySeconds: DELAY
          timeoutSeconds: TIMEOUT
          failureThreshold: THRESHOLD
          periodSeconds: PERIOD
    

    replace

    • SERVICE は、Cloud Run サービスの名前に置き換えます。
    • IMAGE_URL は、コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/hello:latest など)で置き換えます。
    • PATH は、HTTP エンドポイントの相対パスで置き換えます(例: /ready)。
    • (省略可)httpHeaders を使用すると、次のように HEADER_NAME フィールドと HEADER_VALUE フィールドを使用して複数または繰り返しのカスタム ヘッダーを指定できます。
    • (省略可)DELAY は、コンテナが開始された後、最初のプローブを実行するまでに待機する秒数に置き換えます。0 秒~ 240 秒の値を指定します。 デフォルト値は 0 秒です。
    • (省略可)TIMEOUT は、プローブがタイムアウトするまで待機する秒数に置き換えます。この値は、periodSeconds に指定された値を超えることはできません。 0 ~ 3600 の値を指定します。 デフォルトは 1 です。
    • (省略可)THRESHOLD は、コンテナを未準備とマークする前にプローブを再試行する回数に置き換えます。デフォルト値は 3 です。
    • (省略可)PERIOD は、プローブを実行する頻度(秒)に置き換えます。1 秒~ 240 秒の値を指定します。デフォルト値は 10 秒です。
  5. [新しいリビジョンを保存してデプロイ] をクリックします。

YAML

既存のサービス構成をダウンロードして表示するには、gcloud run services describe --format export コマンドを使用します。読みやすく整えられた結果が YAML 形式で出力されます。次に、下記の手順に沿ってフィールドを変更し、gcloud run services replace コマンドを使用して変更後の YAML ファイルをアップロードします。必ず説明されているとおりにフィールドを変更してください。

  1. 次のコマンドで、構成を表示してダウンロードします。

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

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
        spec:
          containers:
          - image: IMAGE_URL
            startupProbe:
              httpGet:
                path: PATH
                httpHeaders:
                  - name: HEADER_NAME
                    value: HEADER_VALUE
              initialDelaySeconds: DELAY
              timeoutSeconds: TIMEOUT
              failureThreshold: THRESHOLD
              periodSeconds: PERIOD
    

    replace

    • SERVICE は、Cloud Run サービスの名前に置き換えます。
    • IMAGE_URL は、コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/hello:latest など)で置き換えます。
    • PATH は、HTTP エンドポイントへの相対パスで置き換えます(例: /ready)。
    • (省略可)httpHeaders を使用すると、次のように HEADER_NAME フィールドと HEADER_VALUE フィールドを使用して複数または繰り返しのカスタム ヘッダーを指定できます。
    • (省略可)DELAY は、コンテナが開始された後、最初のプローブを実行するまでに待機する秒数に置き換えます。0 秒~ 240 秒の値を指定します。 デフォルト値は 0 秒です。
    • (省略可)TIMEOUT は、プローブがタイムアウトするまで待機する秒数に置き換えます。この値は、periodSeconds に指定された値を超えることはできません。 0 ~ 3600 の値を指定します。 デフォルトは 1 です。
    • (省略可)THRESHOLD は、コンテナを未準備とマークする前にプローブを再試行する回数に置き換えます。デフォルト値は 3 です。
    • (省略可)PERIOD は、プローブを実行する頻度(秒)に置き換えます。1 秒~ 240 秒の値を指定します。デフォルト値は 10 秒です。
  3. 次のコマンドを使用して、サービスを新しい構成に置き換えます。

    gcloud run services replace service.yaml

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

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

startupProbe:
  httpGet:
    path: /ready

TCP 起動プローブを構成する

起動プローブを自分で構成しない場合、TCP 起動プローブは新しい Cloud Run サービスのデフォルト値を使用して自動的に構成されます。 デフォルトのプローブは次のものと同等です。

startupProbe:
  tcpSocket:
    port: CONTAINER_PORT
  timeoutSeconds: 240
  periodSeconds: 240
  failureThreshold: 1

ここで、port はすでにコンテナポートに設定されています。プローブ構成の更新時に設定しようとしても、コンテナポートに設定されたままになります。

これらのデフォルト値は、このセクションの手順に従って変更できます。

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

起動プローブが指定された時間(failureThreshold * periodSeconds)内で失敗し、240 秒を超えると、コンテナはシャットダウンされます。

TCP 起動プローブは、既存のサービスの場合は Google Cloud コンソールを使用し、新規または既存のサービスの場合は YAML を使用して構成します。

Console

  1. Cloud Run に移動します

  2. 構成するサービスをクリックします。

  3. [YAML] タブをクリックします。

  4. [編集] をクリックし、次のように 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
            failureThreshold: THRESHOLD
            periodSeconds: PERIOD
    

    replace

    • SERVICE は、Cloud Run サービスの名前に置き換えます。
    • IMAGE_URL は、コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/hello:latest など)で置き換えます。
    • CONTAINER_PORT はすでにコンテナポートに設定されています。プローブを更新する際にコンテナ ポートを設定しようとしても、コンテナポートに設定されたままになります。
    • DELAY は、コンテナが起動してから最初のプローブを実行する前に待機する秒数に置き換えます。0 秒~ 240 秒の値を指定します。 デフォルト値は 0 秒です。
    • THRESHOLD は、コンテナを未準備とマークする前にプローブを再試行する回数に置き換えます。デフォルト値は 3 です。
    • PERIOD は、プローブを実行する頻度(秒)に置き換えます。1 秒~ 240 秒の値を指定します。デフォルト値は 10 秒です。
  5. [新しいリビジョンを保存してデプロイ] をクリックします。

YAML

既存のサービス構成をダウンロードして表示するには、gcloud run services describe --format export コマンドを使用します。読みやすく整えられた結果が YAML 形式で出力されます。次に、下記の手順に沿ってフィールドを変更し、gcloud run services replace コマンドを使用して変更後の YAML ファイルをアップロードします。必ず説明されているとおりにフィールドを変更してください。

  1. 次のコマンドで、構成を表示してダウンロードします。

    gcloud run services describe SERVICE --format export > service.yaml
  2. 次のように 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
              failureThreshold: THRESHOLD
              periodSeconds: PERIOD
                

    replace

    • SERVICE は、Cloud Run サービスの名前に置き換えます。
    • IMAGE_URL は、コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/hello:latest など)で置き換えます。
    • CONTAINER_PORT はコンテナポートにすでに設定されています。この値は変更しないでください。
    • DELAY は、コンテナが起動してから最初のプローブを実行する前に待機する秒数に置き換えます。0 秒~ 240 秒の値を指定します。 デフォルト値は 0 秒です。
    • THRESHOLD は、コンテナを未準備とマークする前にプローブを再試行する回数に置き換えます。デフォルト値は 3 です。
    • PERIOD は、プローブを実行する頻度(秒)に置き換えます。1 秒~ 240 秒の値を指定します。 デフォルト値は 10 秒です。
  3. 次のコマンドを使用して、サービスを新しい構成に置き換えます。

    gcloud run services replace service.yaml