為服務設定容器健康狀態檢查

Cloud Run 健康狀態檢查可確保容器執行個體正常運作,並能處理流量。您可以透過 Cloud Run 健康狀態檢查,自訂容器何時準備好接收要求,以及何時應視為健康狀態不佳,需要重新啟動。

用途

您可以設定下列類型的健康狀態檢查探測:

  • 啟動探測會判斷容器是否已啟動,並準備好接受流量。

    • 設定啟動探測時,系統會停用 liveness 和 readiness 檢查,直到啟動探測判定容器已啟動,以免干擾服務啟動。
    • 如果您對啟動速度緩慢的容器執行有效性檢查,啟動探測特別實用,因為啟動探測可防止容器在啟動並執行前過早關閉。
  • liveness 探測會判斷是否要重新啟動容器。

    • 在這種情況下,重新啟動容器可以提高服務可用性,避免發生錯誤。
    • liveness 探測作業旨在重新啟動無法以任何其他方式復原的個別執行個體。這類探針主要用於無法復原的執行個體故障,例如偵測到服務正在執行,但無法繼續執行的死結。您可以使用自訂組織政策,要求每個容器都必須進行存活探測。
    • 如果服務反覆發生探測失敗,Cloud Run 會限制執行個體重新啟動,避免發生無法控制的當機迴圈。
  • readiness 探測

    Readiness 探測會判斷 Cloud Run 服務中的執行個體何時應處理流量。容器的啟動探測成功通過後,就會開始進行就緒檢查。如果執行個體未通過 readiness 探測,且失敗次數超過您設定的門檻,Cloud Run 就會停止將新流量傳送至該執行個體。Cloud Run 不會終止執行個體,並會在執行個體再次通過 readiness 探測時,將流量傳回執行個體。

容器必須以一致的方式實作啟動、liveness 和 readiness 探測。通過啟動檢查後,Cloud Run 就會判定容器已準備好處理流量。

建議您封裝邏輯,讓啟動探測器考量就緒狀態。Cloud Run 可以在第一個就緒探測完成前,將流量轉送至新執行個體,因此請務必確認通過啟動探測,也代表已準備好立即安全地提供流量。啟動探測成功後,系統會將容器視為準備好接收流量。

設定啟動探測

任何設定變更都會建立新的修訂版本。後續修訂版本也會自動套用這項設定,除非您明確變更。

您可以使用 Google Cloud 控制台、YAML 或 Terraform 設定 HTTP、TCP 和 gRPC 探測:

控制台

  1. 前往 Google Cloud 控制台的「Cloud Run」頁面:

    前往 Cloud Run。

  2. 從 Cloud Run 導覽選單中選取「Services」(服務):

    1. 如要設定新服務,請按一下「Deploy container」(部署容器),然後填寫初始服務設定頁面。然後按一下「容器、網路、安全性」,展開服務設定頁面。

    2. 如要設定現有服務,請按一下該服務,然後按一下「Containers」(容器) 分頁標籤。

  3. 在「Health checks」(健康狀態檢查) 區段中,按一下「Add health check」(新增健康狀態檢查),開啟「Add health check」(新增健康狀態檢查) 設定面板。

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

  5. 從「Select probe type」(選取探測類型) 選單中,選取要使用的探測類型,例如 HTTP 或 gRPC。系統會顯示探測設定表單。探測設定會因探測類型而異。設定探測設定:

    • 如果您使用 HTTP 探測:

      • 在服務程式碼中新增 HTTP/1 端點 (Cloud Run 預設,而非 HTTP/2),以回應探測。端點名稱 (例如 /startup、/health 或 /are_you_ready) 必須與探測設定中的 path 相符。HTTP 健康狀態檢查端點可從外部存取,並遵循與其他任何外部公開 HTTP 服務端點相同的原則。
      • 使用「Path」(路徑) 欄位指定端點的相對路徑,例如 /。
      • 勾選「HTTP Headers」(HTTP 標頭) 核取方塊,指定選用的自訂標頭。在「Name」欄位中指定標頭名稱,並在「Value」欄位中指定標頭值。按一下「Add HTTP header」(新增 HTTP 標頭),指定更多標頭。
    • 如果您使用 gRPC 探測:

    • 在「Port」(通訊埠) 部分,指定服務使用的容器通訊埠。

    • 在「Initial delay」(初始延遲) 部分,指定容器啟動後,要等待幾秒才執行第一次探測。指定 0 秒到 600 秒之間的值 (GPU 為 1800 秒)。預設值為 0 秒。

    • 在「Period」(週期) 部分,指定執行探測的週期 (以秒為單位)。例如 2,每 2 秒執行一次探測。指定 1 秒到 600 秒之間的值 (GPU 為 1800 秒)。預設值為 10 秒。

    • 在「Failure threshold」(失敗門檻),指定關閉容器前重新嘗試探測的次數。預設值為 3。

    • 在「Timeout」(逾時) 部分,指定探測作業逾時前的等待秒數。這個值不得超過為 periodSeconds 指定的值。請指定 1 到 600 之間的值 (GPU 則為 1800)。預設值為 1。

  6. 按一下「新增」,即可新增門檻。

  7. 按一下「建立」,建立新服務。依序點選「查看差異並重新部署」和「部署變更」,即可更新現有服務。

如要刪除探測,請按一下要刪除的健康狀態檢查的「Delete」(刪除) 圖示,然後按一下「Confirm」(確認)。如要部署 Cloud Run 服務的新修訂版本,請依序點選「View diff & redeploy」(查看差異並重新部署) 和「Deploy changes」(部署變更)。

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。網址格式為 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG。
  • 選用。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 秒。

HTTP 啟動

在服務程式碼中新增 HTTP/1 端點 (Cloud Run 預設,而非 HTTP/2),以回應探測。端點名稱 (例如 /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。網址格式為 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG。
  • PATH:HTTP 端點的相對路徑,例如 /health。
  • 選用。CONTAINER_PORT:設為服務使用的容器通訊埠。
  • 選用。DELAY:容器啟動後,要等待多久才執行第一次探測 (以秒為單位)。指定 0 秒到 600 秒之間的值 (GPU 為 1800 秒)。預設值為 0 秒。
  • 選用。THRESHOLD:關閉容器前,重新嘗試探測的次數。預設值為 3。
  • 選用。TIMEOUT:探測作業逾時前等待的秒數。這個值不得超過為 periodSeconds 指定的值。請指定 1 到 600 之間的值 (GPU 則為 1800)。預設值為 1。
  • 選用。PERIOD:執行探測的時間週期 (以秒為單位)。例如 2,每 2 秒執行一次探測。請指定 1 秒到 600 秒之間的值 (GPU 為 1800 秒)。預設值為 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。網址格式為 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG。
  • 選用。GRPC_SERVICE:如果設定,則在呼叫 grpc.health.v1.Health.Check RPC 時,這會用於 grpc.health.v1.HealthCheckRequest 的服務欄位。
  • 選用。CONTAINER_PORT:服務使用的容器通訊埠。
  • 選用。DELAY:容器啟動後,要等待多久才執行第一次探測 (以秒為單位)。指定 0 秒到 600 秒之間的值 (GPU 為 1800 秒)。預設值為 0 秒。
  • 選用。THRESHOLD:關閉容器前,重新嘗試探測的次數。預設值為 3。
  • 選用。TIMEOUT:探測作業逾時前等待的秒數。這個值不得超過為 periodSeconds 指定的值。請指定 1 到 600 之間的值 (GPU 則為 1800)。預設值為 1。
  • 選用。PERIOD:執行探測的時間間隔 (以秒為單位)。例如 2,每 2 秒執行一次探測。請指定 1 秒到 600 秒之間的值 (GPU 為 1800 秒)。預設值為 10 秒。

YAML

TCP 啟動

  1. 按照以下方式設定 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。網址格式為 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG。
    • 選用。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 秒。

HTTP 啟動

在服務程式碼中新增 HTTP/1 端點 (Cloud Run 預設,而非 HTTP/2),以回應探測。端點名稱 (例如 /startup、/health 或 /are_you_ready) 必須與探測設定中的 path 相符。HTTP 健康狀態檢查端點可從外部存取,並遵循與其他任何外部公開 HTTP 服務端點相同的原則。

  1. 按照以下方式設定 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。網址格式為 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG。
    • PATH:HTTP 端點的相對路徑,例如 /health。
    • 選用。CONTAINER_PORT:設為服務使用的容器通訊埠。
    • 選用。DELAY:容器啟動後,要等待多久才執行第一次探測 (以秒為單位)。指定 0 秒到 600 秒之間的值 (GPU 為 1800 秒)。預設值為 0 秒。
    • 選用。THRESHOLD:關閉容器前,重新嘗試探測的次數。預設值為 3。
    • 選用:httpHeaders 可用於提供多個或重複的自訂標頭,方法是使用 HEADER_NAME 和 HEADER_VALUE 欄位,如圖所示。
    • 選用。TIMEOUT:探測作業逾時前等待的秒數。這個值不得超過為 periodSeconds 指定的值。請指定 1 到 600 之間的值 (GPU 則為 1800)。預設值為 1。
    • 選用。PERIOD:執行探測的時間週期 (以秒為單位)。例如 2,每 2 秒執行一次探測。請指定 1 秒到 600 秒之間的值 (GPU 為 1800 秒)。預設值為 10 秒。

gRPC 啟動

請確認容器映像檔會實作 gRPC 健康狀態檢查通訊協定。

  1. 按照以下方式設定 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。網址格式為 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG。
    • 選用。GRPC_SERVICE:如果設定,則在呼叫 grpc.health.v1.Health.Check RPC 時,這會用於 grpc.health.v1.HealthCheckRequest 的服務欄位。
    • 選用。CONTAINER_PORT:服務使用的容器通訊埠。
    • 選用。DELAY:容器啟動後,要等待多久才執行第一次探測 (以秒為單位)。指定 0 秒到 600 秒之間的值 (GPU 為 1800 秒)。預設值為 0 秒。
    • 選用。THRESHOLD:關閉容器前,重新嘗試探測的次數。預設值為 3。
    • 選用。TIMEOUT:探測作業逾時前等待的秒數。這個值不得超過為 periodSeconds 指定的值。請指定 1 到 600 之間的值 (GPU 則為 1800)。預設值為 1。
    • 選用。PERIOD:執行探測的時間間隔 (以秒為單位)。例如 2,每 2 秒執行一次探測。請指定 1 秒到 600 秒之間的值 (GPU 為 1800 秒)。預設值為 10 秒。

Terraform

如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。

TCP 啟動

使用 startup_probe 屬性設定 Cloud Run 服務,如下所示:

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-healthcheck"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"

      startup_probe {
        failure_threshold     = 5
        initial_delay_seconds = 10
        timeout_seconds       = 3
        period_seconds        = 3

        tcp_socket {
          port = 8080
        }
      }
    }
  }
}

