为工作器池配置容器健康检查

您可以为新的和现有的 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 请求。介于 200400 之间的任何响应都表示成功,其他响应都表示失败。

如果启动探测在指定时间(failureThreshold * periodSeconds,不能超过 240 秒)内未成功,Cloud Run 会关停容器。

如果 HTTP 启动探测在指定时间内成功,并且您已配置 HTTP 活跃性探测,则 Cloud Run 会启动 HTTP 活跃性探测。
HTTP 活跃性 创建 HTTP 健康检查端点
使用 HTTP/1
活跃性探测仅在启动探测成功后启动。配置探测并且任何启动探测成功后,Cloud Run 会向健康检查端点(例如 /health)发出 HTTP GET 请求。介于 200400 之间的任何响应都表示成功,其他响应都表示失败。

如果活跃性探测在指定时间 (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 自动扩缩功能将启动新的容器实例。

配置探测

任何配置更改都会导致新修订版本的创建。后续修订版本也将自动采用此配置设置,除非您进行了明确更新。

您可以使用 Cloud Run REST API 配置 HTTP、TCP 和 gRPC 探测:

REST API

重要提示:如果您要为 Cloud Run 工作器池配置 HTTP 探测,则还必须在工作器池代码中添加 HTTP 健康检查端点以响应探测。如果您要配置 gRPC 探测,则还必须在 Cloud Run 工作器池中实现 gRPC 健康检查协议

HTTP 启动

您可以使用 REST API 对此进行配置。

HTTP 活跃性

您可以使用 REST API 对此进行配置。

gRPC 启动

您可以使用 REST API 对此进行配置。

gRPC 活跃性

您可以使用 REST API 对此进行配置。

创建 HTTP 健康检查端点

如果您为 Cloud Run 工作器池配置了 HTTP 启动探测或活跃性探测,则需要在工作器池代码中添加端点以响应探测。端点可以指定为任何所需的名称(例如 /startup/ready),但名称必须与您在探测配置中为 path 指定的值相匹配。例如,如果您为 HTTP 启动探测指定了 /ready,请在探测配置中指定 path,如下所示:

startupProbe:
  httpGet:
    path: /ready

HTTP 健康检查端点可从外部访问,并且遵循与在外部公开的任何其他 HTTP 端点相同的原则。