為工作設定容器健康狀態檢查

啟動探測可讓您驗證容器是否已成功初始化,再於 Cloud Run 工作中執行工作負載。您可以為新工作和現有工作設定 HTTP、TCP 或 gRPC 探測,及早偵測啟動失敗情形。

用途

您可以設定啟動健康狀態檢查探測,判斷容器是否已啟動,並準備好執行工作。

如果工作無法啟動,Cloud Run 會限制工作重新啟動次數,避免發生不受控的當機迴圈。

探查需求和行為

探針類型 需求條件 行為
TCP 啟動 無 如果 Cloud Run 無法建立連線,表示啟動探查失敗。

如果啟動探查在指定時間間隔內未成功,Cloud Run 會關閉容器。這個時間間隔的計算方式為 failureThreshold * periodSeconds,且不得超過 600 秒 (GPU 為 1800 秒)。
HTTP 啟動 建立 HTTP 健康狀態檢查端點
使用 HTTP/1
設定探針後,Cloud Run 會對作業健康狀態檢查端點發出 HTTP GET 要求 (例如 /ready)。介於 200 和 400 之間的任何回應都表示成功,其他則表示失敗。

如果啟動探針在指定時間內 (failureThreshold * periodSeconds) 未成功,且時間超過 600 秒 (GPU 為 1800 秒),容器就會關閉
gRPC 啟動 在 Cloud Run 工作中實作 gRPC 健康狀態檢查通訊協定 如果啟動探測在指定時間 (failureThreshold * periodSeconds) 內未成功,且該時間不得超過 600 秒 (GPU 為 1800 秒),系統就會關閉容器

設定探測

使用 Cloud de Confiance 控制台或 YAML 設定 HTTP、TCP 和 gRPC 探測:

控制台

