Cloud Run 健康狀態檢查可確保容器執行個體正常運作,並能處理流量。透過 Cloud Run 健康狀態檢查,您可以自訂容器何時準備好接收要求,以及容器何時應視為健康狀態不佳而需要重新啟動。
用途
您可以設定下列類型的健康狀態檢查探針:
- 啟動探測作業會判斷容器是否已啟動,並準備好接受流量。
- 有效性探測作業會判斷是否要重新啟動容器。
- 在這種情況下,重新啟動容器有助於在發生錯誤時提高執行個體可用性。
- Liveness 探測作業的目的是重新啟動無法以其他方式復原的個別執行個體。主要用於無法復原的執行個體故障,例如偵測到執行個體正在執行,但無法繼續運作的死結。您可以使用自訂組織政策,為每個容器設定存活探測。
- 如果執行個體發生探查失敗的情況,Cloud Run 會限制執行個體重新啟動次數,避免發生不受控的當機迴圈。
完備性探測 (預覽版)
Readiness 探測會判斷 Cloud Run 執行個體中的執行個體何時應處理流量。容器的啟動探測作業成功通過後,系統就會開始進行準備狀態檢查。如果執行個體通過就緒探測的次數超過您設定的失敗閾值,Cloud Run 就會停止將新流量傳送至該執行個體。當執行個體再次通過就緒探測時,Cloud Run 不會終止執行個體,而是將流量傳回執行個體。
您的容器必須持續實作啟動、有效性和完備性探測。啟動檢查通過後,Cloud Run 會將容器視為已準備好處理流量。
建議您封裝邏輯,讓啟動探測帳戶準備就緒。由於 Cloud Run 可以在第一個就緒探查完成前,將流量路由至新例項,請確保通過啟動探查也能確保立即安全地處理流量。啟動探測作業成功後,系統會將容器視為已準備好接收流量。
設定啟動探測
您可以使用 Google Cloud CLI 或 YAML 設定 HTTP、TCP 和 gRPC 探針:
gcloud
TCP 啟動
執行下列指令:
gcloud beta run instances create INSTANCE \
--image=IMAGE_URL \
--startup-probe tcpSocket.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
更改下列內容:
- INSTANCE: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 秒到 240 秒之間的值。 預設值為 0 秒。
- TIMEOUT (選用):探測作業逾時前的等待秒數。這個值不得超過為
periodSeconds指定的值。 請指定介於 1 到 240 之間的值。預設值為 1。 - THRESHOLD:在關閉容器前,重新嘗試探測的次數。預設值為 3。
- PERIOD:執行探查的週期 (以秒為單位)。例如
2,每 2 秒執行一次探查。指定介於 1 秒到 240 秒之間的值。預設值為 10 秒。
HTTP 啟動
在執行個體程式碼中新增 HTTP/1 端點 (Cloud Run 預設端點,而非 HTTP/2),以回應探測。端點名稱 (例如 /startup、/health 或 /are_you_ready) 必須與探測設定中的 path 相符。HTTP 健康狀態檢查端點可從外部存取,並遵循與任何其他外部公開 HTTP 執行個體端點相同的原則。
執行下列指令:
gcloud beta run instances create INSTANCE \
--image=IMAGE_URL \
--startup-probe httpGet.path=PATH,httpGet.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
更改下列內容:
- INSTANCE: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 秒到 240 秒之間的值。預設值為 0 秒。
- THRESHOLD (選用):關閉容器前重新嘗試探測的次數。預設值為 3。
- TIMEOUT (選用):探測作業逾時前的等待秒數。這個值不得超過為 periodSeconds 指定的值。請指定介於 1 到 240 之間的值。預設值為 1。
- PERIOD (選用):執行探測的週期 (以秒為單位)。例如
2,每 2 秒執行一次探查。指定 1 秒到 240 秒之間的值。預設值為 10 秒。
gRPC 啟動
確認容器映像檔實作 gRPC 健康狀態檢查通訊協定。
執行下列指令:
gcloud beta run instances create INSTANCE \
--image=IMAGE_URL \
--startup-probe grpc.port=CONTAINER_PORT,grpc.instance=GRPC_INSTANCE,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
更改下列內容:
- INSTANCE: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_INSTANCE (選用):如果已設定,當呼叫
grpc.health.v1.Health.CheckRPC 時,這會用於grpc.health.v1.HealthCheckRequest的例項欄位。 - CONTAINER_PORT (選用):執行個體使用的容器通訊埠。
- DELAY (選用):容器啟動後,要等待幾秒才執行第一次探測。指定介於 0 秒到 240 秒之間的值。預設值為 0 秒。
- THRESHOLD (選用):關閉容器前重新嘗試探測的次數。預設值為 3。
- TIMEOUT (選用):探測作業逾時前的等待秒數。這個值不得超過為 periodSeconds 指定的值。請指定介於 1 到 240 之間的值。預設值為 1。
- PERIOD (選用):執行探測的週期 (以秒為單位)。例如
2,每 2 秒執行一次探查。指定 1 秒到 240 秒之間的值。預設值為 10 秒。
YAML
TCP 啟動
如要建立新執行個體,請略過這個步驟。如要更新現有執行個體,請下載其 YAML 設定:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
如圖所示設定
startupProbe屬性:apiVersion: serving.knative.dev/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA spec: containers: - image: IMAGE_URL startupProbe: tcpSocket: port: CONTAINER_PORT initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
更改下列內容:
- INSTANCE: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 秒到 240 秒之間的值。 預設值為 0 秒。
- TIMEOUT (選用):探測作業逾時前的等待秒數。這個值不得超過為
periodSeconds指定的值。 請指定介於 1 到 240 之間的值。預設值為 1。 - THRESHOLD:在關閉容器前,重新嘗試探測的次數。預設值為 3。
- PERIOD:執行探查的週期 (以秒為單位)。例如
2,每 2 秒執行一次探查。指定介於 1 秒到 240 秒之間的值。預設值為 10 秒。
-
使用下列指令建立或更新執行個體:
gcloud beta run instances replace instance.yaml
HTTP 啟動
在執行個體程式碼中新增 HTTP/1 端點 (Cloud Run 預設端點,而非 HTTP/2),以回應探測。端點名稱 (例如 /startup、/health 或 /are_you_ready) 必須與探測設定中的 path 相符。HTTP 健康狀態檢查端點可從外部存取,並遵循與任何其他外部公開 HTTP 執行個體端點相同的原則。
如要建立新執行個體,請略過這個步驟。如要更新現有執行個體,請下載其 YAML 設定:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
如圖所示設定
startupProbe屬性:apiVersion: serving.knative.dev/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA 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
更改下列內容:
- INSTANCE: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 秒到 240 秒之間的值。預設值為 0 秒。
- THRESHOLD (選用):關閉容器前重新嘗試探測的次數。預設值為 3。
- 選用:
httpHeaders可用於使用 HEADER_NAME 和 HEADER_VALUE 欄位提供多個或重複的自訂標頭,如圖所示。 - TIMEOUT (選用):探測作業逾時前的等待秒數。這個值不得超過為 periodSeconds 指定的值。請指定介於 1 到 240 之間的值。預設值為 1。
- PERIOD (選用):執行探測的週期 (以秒為單位)。例如
2,每 2 秒執行一次探查。指定 1 秒到 240 秒之間的值。預設值為 10 秒。
如要建立新執行個體,請略過這個步驟。如要更新現有執行個體,請下載其 YAML 設定:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
gRPC 啟動
確認容器映像檔實作 gRPC 健康狀態檢查通訊協定。
如要建立新執行個體,請略過這個步驟。如要更新現有執行個體,請下載其 YAML 設定:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
如圖所示設定
startupProbe屬性:apiVersion: serving.knative.dev/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA spec: containers: - image: IMAGE_URL startupProbe: grpc: instance: GRPC_INSTANCE port: CONTAINER_PORT initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
更改下列內容:
- INSTANCE: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_INSTANCE (選用):如果已設定,當呼叫
grpc.health.v1.Health.CheckRPC 時,這會用於grpc.health.v1.HealthCheckRequest的例項欄位。 - CONTAINER_PORT (選用):執行個體使用的容器通訊埠。
- DELAY (選用):容器啟動後,要等待幾秒才執行第一次探測。指定介於 0 秒到 240 秒之間的值。預設值為 0 秒。
- THRESHOLD (選用):關閉容器前重新嘗試探測的次數。預設值為 3。
- TIMEOUT (選用):探測作業逾時前的等待秒數。這個值不得超過為 periodSeconds 指定的值。請指定介於 1 到 240 之間的值。預設值為 1。
- PERIOD (選用):執行探測的週期 (以秒為單位)。例如
2,每 2 秒執行一次探查。指定 1 秒到 240 秒之間的值。預設值為 10 秒。
如要建立新執行個體,請略過這個步驟。如要更新現有執行個體,請下載其 YAML 設定:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
預設 TCP 啟動探測
如果您未明確為新的 Cloud Run 執行個體設定 TCP 啟動探測,Cloud Run 會自動設定 TCP 啟動探測,並採用下列預設值:
startupProbe:
timeoutSeconds: 240
periodSeconds: 240
failureThreshold: 1
如要變更這些預設值,請按照本頁「探測設定」一節的說明操作。
啟動探測需求和行為
| 探針類型 | 需求條件 | 行為 |
|---|---|---|
| TCP 啟動 | 無 | 根據預設,Cloud Run 會建立 TCP 連線,在指定通訊埠開啟 TCP Socket。如果 Cloud Run 無法建立連線,表示啟動探查失敗。 如果啟動探查在指定時間 ( failureThreshold * periodSeconds) 內未成功,且時間超過 240 秒,系統就會關閉容器。另請參閱「TCP 預設值」。 |
| HTTP 啟動 | 建立 HTTP 健康狀態檢查端點 使用 HTTP/1 |
設定探針後,Cloud Run 會對健康狀態檢查端點發出 HTTP GET 要求 (例如 /health)。任何 2XX 或 3XX 回應都表示成功,其他則表示失敗。如果啟動探針在指定時間 ( failureThreshold * periodSeconds) 內未成功 (不得超過 240 秒),容器就會關閉。 |
| gRPC 啟動 | 在 Cloud Run 執行個體中實作 gRPC 健康狀態檢查通訊協定 | 如果啟動探測在指定時間 (failureThreshold * periodSeconds) 內未成功 (不得超過 240 秒),系統會關閉容器。 |
設定 liveness 探測
您可以使用 Google Cloud SDK 或 YAML 設定 HTTP 和 gRPC 探查:
gcloud
HTTP 存活度
在執行個體程式碼中新增 HTTP/1 端點 (Cloud Run 預設端點,而非 HTTP/2),以回應探測。端點名稱 (例如 /startup、/health 或 /are_you_ready) 必須與探測設定中的 path 相符。HTTP 健康狀態檢查端點可從外部存取,並遵循與任何其他外部公開 HTTP 執行個體端點相同的原則。
執行下列指令:
gcloud beta run instances deploy INSTANCE \
--image=IMAGE_URL \
--liveness-probe httpGet.path=PATH,httpGet.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
更改下列內容:
- INSTANCE: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 秒到 240 秒之間的值。預設值為 0 秒。
- THRESHOLD (選用):關閉容器前重新嘗試探測的次數。預設值為 3。
- 選用。TIMEOUT:探測作業逾時前的等待秒數。這個值不得超過為
periodSeconds指定的值。請指定介於 1 到 3600 之間的值。預設值為 1。 - 選用。PERIOD:執行探查的週期 (以秒為單位)。例如
2,每 2 秒執行一次探測。請指定介於 1 秒到 3600 秒之間的值。預設值為 10 秒。
gRPC 存活度
確認容器映像檔實作 gRPC 健康狀態檢查通訊協定。
執行下列指令:
gcloud beta run instances deploy INSTANCE \
--image=IMAGE_URL \
--liveness-probe grpc.port=CONTAINER_PORT,grpc.service=GRPC_SERVICE,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
更改下列內容:
- INSTANCE: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_INSTANCE (選用):如果已設定,當呼叫
grpc.health.v1.Health.CheckRPC 時,這會用於grpc.health.v1.HealthCheckRequest的例項欄位。 - CONTAINER_PORT (選用):執行個體使用的容器通訊埠。
- DELAY (選用):容器啟動後,要等待幾秒才執行第一次探測。指定介於 0 秒到 240 秒之間的值。預設值為 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 執行個體端點相同的原則。
-
如要建立新執行個體,請略過這個步驟。如要更新現有執行個體,請下載其 YAML 設定:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
如圖所示設定
livenessProbe屬性:apiVersion: serving.knative.dev/v1 apiVersion: serving.knative.dev/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA 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
更改下列內容:
- INSTANCE: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 秒到 240 秒之間的值。預設值為 0 秒。
- THRESHOLD (選用):關閉容器前重新嘗試探測的次數。預設值為 3。
- 選用:
httpHeaders可用於使用 HEADER_NAME 和 HEADER_VALUE 欄位提供多個或重複的自訂標頭,如圖所示。 - 選用。TIMEOUT:探測作業逾時前的等待秒數。這個值不得超過為
periodSeconds指定的值。請指定介於 1 到 3600 之間的值。預設值為 1。 - 選用。PERIOD:執行探查的週期 (以秒為單位)。例如
2,每 2 秒執行一次探測。請指定介於 1 秒到 3600 秒之間的值。預設值為 10 秒。
-
使用下列指令建立或更新執行個體:
gcloud beta run instances replace instance.yaml
gRPC 存活度
確認容器映像檔實作 gRPC 健康狀態檢查通訊協定。
-
如要建立新執行個體,請略過這個步驟。如要更新現有執行個體,請下載其 YAML 設定:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
如圖所示設定
livenessProbe屬性:apiVersion: serving.knative.dev/v1 apiVersion: serving.knative.dev/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA spec: containers: - image: IMAGE_URL livenessProbe: grpc: port: CONTAINER_PORT service: GRPC_SERVICE initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
請替換下列項目:
- INSTANCE: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_INSTANCE (選用):如果已設定,當呼叫
grpc.health.v1.Health.CheckRPC 時,這會用於grpc.health.v1.HealthCheckRequest的例項欄位。 - CONTAINER_PORT (選用):執行個體使用的容器通訊埠。
- DELAY (選用):容器啟動後,要等待幾秒才執行第一次探測。指定介於 0 秒到 240 秒之間的值。預設值為 0 秒。
- THRESHOLD (選用):關閉容器前重新嘗試探測的次數。預設值為 3。
- 選用。TIMEOUT:探測作業逾時前的等待秒數。這個值不得超過為
periodSeconds指定的值。請指定介於 1 到 3600 之間的值。預設值為 1。 - 選用。PERIOD:執行探查的週期 (以秒為單位)。例如
2,每 2 秒執行一次探測。請指定介於 1 秒到 3600 秒之間的值。預設值為 10 秒。
-
使用下列指令建立或更新執行個體:
gcloud beta run instances replace instance.yaml
有效性探測需求和行為
| 探針類型 | 需求條件 | 行為 |
|---|---|---|
| HTTP 存活度 | 建立 HTTP 健康狀態檢查端點 使用 HTTP/1 |
只有在啟動探測成功後,才會開始進行即時性探測。完成探測設定並成功執行啟動探測後,Cloud Run 會對健康狀態檢查端點發出 HTTP GET 要求 (例如 /health)。任何 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 探測
就緒探查有以下限制:- 啟用工作階段相依性後,即使就緒檢查失敗,Cloud Run 仍會繼續將要求傳送至相同執行個體。
您可以使用 Google Cloud CLI 或 YAML 設定就緒探針:
gcloud
HTTP 完備性
在執行個體程式碼中新增 HTTP/1 端點 (Cloud Run 預設端點,而非 HTTP/2),以回應探測。端點名稱 (例如 /startup、/health 或 /are_you_ready) 必須與探測設定中的 path 相符。HTTP 健康狀態檢查端點可從外部存取,並遵循與任何其他外部公開 HTTP 執行個體端點相同的原則。
執行下列指令:
gcloud beta run instances deploy INSTANCE \
--image=IMAGE_URL \
--readiness-probe httpGet.path=PATH,httpGet.port=CONTAINER_PORT,successThreshold=SUCCESS_THRESHOLD,failureThreshold=FAILURE_THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
更改下列內容:
- INSTANCE: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 beta run instances deploy INSTANCE \
--image=IMAGE_URL \
--readiness-probe grpc.port=CONTAINER_PORT,grpc.instance=GRPC_INSTANCE,successThreshold=SUCCESS_THRESHOLD,failureThreshold=FAILURE_THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
更改下列內容:
- INSTANCE: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_INSTANCE (選用):如果已設定,當呼叫
grpc.health.v1.Health.CheckRPC 時,這會用於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 執行個體端點相同的原則。
-
如要建立新執行個體,請略過這個步驟。如要更新現有執行個體,請下載其 YAML 設定:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
如圖所示設定
readinessProbe屬性:apiVersion: serving.knative.dev/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA 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
更改下列內容:
- INSTANCE: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 秒。
-
使用下列指令建立或更新執行個體:
gcloud beta run instances replace instance.yaml
gRPC 適用狀態
確認容器映像檔實作 gRPC 健康狀態檢查通訊協定。
-
如要建立新執行個體,請略過這個步驟。如要更新現有執行個體,請下載其 YAML 設定:
gcloud beta run instances describe INSTANCE --format export > instance.yaml
如圖所示設定
readinessProbe屬性:apiVersion: serving.knative.dev/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA spec: template: metadata: spec: containers: - image: IMAGE_URL readinessProbe: grpc: port: CONTAINER_PORT instance: GRPC_INSTANCE successThreshold: SUCCESS_THRESHOLD failureThreshold: FAILURE_THRESHOLD timeoutSeconds: TIMEOUT periodSeconds: PERIOD
更改下列內容:
- INSTANCE: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_INSTANCE (選用):如果已設定,當呼叫
grpc.health.v1.Health.CheckRPC 時,這會用於grpc.health.v1.HealthCheckRequest的例項欄位。 - SUCCESS_THRESHOLD (選用):探測失敗後,至少要連續成功幾次,才算成功。預設值為 2。
- FAILURE_THRESHOLD (選用):在回報失敗前重新嘗試探測的次數,這會導致執行個體停止接收流量。預設為 3。
- TIMEOUT (選用):探測作業逾時前的等待秒數。這個值不得超過為
periodSeconds指定的值。請指定介於 1 到 300 之間的值。預設值為 1。 - PERIOD (選用):執行探測的間隔時間 (以秒為單位)。例如
2,每 2 秒執行一次探查。請指定介於 1 到 300 之間的值。預設值為 10 秒。
-
使用下列指令建立或更新執行個體:
gcloud beta run instances replace instance.yaml
CPU 分配方式
- 探針執行時,系統一律會分配 CPU。
- 所有探查都會根據 CPU 和記憶體用量計費,但不會根據要求計費。
後續步驟
- 瞭解如何設定 gRPC 健康狀態檢查通訊協定。