为服务设置实例数上限

本页面介绍了如何使用默认的 Cloud Run 自动扩缩行为设置可用于 Cloud Run 服务的实例数上限。如需手动扩缩服务,请参阅手动扩缩

通过在 Cloud Run 中指定实例数上限,您可以限制服务响应传入请求的扩缩范围。不过,由于流量激增等原因,实例数可能会在短时间内超过此上限设置。

您可以使用此设置控制您的费用或限制与支持性服务(如数据库)的连接数。

如需了解可能适用于您的服务的实例数上限,请参阅实例数上限

如需详细了解 Cloud Run 自动扩缩容器实例的方式,请参阅实例自动扩缩

服务级与修订版本级实例数上限的对比

您可以在服务级层或修订版本级层配置实例数上限。Google 建议您使用服务级实例数上限,除非您有在修订版本级限制实例数的特定需求。

应用实例数上限时,设置会按如下方式生效:

  • 服务级:立即
  • 修订版本级:在部署修订版本时

标记的修订版本和服务级实例数上限

标记的修订版本会启动,但仅在参与流量分配时才计入服务级实例数上限。

所需的角色

如需获得配置和部署 Cloud Run 服务所需的权限,请让您的管理员为您授予以下 IAM 角色:

如需查看与 Cloud Run 关联的 IAM 角色和权限的列表,请参阅 Cloud Run IAM 角色Cloud Run IAM 权限。如果您的 Cloud Run 服务与Google Cloud API(例如 Cloud 客户端库)进行交互,请参阅服务身份配置指南。如需详细了解如何授予角色,请参阅部署权限管理访问权限

配置服务级实例数上限

您可以在创建新服务部署新修订版本时使用 Google Cloud 控制台、Google Cloud CLI 或 YAML 文件来更改实例数上限设置。

控制台

  1. 在 Google Cloud 控制台中,前往 Cloud Run:

    转到 Cloud Run

  2. 如果您要配置新服务,请选择服务,然后点击部署容器以显示创建服务表单。找到服务扩缩表单。

  3. 如果您要配置现有服务,请点击该服务以显示详情面板,然后点击右上角的 修改服务级扩缩设置

  4. 在标有实例数上限的字段中,输入任意一个从 1 到该服务可用的上限之间的整数值,以设置所需的容器实例数上限。

  5. 点击创建(对于新服务)或部署(对于现有服务)。

gcloud

您可以使用以下命令更新给定服务的实例数量上限

gcloud beta run services update SERVICE --max MAX-VALUE

进行如下替换

  • SERVICE:服务的名称。
  • MAX-VALUE:所需的容器实例数量上限,范围为 1 到您的服务可用的上限之间的任意整数值。

您还可以使用以下命令设置部署期间的实例数量上限:

gcloud beta run deploy --image IMAGE_URL --max MAX-VALUE

进行如下替换

  • IMAGE_URL 替换为对容器映像的引用,例如 us-docker.pkg.dev/cloudrun/container/hello:latest。 如果您使用 Artifact Registry,则必须预先创建制品库 REPO_NAME。网址格式为 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
  • MAX-VALUE:所需的容器实例数上限,范围为 1上限之间的任意整数。

YAML

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

  1. 如果您要创建新的服务,请跳过此步骤。如果您要更新现有服务,请下载其 YAML 配置

    gcloud run services describe SERVICE --format export > service.yaml
  2. 更新 run.googleapis.com/maxScale: 特性:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
      annotations:
        run.googleapis.com/launch-stage: BETA
        run.googleapis.com/maxScale: 'MAX-INSTANCE'

    进行如下替换

    • SERVICE:Cloud Run 服务的名称
    • MAX-INSTANCE:所需的容器实例数量上限,范围为 1 到您的服务可用的上限之间的任意整数值。
  3. 使用以下命令创建或更新服务:

    gcloud run services replace service.yaml

查看服务级实例数上限

如需查看 Cloud Run 服务当前的服务级实例数上限设置,请执行以下操作:

控制台

  1. 在 Google Cloud 控制台中,前往 Cloud Run:

    转到 Cloud Run

  2. 点击相应服务以打开其服务详情面板。

  3. 在服务详情面板右上角的扩缩旁边,查看当前设置。