HTTP 啟動

在服務程式碼中新增 HTTP/1 端點 (Cloud Run 預設,而非 HTTP/2),以回應探測。端點名稱 (例如 /startup、/health 或 /are_you_ready) 必須與探測設定中的 path 相符。HTTP 健康狀態檢查端點可從外部存取,並遵循與其他任何外部公開 HTTP 服務端點相同的原則。

使用 startup_probe 屬性設定 Cloud Run 服務,如下所示:

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-healthcheck"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"

      startup_probe {
        failure_threshold     = 5
        initial_delay_seconds = 10
        timeout_seconds       = 3
        period_seconds        = 3

        http_get {
          path = "/"
          # Custom headers to set in the request
          # https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/cloud_run_v2_service#http_headers
          http_headers {
            name  = "Access-Control-Allow-Origin"
            value = "*"
          }
        }
      }
    }
  }
}

gRPC 啟動

請確認容器映像檔會實作 gRPC 健康狀態檢查通訊協定。

使用 startup_probe 屬性設定 Cloud Run 服務,如下所示:

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-healthcheck"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      # Note: Change to the name of your image
      image = "us-docker.pkg.dev/cloudrun/container/hello"

      startup_probe {
        failure_threshold     = 5
        initial_delay_seconds = 10
        timeout_seconds       = 3
        period_seconds        = 3

        grpc {
          # Note: Change to the name of your pre-existing grpc health status service
          service = "grpc.health.v1.Health"
        }
      }
    }
  }
}

預設 TCP 啟動探測

如果您未明確為新的 Cloud Run 服務設定 TCP 啟動探測,Cloud Run 會自動設定 TCP 啟動探測,並採用下列預設值:

startupProbe:
          timeoutSeconds: 240
          periodSeconds: 240
          failureThreshold: 1

如要變更這些預設值,請按照本頁「探測設定」一節的指示操作。

啟動探測需求和行為

探測類型 需求條件 行為
TCP 啟動 無 根據預設,Cloud Run 會建立 TCP 連線,在指定通訊埠開啟 TCP 通訊端。如果 Cloud Run 無法建立連線,則會判定為失敗。

如果啟動探測未在指定時間內成功 (failureThreshold * periodSeconds),容器就會關閉。指定時間不得超過 600 秒 (GPU 為 1800 秒)。另請參閱「TCP 預設值」。
HTTP 啟動 建立 HTTP 健康狀態檢查端點
使用 HTTP/1
設定探測後,Cloud Run 會向健康狀態檢查端點 (例如 /health) 發出 HTTP GET 要求。任何 2XX 或 3XX 回應都代表成功,其他回應則代表失敗。

如果啟動探測未在指定時間 (failureThreshold * periodSeconds) 內成功,容器就會關閉。指定時間不得超過 600 秒 (GPU 為 1800 秒)。

