本页面介绍如何通过现有容器映像创建和更新现有 Cloud Run 作业。与监听和处理请求的 Cloud Run 服务不同,Cloud Run 作业仅会运行其任务并在完成后退出。作业不会监听或处理请求。
创建或更新作业后,您可以执行以下操作:
- 作为一次性作业、按计划或作为工作流的一部分执行作业。
- 您可以在执行作业时替换为作业配置的参数。
- 您可以管理各项作业执行并查看执行日志。
您可以将作业构建为单个任务或多个可并行执行的独立任务(最多 10000 个任务)。每个任务都运行一个容器实例,并且可以配置为在发生故障时重试。每个任务都知道其存储在 CLOUD_RUN_TASK_INDEX
环境变量中的索引。任务的总数存储在 CLOUD_RUN_TASK_COUNT
环境变量中。如果您并行处理数据,则代码负责确定哪个任务处理数据的子集。
您可以设置任务的超时,并指定在任务失败的情况下的重试次数。如果任何任务超过其重试次数上限,则该任务将被标记为失败,并且作业执行也会在所有任务都运行后被标记为失败。
默认情况下,每个任务最长运行 10 分钟:您可以将其更改为更短或更长(最长 24 小时)的时间。为此,您可以更改任务超时设置。
作业执行没有显式超时限制:所有任务都完成后,作业执行结束。
作业使用第二代执行环境。
创建和执行所需的 IAM 权限
如需使用 Cloud Run 作业,您需要具有以下角色之一:
- Cloud Run Admin,拥有创建/更新/删除和运行作业的完整权限
- Cloud Run Invoker,可运行作业
- Cloud Run Viewer,可查看和列出作业
如果要配置自定义角色,请使用以下权限:
- run.jobs.{create/update/run/delete/get/list/getIamPolicy/setIamPolicy}
- run.executions.{get/list/delete}
- run.tasks.{get/list}
run.jobs.run
允许用户运行作业,从而启动新的执行。没有单独的 run.executions.create
权限:创建执行的唯一方法是运行作业。
支持的容器存储库和映像
您可以使用已存储在 Artifact Registry、Container Registry(已弃用)或 Docker Hub 中的容器映像。Google 建议使用 Artifact Registry。
您只能使用以下类型的容器映像:
- 存储在与要在其中创建作业或服务的同一项目中的容器映像。
- 来自其他 Google Cloud 项目的容器映像(前提是已设置正确的 IAM 权限)。
- 来自 Artifact Registry、Container Registry 或 Docker Hub 的公共容器映像。
您应仅考虑使用 Docker Hub 部署常用的容器映像,例如 Docker 官方映像或 Docker 赞助的 OSS 映像。为了获得更高的可用性,Google 建议您通过 Artifact Registry 远程制品库部署这些 Docker Hub 映像。
如果您将容器映像存储在其他类型的 Container Registry 中,请按照从不支持的注册表部署映像中的说明进行操作。
创建新作业
您可以使用 Google Cloud 控制台、Google Cloud CLI、YAML 或 Terraform 创建新作业。
控制台
如需创建新作业,请执行以下操作:
点击作业标签页。
点击创建作业,以显示“创建作业”表单。
点击容器、卷、网络、安全性以设置其他作业属性。
- 在“任务容量”下,执行以下操作:
- 在“内存”下拉菜单中,指定所需的内存量。默认值为所需的最小值,即 512 MiB。
- 在 CPU 下拉菜单中,指定所需的 CPU 数量。默认值为所需的最小值,即 1 个 CPU。
在“任务超时”下,指定任务可运行的时长上限(以秒为单位),最长为 24 小时。如需了解使用时长超过一小时的值的完整详情和限制,请参阅设置任务超时。每个任务都必须在此时间段内完成。默认值为 10 分钟(600 秒)。
在每个失败任务的重试次数下,指定任务失败时的重试次数。默认值为 3 次重试。
在“并行”下:
- 在大多数情况下,您可以选择尽可能多地运行并发任务。
- 如果您因作业访问的资源存在扩缩限制而需要设置更小的限值,请选择限制并发任务数上限,然后在自定义并行限制文本框中指定并发任务的数量。
(可选)在相应的标签页中配置其他设置:
配置完作业后,点击创建以在 Cloud Run 中创建作业。
命令行
如需使用命令行,您需要先设置 gcloud CLI。
如需创建新作业,请执行以下操作:
运行以下命令:
gcloud run jobs create JOB_NAME --image IMAGE_URL OPTIONS
或者,使用部署命令:gcloud run jobs deploy JOB_NAME --image IMAGE_URL OPTIONS
- 将
JOB_NAME
替换为您要创建的作业的名称。您可以省略此参数,但如果省略它,系统将提示您输入作业名称。 - 将 IMAGE_URL 替换为对容器映像的引用,例如
us-docker.pkg.dev/cloudrun/container/job:latest
。 (可选)将
OPTIONS
替换为以下任意选项:选项 说明 --tasks
接受大于或等于 1 的整数。默认为 1;最大值为 10000。每个任务都提供环境变量 CLOUD_RUN_TASK_INDEX
(其值介于 0 到任务数减去 1 之间)和CLOUD_RUN_TASK_COUNT
(即任务数)--max-retries
失败任务的重试次数。如果有任何任务的失败次数超过此限制,则整个作业会被标记为失败。例如,如果设置为 1,系统将重试失败的任务一次,即总共尝试两次。默认值为 3。接受 0 到 10 的整数。 --task-timeout
接受类似于“2s”的时长。默认值为 10 分钟;最长为 24 小时。如需了解使用时长超过一小时的值的完整详情和限制,请参阅设置任务超时。 --parallelism
可以并行执行的任务的数量上限。默认情况下,任务会尽快并行启动。如需了解值范围,请参阅并行性。 --execute-now
如果设置了此标志,则在创建作业后立即启动作业执行。等同于依次调用 gcloud run jobs create
和gcloud run jobs execute
。除了上述选项之外,您还可以指定更多配置,例如环境变量或内存限制。
如需查看创建作业时可用的选项的完整列表,请参阅 gcloud run jobs create 命令行文档。
- 将
等待创建作业的操作完成。成功完成后,您会看到一条成功消息。
YAML
您可以将作业规范存储在 YAML
文件中,然后使用 gcloud CLI 进行部署。
使用以下内容创建新的
job.yaml
文件:apiVersion: run.googleapis.com/v1 kind: Job metadata: name: JOB spec: template: spec: template: spec: containers: - image: IMAGE
替换
- 将 JOB 替换为 Cloud Run 作业的名称。 作业名称不得超过 49 个字符,并且在每个区域和项目中必须是唯一的。
- 将 IMAGE 替换为作业容器映像的网址。
您还可以指定更多配置,例如环境变量或内存限制。
使用以下命令部署新作业:
gcloud run jobs replace job.yaml
Terraform
如需了解如何应用或移除 Terraform 配置,请参阅基本 Terraform 命令。
如需创建新的 Cloud Run 作业,请使用 google_cloud_run_v2_job
资源并修改 main.tf
文件,如以下代码段所示。
客户端库
通过以下代码创建作业:
Cloud Run 位置
Cloud Run 是区域级的,这意味着运行 Cloud Run 服务的基础架构位于特定区域,并且由 Google 代管,以便在该区域内的所有可用区以冗余方式提供。
选择用于运行 Cloud Run 服务的区域时,主要考虑该区域能否满足您的延迟时间、可用性或耐用性要求。通常,您可以选择距离用户最近的区域,但除此之外,您还应该考虑 Cloud Run 服务使用的其他 Google Cloud 产品的位置。跨多个位置使用 Google Cloud 产品可能会影响服务的延迟时间和费用。
Cloud Run 可在以下区域使用:
基于层级 1 价格
asia-east1
(台湾)asia-northeast1
(东京)asia-northeast2
(大阪)europe-north1
(芬兰)二氧化碳排放量低
europe-southwest1
(马德里)europe-west1
(比利时)二氧化碳排放量低
europe-west4
(荷兰)europe-west8
(米兰)europe-west9
(巴黎)二氧化碳排放量低
me-west1
(特拉维夫)us-central1
(爱荷华)二氧化碳排放量低
us-east1
(南卡罗来纳)us-east4
(北弗吉尼亚)us-east5
(哥伦布)us-south1
(达拉斯)us-west1
(俄勒冈)二氧化碳排放量低
基于层级 2 价格
asia-east2
(香港)asia-northeast3
(韩国首尔)asia-southeast1
(新加坡)asia-southeast2
(雅加达)asia-south1
(印度孟买)asia-south2
(印度德里)australia-southeast1
(悉尼)australia-southeast2
(墨尔本)europe-central2
(波兰,华沙)europe-west10
(柏林)europe-west12
(都灵)europe-west2
(英国伦敦)二氧化碳排放量低
europe-west3
(德国法兰克福)二氧化碳排放量低
europe-west6
(瑞士苏黎世)二氧化碳排放量低
me-central1
(多哈)me-central2
(达曼)northamerica-northeast1
(蒙特利尔)二氧化碳排放量低
northamerica-northeast2
(多伦多)二氧化碳排放量低
southamerica-east1
(巴西圣保罗)二氧化碳排放量低
southamerica-west1
(智利圣地亚哥)二氧化碳排放量低
us-west2
(洛杉矶)us-west3
(盐湖城)us-west4
(拉斯维加斯)
如果您已创建 Cloud Run 服务,则可以在 Google Cloud 控制台中的 Cloud Run 信息中心内查看区域。
创建新作业时,Cloud Run 服务代理需要能够访问容器(默认情况下能够访问)。
更新现有作业
更改任何配置设置都需要更新作业,即使容器映像没有变化也是如此。请注意,对于任何未更改的设置,系统将继续使用先前的设置。
您可以使用 Google Cloud 控制台、Google Cloud CLI、YAML 或 Terraform 更新现有作业。
控制台
如需更新现有作业,请执行以下操作:
点击作业标签页以显示作业列表。
点击所需的作业,以显示作业详情页面。
点击修改。
如果更改了作业代码,请指定新的容器映像摘要。
(可选)根据需要更改作业中的任务数量。
(可选)点击容器、卷、网络、安全性以根据需要更新任何其他作业属性:
- 在“任务容量”下,执行以下操作:
- 在“内存”下拉菜单中,指定所需的内存量。默认值为所需的最小值,即 512 MiB。
- 在 CPU 下拉菜单中,指定所需的 CPU 数量。默认值为所需的最小值,即 1 个 CPU。
- 在“任务超时”下,指定任务可运行的时长上限(以秒为单位),最长为 24 小时。每个任务都必须在此时间段内完成。默认值为 10 分钟(600 秒)。
- 在每个失败任务的重试次数下,指定任务失败时的重试次数。默认值为 3 次重试。
在“并行”下:
- 在大多数情况下,您可以选择尽可能多地运行并发任务。
- 如果您因作业访问的资源存在扩缩限制而需要设置更小的限值,请选择限制并发任务的数量,然后在自定义并行限制文本框中指定并发任务数上限。
(可选)在相应的标签页中配置其他设置:
配置完作业后,点击保存以在 Cloud Run 中创建作业,然后等待作业创建完成。
命令行
-
在 Google Cloud 控制台中,激活 Cloud Shell。
Cloud Shell 会话随即会在 Google Cloud 控制台的底部启动,并显示命令行提示符。Cloud Shell 是一个已安装 Google Cloud CLI 且已为当前项目设置值的 Shell 环境。该会话可能需要几秒钟时间来完成初始化。
运行以下命令:
gcloud run jobs update JOB_NAME
替换
- 将
JOB_NAME
替换为您要更新的作业的名称。 (可选)将
OPTIONS
替换为以下选项:选项 说明 --tasks
接受不小于 1 的整数。默认为 1;最大值为 10000。每个任务都提供环境变量 CLOUD_RUN_TASK_INDEX
(其值介于 0 到任务数减去 1 之间)和CLOUD_RUN_TASK_COUNT
(即任务数)--max-retries
失败任务的重试次数。如果有任何任务的失败次数超过此限制,则整个作业会被标记为失败。例如,如果设置为 1,系统将重试失败的任务一次,即总共尝试两次。默认值为 3
。 接受 0 到 10 的整数。--task-timeout
接受类似于“2s”的时长。默认值为 10 分钟;最长为 24 小时。 --parallelism
可以并行执行的任务的数量上限。默认情况下,任务会尽快并行启动。如需了解值范围,请参阅并行性。
除了上述选项之外,您还可以设置其他可选的配置设置:
如需查看创建作业时可用的选项的完整列表,请参阅 gcloud run jobs create 命令行文档。
- 将
等待更新作业的操作完成。成功完成后,系统会显示一条成功消息,如下所示:
Job [JOB_NAME] has been successfully updated. View details about this job by running `gcloud run jobs describe JOB_NAME`. See logs for this execution at: https://console.cloud.google.com/logs/viewer?project=PROJECT_ID&resource=cloud_run_revision/service_name/JOB_NAME
YAML
如果您需要下载或查看现有作业的配置,请使用以下命令将结果保存到 YAML 文件:
gcloud run jobs describe JOB --format export > job.yaml
在作业配置 YAML 文件中,根据需要修改任何 spec.template
子属性以更新配置设置,然后重新部署:
Terraform
可以使用 terraform apply
命令在 main.tf
文件中更改作业配置。详细的 Terraform 说明适用于:
如需了解详情,请参阅 terraform apply
命令行选项。
示例代码
如需查看显示简单作业的代码示例,请参阅特定语言的快速入门。
后续步骤
创建或更新作业后,您可以执行以下操作: