容器健康检查(服务)

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

您可以为新的和现有的 Cloud Run 服务配置 HTTP 和 TCP 启动健康检查探测。

您可以使用启动探测来确定容器是否已启动并准备好接受流量。

配置启动探测

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

您可以配置以下类型的探测:

  • HTTP 启动探测
  • TCP 启动探测

您可以使用 YAML 文件为 Cloud Run 服务配置启动探测。具体配置会因探测类型而异。

配置 HTTP 启动探测

HTTP 没有默认的启动探测,但您可以为 Cloud Run 服务配置一个 HTTP 启动探测。请注意,若要使用 HTTP 健康检查探测,您需要在服务中创建相应的 HTTP 健康检查端点来响应探测。

配置启动探测后,Cloud Run 会向服务健康检查端点发出 HTTP GET 请求(例如 /ready)。介于 200400 之间的任何响应都表示成功,其余响应值均表示失败。

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

您可以使用 Google Cloud 控制台为现有服务配置 HTTP 启动探测,也可以使用 YAML 为新的或现有的服务配置 HTTP 启动探测:

控制台

  1. 转到 Cloud Run

  2. 点击您要配置的服务。

  3. 点击 YAML 标签页。

  4. 点击修改并配置 startupProbe 属性,如下所示:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
    name: SERVICE
    spec:
    template:
    metadata:
    spec:
      containers:
        image: IMAGE_URL
        startupProbe:
          httpGet:
            path: PATH
            httpHeaders:
              - name: HEADER_NAME
                value: HEADER_VALUE
          initialDelaySeconds: DELAY
          timeoutSeconds: TIMEOUT
          failureThreshold: THRESHOLD
          periodSeconds: PERIOD
    

    替换

    • SERVICE 替换为您的 Cloud Run 服务的名称。
    • IMAGE_URL 替换为对容器映像的引用(例如 us-docker.pkg.dev/cloudrun/container/hello:latest)。
    • PATH 替换为 HTTP 端点的相对路径,例如 /ready
    • (可选)httpHeaders 可用于使用 HEADER_NAMEHEADER_VALUE 字段提供多个或重复的自定义标头,如下所示。
    • (可选)将 DELAY 替换为容器启动后执行首次探测之前等待的时长(秒数)。指定一个介于 0 秒到 240 秒之间的值。默认值为 0 秒。
    • (可选)将 TIMEOUT 替换为等待探测超时的时长(秒数)。此值不能超过为 periodSeconds 指定的值。指定一个介于 1 到 3600 之间的值。默认值为 1。
    • (可选)将 THRESHOLD 替换为将探测标记为未就绪之前重试探测的次数。默认值为 3。
    • (可选)将 PERIOD 替换为执行探测的频率(以秒为单位)。指定一个介于 1 秒到 240 秒之间的值。默认值为 10 秒。
  5. 点击保存并部署新的修订版本

YAML

您可以使用 gcloud run services describe --format export 命令下载并查看现有服务配置,该命令会生成清理后的 YAML 格式的结果。然后按照后续说明修改字段,最后使用 gcloud run services replace 命令上传修改后的 YAML。请务必严格按照说明修改字段。

  1. 如需查看和下载配置,请运行以下命令:

    gcloud run services describe SERVICE --format export > service.yaml
  2. 配置 startupProbe 属性,如下所示:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
        spec:
          containers:
          - image: IMAGE_URL
            startupProbe:
              httpGet:
                path: PATH
                httpHeaders:
                  - name: HEADER_NAME
                    value: HEADER_VALUE
              initialDelaySeconds: DELAY
              timeoutSeconds: TIMEOUT
              failureThreshold: THRESHOLD
              periodSeconds: PERIOD
    

    替换

    • SERVICE 替换为您的 Cloud Run 服务的名称。
    • IMAGE_URL 替换为对容器映像的引用(例如 us-docker.pkg.dev/cloudrun/container/hello:latest)。
    • PATH 替换为 HTTP 端点的相对路径,例如 /ready
    • (可选)httpHeaders 可用于使用 HEADER_NAMEHEADER_VALUE 字段提供多个或重复的自定义标头,如下所示。
    • (可选)将 DELAY 替换为容器启动后执行首次探测之前等待的时长(秒数)。指定一个介于 0 秒到 240 秒之间的值。默认值为 0 秒。
    • (可选)将 TIMEOUT 替换为等待探测超时的时长(秒数)。此值不能超过为 periodSeconds 指定的值。指定一个介于 1 到 3600 之间的值。默认值为 1。
    • (可选)将 THRESHOLD 替换为将探测标记为未就绪之前重试探测的次数。默认值为 3。
    • (可选)将 PERIOD 替换为执行探测的频率(以秒为单位)。指定一个介于 1 秒到 240 秒之间的值。默认值为 10 秒。
  3. 使用以下命令将服务替换为其新配置:

    gcloud run services replace service.yaml