如果 HTTP 啟動探測在指定時間內成功,且您已設定 HTTP 存活探測,則 HTTP 存活探測會啟動。
gRPC 啟動 在 Cloud Run 服務中實作 gRPC 健康狀態檢查通訊協定 如果啟動探測未在指定時間內成功 (failureThreshold * periodSeconds),容器就會關閉。指定時間不得超過 600 秒 (GPU 為 1800 秒)。

設定 liveness 探測

任何設定變更都會建立新的修訂版本。後續修訂版本也會自動套用這項設定,除非您明確變更。

您可以使用 Google Cloud 控制台、YAML 或 Terraform 設定 HTTP 和 gRPC 探測:

控制台

  1. 前往 Google Cloud 控制台的「Cloud Run」頁面:

    前往 Cloud Run。

  2. 從 Cloud Run 導覽選單中選取「Services」(服務):

    1. 如要設定新服務,請按一下「Deploy container」(部署容器),然後填寫初始服務設定頁面。然後按一下「容器、網路、安全性」,展開服務設定頁面。

    2. 如要設定現有服務,請按一下該服務,然後按一下「Containers」(容器) 分頁標籤。

  3. 在「Health checks」(健康狀態檢查) 區段中,按一下「Add health check」(新增健康狀態檢查),開啟「Add health check」(新增健康狀態檢查) 設定面板。

  4. 在「Select health check type」(選取健康狀態檢查類型) 選單中,選取「Liveness check」(運作狀態檢查)。

  5. 在「Select probe type」(選取探測類型) 選單中,選取要使用的探測類型,例如 HTTP 或 gRPC。探測設定表單隨即顯示。

  6. 探測設定因探測類型而異。設定探測設定:

    • 如果您使用 HTTP 探測:

      • 在服務程式碼中新增 HTTP/1 端點 (Cloud Run 預設,而非 HTTP/2),以回應探測。端點名稱 (例如 /startup、/health 或 /are_you_ready) 必須與探測設定中的 path 相符。HTTP 健康狀態檢查端點可從外部存取,並遵循與其他任何外部公開 HTTP 服務端點相同的原則。
      • 使用「Path」(路徑) 欄位指定端點的相對路徑,例如 /。
      • 勾選「HTTP Headers」(HTTP 標頭) 核取方塊,指定選用的自訂標頭。在「Name」(名稱) 欄位中指定標頭名稱,並在「Value」(值) 欄位中指定標頭值。按一下「Add HTTP header」(新增 HTTP 標頭),指定更多標頭。
    • 如果您使用 gRPC 探測:

    • 在「Port」(通訊埠) 部分,指定服務使用的容器通訊埠。

    • 在「Initial delay」(初始延遲) 部分,指定容器啟動後,要等待幾秒才執行第一次探測。指定 0 秒到 600 秒之間的值 (GPU 為 1800 秒)。預設值為 0 秒。

    • 在「Period」(週期) 部分,指定執行探測的週期 (以秒為單位)。例如 2,每 2 秒執行一次探測。請指定 1 秒到 3600 秒之間的值。預設值為 10 秒。

    • 在「Failure threshold」(失敗門檻),指定關閉容器前重新嘗試探測的次數。預設值為 3。

    • 在「Timeout」(逾時),指定探測逾時前的等待秒數。這個值不得超過為 periodSeconds 指定的值。請指定 1 到 3600 之間的值。預設值為 1。

  7. 按一下「新增」,即可新增門檻。

  8. 按一下「建立」,建立新服務。依序點選「查看差異並重新部署」和「部署變更」,即可更新現有服務。

如要刪除探測,請按一下要刪除的健康狀態檢查的「Delete」(刪除) 圖示,然後按一下「Confirm」(確認)。如要部署 Cloud Run 服務的新修訂版本,請依序點選「View diff & redeploy」(查看差異並重新部署) 和「Deploy changes」(部署變更)。

gcloud

HTTP 活躍度