重要事項:如果您要為 HTTP 探查設定 Cloud Run 工作,也必須在工作程式碼中新增 HTTP 健康狀態檢查端點,以回應探查。如要設定 gRPC 探測,您也必須在 Cloud Run 工作中實作 gRPC 健康狀態檢查通訊協定。

  1. 前往 Cloud de Confiance by S3NS 控制台的 Cloud Run「Jobs」頁面:

    前往 Cloud Run。

  2. 如要建立新工作,請按一下「Deploy container」(部署容器)。如要查看現有工作,請按一下「工作」分頁標籤,然後依序點選所需工作和「查看及編輯工作設定」。

  3. 展開「容器、網路、安全性」。

  4. 在「Container(s)」(容器) 部分,前往「Health checks」(健康狀態檢查),然後按一下「Add health check」(新增健康狀態檢查),開啟「Add health check」(新增健康狀態檢查)設定面板。

  5. 在「選取健康狀態檢查類型」選單中,選取健康狀態檢查啟動類型。

  6. 從「選取探測類型」選單中,選取探測類型,例如 HTTP 或 gRPC。系統會顯示探針設定表單。

  7. 請注意,探針設定會因探針類型而異。設定探針:

    • 如果您使用 HTTP 探測:
      • 使用「Path」(路徑) 欄位指定端點的相對路徑,例如 /。
      • 選取「HTTP 標頭」核取方塊,指定選用的自訂標頭。然後在「Name」欄位中指定標頭名稱,並在「Value」欄位中指定標頭值。按一下「新增 HTTP 標頭」,指定更多標頭。
    • 在「Port」(通訊埠) 中,指定工作容器監聽探查的通訊埠。
    • 在「初始延遲」中,指定容器啟動後要等待幾秒,才會執行第一次探測。指定 0 秒到 600 秒之間的值 (GPU 為 1800 秒)。預設值為 0 秒。
    • 在「Period」(週期) 中,指定執行探測作業的時間間隔 (以秒為單位)。例如 2 可每隔 2 秒執行一次探查。指定 1 秒到 600 秒之間的值 (GPU 為 1800 秒)。預設值為 10 秒。
    • 在「Failure threshold」(失敗門檻),指定關閉容器前要重試探測的次數。預設值為 3。
    • 在「Timeout」(逾時),指定探測逾時前的等待秒數。這個值不得超過為 periodSeconds 指定的值。指定介於 1 到 600 之間的值 (GPU 為 1800)。預設值為 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,例如 us-docker.pkg.dev/cloudrun/container/job:latest。
    • 選用:CONTAINER_PORT,其中包含作業容器監聽探測作業的通訊埠。
    • DELAY,並輸入容器啟動後到執行第一項探測作業之前,這段時間間隔的秒數。指定介於 0 秒至 600 秒之間的值 (GPU 為 1800 秒)。預設值為 0 秒。
    • 選填:TIMEOUT,探測作業逾時前等待的秒數。這個值不得超過為 periodSeconds 指定的值。 指定介於 1 到 600 之間的值 (GPU 為 1800)。預設值為 1。
    • THRESHOLD,在關閉容器前重新嘗試探測的次數。預設值為 3。
    • PERIOD,並指定執行探測的週期 (以秒為單位)。例如 2 可每隔 2 秒執行一次探查。指定介於 1 秒到 600 秒之間的值 (GPU 為 1800 秒)。預設值為 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,例如 us-docker.pkg.dev/cloudrun/container/job:latest。
    • PATH,並加上 HTTP 端點的相對路徑,例如 /ready。
    • 選用:CONTAINER_PORT,其中包含作業容器監聽探測作業的通訊埠。
    • 選用:如圖所示,您可以使用 httpHeaders,透過 HEADER_NAME 和 HEADER_VALUE 欄位提供多個或重複的自訂標頭。
    • 選用:DELAY,代表容器啟動後,要過多久才執行第一次探測。指定 0 秒到 600 秒之間的值 (GPU 為 1800 秒)。預設值為 0 秒。
    • 選填:TIMEOUT,探測作業逾時前等待的秒數。這個值不得超過為 periodSeconds 指定的值。 指定介於 1 到 600 之間的值 (GPU 為 1800)。預設值為 1。
    • (選用) THRESHOLD,表示在關閉容器前重新嘗試探測的次數。預設值為 3。
    • 選用:PERIOD,以秒為單位,指定執行探查的週期。 例如 2 可每隔 2 秒執行一次探查。指定介於 1 秒到 600 秒之間的值 (GPU 為 1800 秒)。預設值為 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,例如 us-docker.pkg.dev/cloudrun/container/job:latest。
    • 選填:GRPC_SERVICE。如果已設定,系統會在呼叫 grpc.health.v1.Health.Check RPC 時,將這個值用於 grpc.health.v1.HealthCheckRequest 的服務欄位。
    • 選用:CONTAINER_PORT,其中包含作業容器監聽探測作業的通訊埠。
    • 選用:DELAY,代表容器啟動後,要過多久才執行第一次探測。指定 0 秒到 600 秒之間的值 (GPU 為 1800 秒)。預設值為 0 秒。
    • 選填:TIMEOUT,探測作業逾時前等待的秒數。這個值不得超過為 periodSeconds 指定的值。指定介於 1 到 600 之間的值 (GPU 為 1800)。預設值為 1。
    • 選用:THRESHOLD,重新嘗試探測的次數,之後會關閉容器。預設值為 3。
    • 選用:PERIOD,以秒為單位,指定執行探查的週期。 例如 2 可每隔 2 秒執行一次探查。指定介於 1 秒到 600 秒之間的值 (GPU 為 1800 秒)。預設值為 10 秒。
  3. 使用下列指令建立或更新作業:

    gcloud run jobs replace job.yaml

建立 HTTP 健康狀態檢查端點

如果為 Cloud Run 工作設定 HTTP 啟動探查,您必須在工作程式碼中新增端點,以回應探查。端點可以使用任何名稱,例如 /startup 或 /ready。這個名稱必須與探測設定中為 path 指定的值相符。舉例來說,如果您為 HTTP 啟動探查指定 /ready,請在探查設定中指定 path,如下所示:

startupProbe:
  httpGet:
    path: /ready