创建 HTTP 健康检查端点

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

startupProbe:
  httpGet:
    path: /ready

配置 TCP 启动探测

如果您未自行配置启动探测,系统会自动为新的 Cloud Run 服务配置具备默认值的 TCP 启动探测。默认探测如下所示:

startupProbe:
  tcpSocket:
    port: CONTAINER_PORT
  timeoutSeconds: 240
  periodSeconds: 240
  failureThreshold: 1

其中 port 已设置为容器端口,即使您在更新探测配置时尝试修改其设置,系统也会将其保持设置为容器端口。

您可以按照本部分中的说明更改这些默认值。

对于 TCP 启动探测,Cloud Run 会建立 TCP 连接,以便在指定端口上打开 TCP 套接字。如果 Cloud Run 无法建立连接,则表示探测失败。

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

您可以使用 Google Cloud 控制台为现有服务配置 TCP 启动探测,也可以使用 YAML 为新的或现有的服务配置 TCP 启动探测:

控制台

  1. 转到 Cloud Run

  2. 点击您要配置的服务。

  3. 点击 YAML 标签页。

  4. 点击修改并配置 startupProbe 属性,如下所示:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
    name: SERVICE
    spec:
    template:
      metadata:
      spec:
        containers:
        - image: IMAGE_URL
          startupProbe:
            tcpSocket:
              port: CONTAINER_PORT
            initialDelaySeconds: DELAY
            failureThreshold: THRESHOLD
            periodSeconds: PERIOD
    

    替换

    • SERVICE 替换为您的 Cloud Run 服务的名称。
    • IMAGE_URL 替换为对容器映像的引用(例如 us-docker.pkg.dev/cloudrun/container/hello:latest)。
    • CONTAINER_PORT 已设置为容器端口,即使您在更新探测时尝试修改其设置,系统也会将其保持设置为容器端口。
    • DELAY 替换为容器启动后执行首次探测之前等待的时长(秒数)。指定一个介于 0 秒到 240 秒之间的值。默认值为 0 秒。
    • THRESHOLD 替换为将探测标记为未就绪之前重试探测的次数。默认值为 3。
    • PERIOD 替换为执行探测的频率(以秒为单位)。指定一个介于 1 秒到 240 秒之间的值。默认值为 10 秒。
  5. 点击保存并部署新的修订版本

YAML

您可以使用 gcloud run services describe --format export 命令下载并查看现有服务配置,该命令会生成清理后的 YAML 格式的结果。然后按照后续说明修改字段,最后使用 gcloud run services replace 命令上传修改后的 YAML。请务必严格按照说明修改字段。

  1. 如需查看和下载配置,请运行以下命令:

    gcloud run services describe SERVICE --format export > service.yaml
  2. 配置 startupProbe 属性,如下所示:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
        spec:
          containers:
          - image: IMAGE_URL
            startupProbe:
              tcpSocket:
                port: CONTAINER_PORT
              initialDelaySeconds: DELAY
              failureThreshold: THRESHOLD
              periodSeconds: PERIOD
                

    替换

    • SERVICE 替换为您的 Cloud Run 服务的名称。
    • IMAGE_URL 替换为对容器映像的引用(例如 us-docker.pkg.dev/cloudrun/container/hello:latest)。
    • CONTAINER_PORT 已设置为容器端口,此值不应更改。
    • DELAY 替换为容器启动后执行首次探测之前等待的时长(秒数)。指定一个介于 0 秒到 240 秒之间的值。默认值为 0 秒。
    • THRESHOLD 替换为将探测标记为未就绪之前重试探测的次数。默认值为 3。
    • PERIOD 替换为执行探测的频率(以秒为单位)。指定一个介于 1 秒到 240 秒之间的值。默认值为 10 秒。
  3. 使用以下命令将服务替换为其新配置:

    gcloud run services replace service.yaml