在服務程式碼中新增 HTTP/1 端點 (Cloud Run 預設,而非 HTTP/2),以回應探測。端點名稱 (例如 /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。網址格式為 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG。
  • PATH:HTTP 端點的相對路徑,例如 /health。
  • 選用。CONTAINER_PORT:設為服務使用的容器通訊埠。
  • 選用。DELAY:容器啟動後,要等待幾秒才執行第一次探測。指定介於 0 秒至 600 秒 (GPU 為 1800 秒) 的值。預設值為 0 秒。
  • 選用。THRESHOLD:關閉容器前,重新嘗試探測的次數。預設值為 3。
  • 選用。TIMEOUT:探測作業逾時前等待的秒數。這個值不得超過為 periodSeconds 指定的值。請指定 1 到 3600 之間的值,預設值為 1。
  • 選用。PERIOD:執行探測的時間間隔 (以秒為單位)。例如 2,每 2 秒執行一次探測。請指定 1 秒到 3600 秒之間的值。預設值為 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。網址格式為 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG。
  • 選用。GRPC_SERVICE:如果設定,則在呼叫 grpc.health.v1.Health.Check RPC 時,這會用於 grpc.health.v1.HealthCheckRequest 的服務欄位。
  • 選用。CONTAINER_PORT:服務使用的容器通訊埠。
  • 選用。DELAY:容器啟動後,要等待多久才執行第一次探測 (以秒為單位)。指定介於 0 秒至 600 秒 (GPU 為 1800 秒) 的值。預設值為 0 秒。
  • 選用。THRESHOLD:關閉容器前,重新嘗試探測的次數。預設值為 3。
  • 選用。TIMEOUT:探測作業逾時前等待的秒數。這個值不得超過為 periodSeconds 指定的值。請指定 1 到 3600 之間的值,預設值為 1。
  • 選用。PERIOD:執行探測的時間間隔 (以秒為單位)。例如 2,每 2 秒執行一次探測。請指定 1 秒到 3600 秒之間的值。預設值為 10 秒。

YAML

HTTP 活躍度

在服務程式碼中新增 HTTP/1 端點 (Cloud Run 預設,而非 HTTP/2),以回應探測。端點名稱 (例如 /startup、/health 或 /are_you_ready) 必須與探測設定中的 path 相符。HTTP 健康狀態檢查端點可從外部存取,並遵循與其他任何外部公開 HTTP 服務端點相同的原則。

  1. 按照以下方式設定 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。網址格式為 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG。
    • PATH:HTTP 端點的相對路徑,例如 /health。
    • 選用。CONTAINER_PORT:設為服務使用的容器通訊埠。
    • 選用。DELAY:容器啟動後,要等待多久才執行第一次探測 (以秒為單位)。指定 0 秒到 600 秒之間的值 (GPU 為 1800 秒)。預設值為 0 秒。
    • 選用。THRESHOLD:關閉容器前,重新嘗試探測的次數。預設值為 3。
    • 選用:httpHeaders 可用於提供多個或重複的自訂標頭,方法是使用 HEADER_NAME 和 HEADER_VALUE 欄位,如圖所示。
    • 選用。TIMEOUT:探測作業逾時前等待的秒數。這個值不得超過為 periodSeconds 指定的值。請指定 1 到 3600 之間的值,預設值為 1。
    • 選用。PERIOD:執行探測的時間間隔 (以秒為單位)。例如 2,每 2 秒執行一次探測。請指定 1 秒到 3600 秒之間的值。預設值為 10 秒。

gRPC 存活

請確認容器映像檔會實作 gRPC 健康狀態檢查通訊協定。

  1. 按照下圖所示設定 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。網址格式為 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG。
    • 選用。GRPC_SERVICE:如果設定,則在呼叫 grpc.health.v1.Health.Check RPC 時,這會用於 grpc.health.v1.HealthCheckRequest 的服務欄位。
    • 選用。CONTAINER_PORT:服務使用的容器通訊埠。
    • 選用。DELAY:容器啟動後,要等待幾秒才執行第一次探測。指定 0 秒到 600 秒之間的值 (GPU 為 1800 秒)。預設值為 0 秒。
    • 選用。THRESHOLD:關閉容器前,重新嘗試探測的次數。預設值為 3。
    • 選用。TIMEOUT:探測作業逾時前等待的秒數。這個值不得超過為 periodSeconds 指定的值。請指定 1 到 3600 之間的值,預設值為 1。
    • 選用。PERIOD:執行探測的時間間隔 (以秒為單位)。例如 2,每 2 秒執行一次探測。請指定 1 秒到 3600 秒之間的值。預設值為 10 秒。

Terraform

如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。

HTTP 存活

在服務程式碼中新增 HTTP/1 端點 (Cloud Run 預設,而非 HTTP/2),以回應探測。端點名稱 (例如 /startup、/health 或 /are_you_ready) 必須與探測設定中的 path 相符。HTTP 健康狀態檢查端點可從外部存取,並遵循與其他任何外部公開 HTTP 服務端點相同的原則。

使用 liveness_probe 屬性設定 Cloud Run 服務,如下所示:

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-healthcheck"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"

      liveness_probe {
        failure_threshold     = 5
        initial_delay_seconds = 10
        timeout_seconds       = 3
        period_seconds        = 3

        http_get {
          path = "/"
          # Custom headers to set in the request
          # https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/cloud_run_v2_service#http_headers
          http_headers {
            name  = "Access-Control-Allow-Origin"
            value = "*"
          }
        }
      }
    }
  }
}

