本頁面說明如何為新舊 Cloud Run 作業設定 HTTP、TCP 和 gRPC 啟動探查。設定會因探針類型而異。
用途
您可以設定啟動健康狀態檢查探測。啟動探測作業會判斷容器是否已啟動,並準備好執行工作。
如果工作無法啟動,Cloud Run 會限制工作重新啟動次數,避免發生不受控的當機迴圈。
探查需求和行為
| 探針類型 | 需求條件 | 行為 |
|---|---|---|
| TCP 啟動 | 無 | 如果 Cloud Run 無法建立連線,表示失敗。 如果啟動探查在指定時間間隔內未成功,Cloud Run 會關閉容器。這個時間間隔的計算方式為 failureThreshold * periodSeconds,且不得超過 240 秒。 |
| HTTP 啟動 | 建立 HTTP 健康狀態檢查端點 使用 HTTP/1 |
設定探針後,Cloud Run 會對作業健康狀態檢查端點發出 HTTP GET 要求 (例如 /ready)。介於 200 和 400 之間的回應表示成功,其他回應則表示失敗。如果啟動探針在指定時間 ( failureThreshold * periodSeconds) 內未成功,且時間超過 240 秒,容器就會關閉 |
| gRPC 啟動 | 在 Cloud Run 工作中實作 gRPC 健康狀態檢查通訊協定 | 如果啟動探測在指定時間 (failureThreshold * periodSeconds) 內未成功 (不得超過 240 秒),系統會關閉容器 |
設定探測
使用 Google Cloud 控制台或 YAML 設定 HTTP、TCP 和 gRPC 探針:
控制台
重要事項:如果您要為 HTTP 探測設定 Cloud Run 工作,也必須在工作程式碼中新增 HTTP 健康狀態檢查端點,以回應探測。如果您要設定 gRPC 探針,也必須在 Cloud Run 工作中實作 gRPC 健康狀態檢查通訊協定。
前往 Google Cloud 控制台的 Cloud Run「Jobs」頁面:
如要建立新工作,請按一下「Deploy container」(部署容器)。如要編輯現有工作,請按一下「工作」分頁標籤,然後按一下所需工作,再按一下「查看及編輯工作設定」。
展開「Container(s), Volumes, Networking, Security」。
在「Container(s)」(容器) 部分中,前往「Health checks」(健康狀態檢查),然後按一下「Add health check」(新增健康狀態檢查),開啟「Add health check」(新增健康狀態檢查)設定面板。
在「選取健康狀態檢查類型」選單中,選取健康狀態檢查啟動類型。
從「Select probe type」(選取探測類型) 選單中,選取探測類型,例如 HTTP 或 gRPC。系統會顯示探針設定表單。
請注意,探針設定會因探針類型而異。設定探針:
- 如果您使用 HTTP 探測器:
- 使用「路徑」欄位指定端點的相對路徑,例如
/。 - 選取「HTTP 標頭」核取方塊,指定選用的自訂標頭。然後在「名稱」欄位中指定標頭名稱,並在「值」欄位中指定標頭值。按一下「新增 HTTP 標頭」,指定更多標頭。
- 使用「路徑」欄位指定端點的相對路徑,例如
- 在「Port」中,指定工作容器監聽探查的通訊埠。
- 在「初始延遲」中,指定容器啟動後要等待幾秒,才執行第一次探測。請指定介於 0 秒到 240 秒之間的值。預設值為 0 秒。
- 在「Period」(週期),指定執行探測作業的時間間隔 (以秒為單位)。例如
2,每 2 秒執行一次探查。請指定介於 1 秒到 240 秒之間的值。預設值為 10 秒。 - 在「失敗門檻」中,指定要重試探測多少次,才會關閉容器。預設值為 3。
- 在「Timeout」(逾時),指定探測逾時前的等待秒數。這個值不得超過為
periodSeconds指定的值。請指定介於 1 到 240 之間的值。預設值為 1。
- 如果您使用 HTTP 探測器:
按一下「新增」即可新增門檻
YAML
重要事項:如果您要為 HTTP 探查設定 Cloud Run 工作,也必須在工作程式碼中新增端點,以便回應探查。如果您要設定 gRPC 探查,也必須在 Cloud Run 工作中實作 gRPC 健康狀態檢查通訊協定。
TCP 啟動
如果要建立新工作,請略過這個步驟。如要更新現有工作,請下載其 YAML 設定:
gcloud run jobs describe JOB_NAME --format export > job.yaml
如圖所示設定
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 秒到 240 秒之間的值。預設值為 0 秒。
- 選用:TIMEOUT,等待探測逾時的秒數。這個值不得超過為
periodSeconds指定的值。 請指定介於 1 到 240 之間的值。預設值為 1。 - THRESHOLD,並指定在關閉容器前重新嘗試探測的次數。預設值為 3。
- PERIOD,並指定執行探查的週期 (以秒為單位)。例如
2,代表每 2 秒執行一次探查。指定的值介於 1 秒到 240 秒之間。預設值為 10 秒。
使用下列指令建立或更新作業:
gcloud run jobs replace job.yaml
HTTP 啟動
如果要建立新工作,請略過這個步驟。如要更新現有工作,請下載其 YAML 設定:
gcloud run jobs describe JOB_NAME --format export > job.yaml
如圖所示設定
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 秒到 240 秒之間的值。預設值為 0 秒。
- 選用:TIMEOUT,等待探測逾時的秒數。這個值不得超過為
periodSeconds指定的值。 請指定介於 1 到 240 之間的值。預設值為 1。 - 選用:THRESHOLD,容器關閉前重新嘗試探測的次數。預設值為 3。
- 選用:PERIOD,以秒為單位,指定執行探查的週期。
例如
2,代表每 2 秒執行一次探查。請指定介於 1 秒到 240 秒之間的值。預設值為 10 秒。
使用下列指令建立或更新作業:
gcloud run jobs replace job.yaml
gRPC 啟動
如果要建立新工作,請略過這個步驟。如要更新現有工作,請下載其 YAML 設定:
gcloud run jobs describe JOB_NAME --format export > job.yaml
如圖所示設定
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.CheckRPC 時,將這項值用於grpc.health.v1.HealthCheckRequest的服務欄位。 - 選用:CONTAINER_PORT,其中包含作業容器監聽探測作業的通訊埠。
- 選用:DELAY,代表容器啟動後到執行第一項探測作業之前,這段時間間隔的秒數。請指定介於 0 秒到 240 秒之間的值。預設值為 0 秒。
- 選用:TIMEOUT,探測逾時前的等待秒數。這個值不得超過為 periodSeconds 指定的值。請指定介於 1 到 240 之間的值。預設值為 1。
- 選用:THRESHOLD,並輸入在關閉容器前重新嘗試探測的次數。預設值為 3。
- 選用:PERIOD,以秒為單位,指定執行探查的週期。
例如
2,代表每 2 秒執行一次探查。請指定介於 1 秒到 240 秒之間的值。預設值為 10 秒。
使用下列指令建立或更新作業:
gcloud run jobs replace job.yaml
建立 HTTP 健康狀態檢查端點
如果為 Cloud Run 工作設定 HTTP 啟動探測,您必須在工作程式碼中新增端點,以回應探測。端點可以使用任何名稱,例如 /startup 或 /ready。這個名稱必須與您在探測器設定中為 path 指定的值相符。舉例來說,如果您為 HTTP 啟動探測器指定 /ready,請在探測器設定中指定 path,如下所示:
startupProbe: httpGet: path: /ready