gcloud

  1. 使用以下命令:

    gcloud run services describe SERVICE
  2. 在返回的配置中找到扩缩:自动(最少 MIN_VALUE 个,最多 MAX_VALUE 个)的值。

配置修订版本级实例数上限

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

默认情况下,Cloud Run 服务配置为最多纵向扩容到 100 个实例。

您可以在创建新服务部署新修订版本时使用 Google Cloud 控制台、Google Cloud CLI 或 YAML 文件来更改实例数上限设置。

控制台

  1. 在 Google Cloud 控制台中,前往 Cloud Run:

    转到 Cloud Run

  2. 在服务列表中找到并点击要更新的服务,以打开该服务的详细信息。

  3. 点击修改和部署新的修订版本以显示修订版本部署表单。

  4. 点击容器标签页。

  5. 找到修订版本扩缩部分。在实例数上限字段中,指定容器实例数上限。

  6. 点击部署

gcloud

您可以使用以下命令更新给定服务的实例数量上限

gcloud beta run services update SERVICE --max-instances MAX-VALUE

进行如下替换

  • SERVICE:服务的名称。
  • MAX-VALUE:所需的容器实例数上限,范围为 1上限之间的任意整数。

YAML

  1. 如果您要创建新的服务,请跳过此步骤。如果您要更新现有服务,请下载其 YAML 配置

    gcloud run services describe SERVICE --format export > service.yaml
  2. 更新 autoscaling.knative.dev/maxScale: 特性:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
      annotations:
        run.googleapis.com/launch-stage: BETA
    spec:
      template:
        metadata:
          annotations:
            autoscaling.knative.dev/maxScale: 'MAX-INSTANCE'
          name: REVISION

    进行如下替换

    • SERVICE:Cloud Run 服务的名称
    • MAX-INSTANCE:所需的容器实例数上限,范围为 1上限之间的任意整数。
    • REVISION 替换为新的修订版本名称或者将其删除(如果存在)。如果您提供新的修订版本名称,则该名称必须满足以下条件:
      • 开头为 SERVICE-
      • 仅包含小写字母、数字和 -
      • 不以 - 结尾
      • 不超过 63 个字符
  3. 使用以下命令创建或更新服务:

    gcloud run services replace service.yaml

查看修订版本级实例数上限设置

如需查看 Cloud Run 服务的当前修订版本级实例数上限设置,请按照以下所述操作:

控制台

  1. 在 Google Cloud 控制台中,前往 Cloud Run:

    转到 Cloud Run

  2. 点击相应服务以打开其服务详情面板。

  3. 点击修订版本标签页。

  4. 在右侧的详细信息面板中,查看容器标签页下列出的修订版本实例数上限设置。

gcloud

  1. 使用以下命令:

    gcloud run services describe SERVICE
  2. 在返回的配置中找到实例数上限:的值。

同时使用服务级和修订版本级实例数下限或上限

下表显示了将服务级实例数上限和修订版本级实例数下限或上限值结合使用时的行为:

服务级设置 修订版本级设置 行为
已设置服务级实例数上限 已设置修订版本级实例数上限 有效实例数上限是修订版本级实例数上限和服务级实例数上限中的较小值。
已设置服务级实例数上限 已设置修订版本级实例数下限 如果服务级实例数上限设置的值低于修订版本级实例数下限,则修订版本最多只能启动至服务级实例数上限,无法达到配置的修订版本级实例数下限。

将服务级实例数上限与流量拆分结合使用

如果您使用流量拆分,则系统会根据流量分配的比例在修订版本之间分布服务级实例数上限。例如,如果服务级实例数上限为 100,按 50/50 的流量分配比例,每个修订版本将分配 50 个实例配额。下表显示了一个示例配置场景:

配置示例 引发的行为
已设置服务级实例数上限(没有修订版本级设置的场景):100
  • 修订版本 A 的流量分配:10%
  • 修订版本 B 的流量分配比例:10%
  • 修订版本 C 的流量分配比例:80%
服务级实例数上限的一部分会分配给每个修订版本。每个修订版本的有效实例数上限会根据流量分配情况确定。修订版本 A 的实例数上限为 10,修订版本 B 的实例数上限为 10,修订版本 C 的实例数上限为 80。