gRPC 存活

請確認容器映像檔會實作 gRPC 健康狀態檢查通訊協定。

使用 liveness_probe 屬性設定 Cloud Run 服務,如下所示:

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-healthcheck"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      # Note: Change to the name of your image
      image = "us-docker.pkg.dev/cloudrun/container/hello"

      liveness_probe {
        failure_threshold     = 5
        initial_delay_seconds = 10
        timeout_seconds       = 3
        period_seconds        = 3

        # Note: Change to the name of your pre-existing grpc health status service
        grpc {
          service = "grpc.health.v1.Health"
        }
      }
    }
  }
}

Liveness 探測需求和行為

探測類型 需求條件 行為
HTTP 活躍度 建立 HTTP 健康狀態檢查端點
使用 HTTP/1
啟動探測成功後,才會開始執行存活探測。設定探測後,只要有任何啟動探測成功,Cloud Run 就會向健康狀態檢查端點 (例如 /health) 發出 HTTP GET 要求。任何 2XX 或 3XX 回應都代表成功,其他回應則代表失敗。

如果存活狀態探測未在指定時間 (failureThreshold * periodSeconds) 內成功,系統會使用 SIGKILL 信號關閉容器。容器仍在處理的任何剩餘要求都會終止,並傳回 HTTP 狀態碼 503。容器關閉後,Cloud Run 自動調度資源功能會啟動新的容器執行個體。
gRPC 存活 在 Cloud Run 服務中實作 gRPC 健康狀態檢查通訊協定 如果您設定 gRPC 啟動探測,liveness 探測會在啟動探測成功後才開始。

設定 liveness 探測且啟動探測成功後,Cloud Run 會向服務發出健康狀態檢查要求。

如果 liveness 探測未在指定時間 (failureThreshold * periodSeconds) 內成功,容器會使用 SIGKILL 信號關閉。容器關閉後,Cloud Run 自動調度資源功能會啟動新的容器執行個體。

設定 readiness 探測

任何設定變更都會建立新的修訂版本。後續修訂版本也會自動套用這項設定,除非您明確變更。

readiness 探測有下列限制:

  • 如果啟用工作階段相依性,即使執行個體的 readiness 檢查失敗,Cloud Run 仍會繼續將要求傳送至該執行個體。

  • 如果您在 2025 年 11 月前,使用 Cloud Run Admin API v1 為 Cloud Run 服務設定了 readiness 探測,即使您為該服務部署新設定,readiness 檢查也不會生效。這是因為服務保留了舊設定。2025 年 11 月後建立的服務,或從未使用就緒探測的服務,則不受影響。如要在受影響的服務上啟用支援的就緒探測,請按照下列步驟操作:

    1. 部署新的修訂版本,移除舊的 readiness 探測定義。

    2. 部署另一個新修訂版本,加入相關的 readiness 探測定義。

    這些步驟會清除所有舊設定,並啟用 readiness 探測功能。

您可以使用 Google Cloud 控制台、Google Cloud CLI 或 YAML 設定就緒探針:

控制台

  1. 前往 Google Cloud 控制台的「Cloud Run」頁面:

    前往 Cloud Run。

  2. 從 Cloud Run 導覽選單中選取「Services」(服務):

    1. 如要設定新服務,請按一下「Deploy container」(部署容器),然後填寫初始服務設定頁面。然後按一下「容器、網路、安全性」,展開服務設定頁面。

    2. 如要設定現有服務,請按一下該服務,然後按一下「Containers」(容器) 分頁標籤。

  3. 在「Health checks」(健康狀態檢查) 區段中,按一下「Add health check」(新增健康狀態檢查),開啟「Add health check」(新增健康狀態檢查) 設定面板。

  4. 在「Select health check type」(選取健康狀態檢查類型) 選單中,選取「Readiness check」(Readiness 檢查)。

  5. 從「Select probe type」(選取探測類型) 選單中,選取要使用的探測類型,例如 HTTP 或 gRPC。系統會顯示探測設定表單。

  6. 探測設定因探測類型而異。設定探測設定:

    • 如果您使用 HTTP 探測:

      • 在服務程式碼中新增 HTTP/1 端點 (Cloud Run 預設,而非 HTTP/2),以回應探測。端點名稱 (例如 /startup、/health 或 /are_you_ready) 必須與探測設定中的 path 相符。HTTP 健康狀態檢查端點可從外部存取,並遵循與其他任何外部公開 HTTP 服務端點相同的原則。

      • 使用「Path」(路徑) 欄位指定端點的相對路徑,例如 /are_you_ready。預設路徑為 /。

    • 如果您使用 gRPC 探測:

    • 在「Port」(通訊埠) 部分,指定服務的容器通訊埠。預設通訊埠是主要輸入通訊埠。

    • 在「Period」(週期) 部分,指定執行探測作業的週期 (以秒為單位)。例如 2,每 2 秒執行一次探測。請指定 1 到 300 之間的值。預設值為 10 秒。

    • 在「Success threshold」(成功門檻) 部分,指定探測失敗後,至少要連續成功幾次,才算成功。預設值為 2。

    • 在「Failure threshold」(失敗門檻),指定回報失敗前重試探測的次數,這會導致執行個體停止接收流量。預設值為 3。

    • 在「Timeout」(逾時) 部分,指定探測作業逾時前的等待秒數。這個值不得超過為 periodSeconds 指定的值。請指定 1 到 300 之間的值。預設值為 1。

  7. 按一下「新增」,即可新增門檻。

  8. 按一下「建立」,建立新服務。依序點選「查看差異並重新部署」和「部署變更」,即可更新現有服務。

