Cloud Run 健康检查可确保容器实例正常运行并能够传送流量。借助 Cloud Run 健康检查,您可以自定义容器何时准备好接收请求,以及容器何时应视为运行状况不佳而需要重启。
使用场景
您可以配置以下类型的健康检查探测:
- 启动探测确定容器是否已启动并已准备好接受流量。
- 活跃性探测确定是否重启容器。
- 在这种情况下,重启容器可以在出现 bug 时提高实例可用性。
- 活跃性探测旨在重启无法以任何其他方式恢复的单个实例。它们应该主要用于不可恢复的实例故障,例如在实例正在运行但无法继续进行时捕获死锁。您可以使用自定义组织政策,要求每个容器都进行活跃性探测。
- 当实例重复发生探测失败时,Cloud Run 会限制实例重启,以防止不受控制的崩溃循环。
就绪性探测(预览版)
就绪探测器用于确定 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 套接字。如果 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 秒),则容器会关停。 |
配置活跃探测
您可以使用 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 秒到 3,600 秒之间的值。默认值为 1。 - 可选。PERIOD:执行探测的周期(以秒为单位)。例如,
2表示每 2 秒执行一次探测。指定一个介于 1 秒到 3,600 秒之间的值。默认值为 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 秒到 3,600 秒之间的值。默认值为 1。 - 可选。PERIOD:执行探测的周期(以秒为单位)。例如,
2表示每 2 秒执行一次探测。指定一个介于 1 秒到 3,600 秒之间的值。默认值为 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 秒到 3,600 秒之间的值。默认值为 1。 - 可选。PERIOD:执行探测的周期(以秒为单位)。例如,
2表示每 2 秒执行一次探测。指定一个介于 1 秒到 3,600 秒之间的值。默认值为 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 秒到 3,600 秒之间的值。默认值为 1。 - 可选。PERIOD:执行探测的周期(以秒为单位)。例如,
2表示每 2 秒执行一次探测。指定一个介于 1 秒到 3,600 秒之间的值。默认值为 10 秒。
-
使用以下命令创建或更新实例:
gcloud beta run instances replace instance.yaml
活跃探测要求和行为
| 探测类型 | 要求 | 行为 |
|---|---|---|
| HTTP 活跃性 | 创建 HTTP 健康检查端点 使用 HTTP/1 |
活跃性探测仅在启动探测成功后启动。配置探测并且任何启动探测成功后,Cloud Run 会向健康检查端点(例如 /health)发出 HTTP GET 请求。任何 2XX 或 3XX 响应都表示成功,其他响应均表示失败。如果活跃性探测在指定时间 ( failureThreshold * periodSeconds) 内未成功,则容器会通过 SIGKILL 信号关停。容器仍在处理的所有剩余请求都会终止,并且 HTTP 状态代码为 503。容器关停后,Cloud Run 自动扩缩功能将启动新的容器实例。 |
| gRPC 活跃性 | 在 Cloud Run 实例中实现 gRPC 健康检查协议 | 如果您配置了 gRPC 启动探测,则活动探测仅在启动探测成功后启动。 配置活动探测并成功完成任何启动探测后,Cloud Run 会向实例发出健康检查请求。 如果活动探测在指定时间( failureThreshold * periodSeconds)内未成功,系统会使用 SIGKILL 信号关闭容器。容器关停后,Cloud Run 自动扩缩功能将启动新的容器实例。 |
配置就绪性探测
就绪状态探测存在以下限制:- 如果您启用会话亲和性,即使实例的就绪状态检查失败,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 健康检查协议。