您可以为新的和现有的 Cloud Run 工作器池配置 HTTP、TCP 和 gRPC 启动探测以及 HTTP 和 gRPC 活跃性探测。具体配置会因探测类型而异。
使用场景
您可以配置两种类型的健康检查探测:
活跃性探测确定是否重启容器。
- 在这种情况下,重启容器可以在出现 bug 时提高工作器池的可用性。
- 重要提示:活跃性探测旨在重启无法以任何其他方式恢复的单个实例。它们主要应该用于不可恢复的实例故障,例如,捕获工作器池正在运行但无进展的死锁。您可以使用自定义组织政策,要求每个容器都进行活跃性探测。
启动探测用于确定容器是否已启动。
- 配置启动探测时,系统将停用活跃性检查,直到启动探测确定容器已启动,以防止干扰工作器池启动。
- 如果您对慢启动容器使用活跃检查,则启动探测特别有用,因为它可以防止在容器启动和运行之前过早关停。
请注意,当工作器池遇到重复的启动或活跃性探测失败时,Cloud Run 会限制实例重启,以防止不受控制的崩溃循环。
CPU 分配
- 当探测运行时,系统始终会分配 CPU。
- 所有探测都按 CPU 和内存用量计费。
探测要求和行为
探测类型 | 要求 | 行为 |
---|---|---|
TCP 启动 | 无 | 如果指定,Cloud Run 会建立 TCP 连接,以便在指定端口上打开 TCP 套接字。如果 Cloud Run 无法建立连接,则表示失败。 如果启动探测在指定时间内未成功,Cloud Run 会关停容器。该时间最长为 240 秒,计算方式为 failureThreshold * periodSeconds ,您可以在为工作器池配置启动探测时进行设置。 |
HTTP 启动 | 创建 HTTP 健康检查端点 使用 HTTP/1 |
配置探测后,Cloud Run 会向工作器池健康检查端点(例如 /ready )发出 HTTP GET 请求。介于 200 和 400 之间的任何响应都表示成功,其他响应都表示失败。如果启动探测在指定时间( failureThreshold * periodSeconds ,不能超过 240 秒)内未成功,Cloud Run 会关停容器。如果 HTTP 启动探测在指定时间内成功,并且您已配置 HTTP 活跃性探测,则 Cloud Run 会启动 HTTP 活跃性探测。 |
HTTP 活跃性 | 创建 HTTP 健康检查端点 使用 HTTP/1 |
活跃性探测仅在启动探测成功后启动。配置探测并且任何启动探测成功后,Cloud Run 会向健康检查端点(例如 /health )发出 HTTP GET 请求。介于 200 和 400 之间的任何响应都表示成功,其他响应都表示失败。如果活跃性探测在指定时间 ( failureThreshold * periodSeconds ) 内未成功,Cloud Run 会使用 SIGKILL 信号关停容器。容器仍在处理的所有剩余请求都会终止,并且 HTTP 状态代码为 503 。Cloud Run 关停容器后,Cloud Run 自动扩缩功能将启动新的容器实例。 |
gRPC 启动 | 在 Cloud Run 工作器池中实现 gRPC 健康检查协议 | 如果启动探测在指定时间(failureThreshold * periodSeconds ,不能超过 240 秒)内未成功,Cloud Run 会关停容器。 |
gRPC 活跃性 | 在 Cloud Run 工作器池中实现 gRPC 健康检查协议 | 如果您配置了 gRPC 启动探测,则活跃性探测仅在启动探测成功后才会启动。 配置活跃性探测并且任何启动探测成功后,Cloud Run 会向工作器池发出健康检查请求。 如果活跃性探测在指定时间( failureThreshold * periodSeconds )内未成功,Cloud Run 会使用 SIGKILL 信号关停容器。Cloud Run 关停容器后,Cloud Run 自动扩缩功能将启动新的容器实例。 |
配置探测
任何配置更改都会导致新修订版本的创建。后续修订版本也将自动采用此配置设置,除非您进行了明确更新。
您可以使用 Google Cloud 控制台或 Cloud Run REST API 配置 HTTP、TCP 和 gRPC 探测:
控制台
在 Google Cloud 控制台中,前往 Cloud Run:
从菜单中选择工作器池。
- 如果您要配置新的工作器池,请点击部署容器。
- 如果您要配置现有工作器池,请选择该工作器池,然后点击修改和部署新的修订版本。
如果您要配置新的工作器池,请填写初始工作器池页面,然后点击容器、卷、网络、安全性以展开工作器池配置页面。
在容器部分,请转到健康检查然后点击添加健康检查以打开添加健康检查配置面板。
从选择健康检查类型菜单中,选择要添加的健康检查的类型。
从选择探测类型菜单中,选择要使用的探测类型,例如 HTTP 或 gRPC。此时会显示探测配置表单。
配置探测设置,这些设置因探测类型而异:
如果您使用的是 HTTP 探测:
使用路径字段指定端点的相对路径,例如
/
。选中 HTTP 标头复选框以指定可选的自定义标头。在名称字段中指定标头名称,在值字段中指定标头值。点击添加 HTTP 标头以指定更多标头。
如果您使用的是 gRPC 探测,请确保您的容器映像实现了 gRPC 健康检查协议。如需了解详情,请参阅 GRPC 健康检查协议。
对于 HTTP 和 gRPC 探测类型,请指定以下内容:
初始延迟时间,指定容器启动后执行首次探测之前等待的秒数。指定一个介于 0 秒到 240 秒之间的值。默认值为 0 秒。
周期,指定执行探测的周期(以秒为单位)。例如,
2
表示每 2 秒执行一次探测。指定一个介于 1 秒到 240 秒之间的值。默认值为 10 秒。失败阈值,指定在关停容器之前重试探测的次数。默认值为 3。
超时,指定等待探测超时的秒数。指定一个介于 1 到 240 和
periodSeconds
中的较小值之间的值。默认值为 1。
点击添加以添加新的阈值。
点击创建或部署。
REST API
重要提示:如果您要为 Cloud Run 工作器池配置 HTTP 探测,则还必须在工作器池代码中添加 HTTP 健康检查端点以响应探测。如果您要配置 gRPC 探测,则还必须在 Cloud Run 工作器池中实现 gRPC 健康检查协议。
创建 HTTP 健康检查端点
如果您为 Cloud Run 工作器池配置了 HTTP 启动探测或活跃性探测,则需要在工作器池代码中添加端点以响应探测。端点可以指定为任何所需的名称(例如 /startup
或 /ready
),但名称必须与您在探测配置中为 path
指定的值相匹配。例如,如果您为 HTTP 启动探测指定了 /ready
,请在探测配置中指定 path
,如下所示:
startupProbe: httpGet: path: /ready
HTTP 健康检查端点可从外部访问,并且遵循与在外部公开的任何其他 HTTP 端点相同的原则。