如要刪除探測,請按一下要刪除的健康狀態檢查的「Delete」(刪除) 圖示,然後按一下「Confirm」(確認)。如要部署 Cloud Run 服務的新修訂版本,請依序點選「View diff & redeploy」(查看差異並重新部署) 和「Deploy changes」(部署變更)。

gcloud

HTTP 就緒狀態

在服務程式碼中新增 HTTP/1 端點 (Cloud Run 預設,而非 HTTP/2),以回應探測。端點名稱 (例如 /startup、/health 或 /are_you_ready) 必須與探測設定中的 path 相符。HTTP 健康狀態檢查端點可從外部存取,並遵循與其他任何外部公開 HTTP 服務端點相同的原則。

執行下列指令:

gcloud 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。網址格式為 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 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。網址格式為 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG。
  • 選用。CONTAINER_PORT:服務使用的容器通訊埠。預設通訊埠是主要輸入通訊埠。
  • 選用。GRPC_SERVICE:如果設定,則在呼叫 grpc.health.v1.Health.Check RPC 時,會用於 grpc.health.v1.HealthCheckRequest 的服務欄位。
  • 選用。SUCCESS_THRESHOLD:探測失敗後,至少要連續成功幾次,才算成功。預設值為 2。
  • 選用。FAILURE_THRESHOLD:回報失敗前重新嘗試探測的次數,超過這個次數後,執行個體就會停止接收流量。預設為 3。
  • 選用。TIMEOUT:探測作業逾時前等待的秒數。這個值不得超過為 periodSeconds 指定的值。請指定 1 到 300 之間的值。預設值為 1。
  • 選用。PERIOD:執行探測的時間間隔 (以秒為單位)。例如 2,每 2 秒執行一次探測。請指定 1 到 300 之間的值。預設值為 10 秒。

YAML

HTTP 就緒狀態

在服務程式碼中新增 HTTP/1 端點 (Cloud Run 預設,而非 HTTP/2),以回應探測。端點名稱 (例如 /startup、/health 或 /are_you_ready) 必須與探測設定中的 path 相符。HTTP 健康狀態檢查端點可從外部存取,並遵循與其他任何外部公開 HTTP 服務端點相同的原則。

  1. 按照以下方式設定 readinessProbe 屬性:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    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。網址格式為 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 健康狀態檢查通訊協定。

  1. 按照以下方式設定 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。網址格式為 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG。
    • 選用。CONTAINER_PORT:服務使用的容器通訊埠。預設通訊埠是主要輸入通訊埠。
    • 選用。GRPC_SERVICE:如果設定,則在呼叫 grpc.health.v1.Health.Check RPC 時,會用於 grpc.health.v1.HealthCheckRequest 的服務欄位。
    • 選用。SUCCESS_THRESHOLD:探測失敗後,至少要連續成功幾次,才算成功。預設值為 2。
    • 選用。FAILURE_THRESHOLD:回報失敗前重新嘗試探測的次數,超過這個次數後,執行個體就會停止接收流量。預設為 3。
    • 選用。TIMEOUT:探測作業逾時前等待的秒數。這個值不得超過為 periodSeconds 指定的值。請指定 1 到 300 之間的值。預設值為 1。
    • 選用。PERIOD:執行探測的時間間隔 (以秒為單位)。例如 2,每 2 秒執行一次探測。請指定 1 到 300 之間的值。預設值為 10 秒。

Terraform

如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。

HTTP 就緒狀態

在服務程式碼中新增 HTTP/1 端點 (Cloud Run 預設,而非 HTTP/2),以回應探測。端點名稱 (例如 /startup、/health 或 /are_you_ready) 必須與探測設定中的 path 相符。HTTP 健康狀態檢查端點可從外部存取,並遵循與其他任何外部公開 HTTP 服務端點相同的原則。

使用 readiness_probe 屬性設定 Cloud Run 服務,如下所示:

resource "google_cloud_run_v2_service" "default" {
  name     = "SERVICE"
  location = "REGION"
  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "IMAGE_URL"

      readiness_probe {
        timeout_seconds   = TIMEOUT
        period_seconds    = PERIOD
        success_threshold = SUCCESS_THRESHOLD
        failure_threshold = FAILURE_THRESHOLD

        http_get {
          path = "PATH"
          port = CONTAINER_PORT
        }
      }
    }
  }
}

更改下列內容:

  • REGION: Google Cloud 區域,例如 us-central1。
  • SERVICE:Cloud Run 服務的名稱。
  • IMAGE_URL:容器映像檔的參照,例如 us-docker.pkg.dev/cloudrun/container/hello:latest。如果使用 Artifact Registry,則必須先建立存放區 REPO_NAME。網址格式為 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 健康狀態檢查通訊協定。

使用 readiness_probe 屬性設定 Cloud Run 服務,如下所示:

resource "google_cloud_run_v2_service" "default" {
  name     = "SERVICE"
  location = "REGION"
  deletion_protection = "true"

  template {
    containers {
      image = "IMAGE_URL"

      readiness_probe {
        timeout_seconds   = TIMEOUT
        period_seconds    = PERIOD
        success_threshold = SUCCESS_THRESHOLD
        failure_threshold = FAILURE_THRESHOLD

        grpc {
          service = "GRPC_SERVICE"
          port = CONTAINER_PORT
        }
      }
    }
  }
}

更改下列內容:

  • REGION: Google Cloud 區域,例如 us-central1。
  • SERVICE:Cloud Run 服務的名稱。
  • IMAGE_URL:容器映像檔的參照,例如 us-docker.pkg.dev/cloudrun/container/hello:latest。如果使用 Artifact Registry,則必須先建立存放區 REPO_NAME。網址格式為 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG。
  • 選用。CONTAINER_PORT:服務使用的容器通訊埠。預設通訊埠是主要輸入通訊埠。
  • 選用。GRPC_SERVICE:如果設定,則在呼叫 grpc.health.v1.Health.Check RPC 時,會用於 grpc.health.v1.HealthCheckRequest 的服務欄位。
  • 選用。SUCCESS_THRESHOLD:探測失敗後,至少要連續成功幾次,才算成功。預設值為 2。
  • 選用。FAILURE_THRESHOLD:回報失敗前重新嘗試探測的次數,超過這個次數後,執行個體就會停止接收流量。預設為 3。
  • 選用。TIMEOUT:探測作業逾時前等待的秒數。這個值不得超過為 periodSeconds 指定的值。請指定 1 到 300 之間的值。預設值為 1。
  • 選用。PERIOD:執行探測的時間間隔 (以秒為單位)。例如 2,每 2 秒執行一次探測。請指定 1 到 300 之間的值。預設值為 10 秒。

readiness 探測需求和行為

探測類型 需求條件 行為
HTTP 就緒狀態 建立 HTTP 健康狀態檢查端點
使用 HTTP/1
啟動探測成功後,才會開始執行就緒探測。設定探測後,只要啟動探測成功,Cloud Run 就會向健康狀態檢查端點 (例如 /are_you_ready) 發出 HTTP GET 要求。任何 2XX 或 3XX 回應都代表成功,其他回應則代表失敗。

如果執行個體未通過 readiness 探測的次數超過設定的failureThreshold,Cloud Run 就會停止將新要求轉送至該執行個體,但不會關閉執行個體,並在執行個體通過 readiness 探測 (連續 successThreshold 次) 後,恢復轉送要求。
gRPC 準備度 在 Cloud Run 服務中實作 gRPC 健康狀態檢查通訊協定 只有在設定的啟動探測成功後,readiness 探測才會啟動。Cloud Run 會向服務發出 gRPC 健康狀態檢查要求。

如果執行個體未通過 readiness 探測的次數超過設定的failureThreshold,Cloud Run 就會停止將新要求轉送至該執行個體,但不會關閉執行個體。一旦執行個體通過 readiness 探測 (連續 successThreshold 次),Cloud Run 就會恢復轉送要求。

CPU 分配方式

  • 執行探測時,系統一律會分配 CPU。
  • 所有探測都會依 CPU 和記憶體用量計費,但不會依要求計費。

後續步驟