关于此 Codelab
1. 简介
上次更新日期:2022 年 5 月 6 日
Cloud Run 作业
Cloud Run 作业允许您在 Cloud Run 上运行长时间运行的作业。
此 Codelab 提供信息严格,可帮助您了解何时以及如何使用 Cloud Run 作业。它可以帮助您完成 Codelab Cloud Run 作业使用入门,您可以在此实践中使用 Google Cloud Console 构建容器,创建并运行 Cloud Run 作业,以及更新和安排作业作业。
学习内容
- 什么是 Cloud Run 作业
- 何时使用 Cloud Run 作业
- Cloud Run 作业工作流
- 如何创建 Cloud Run 作业
- 如何执行 Cloud Run 作业
- 如何按计划执行作业
- 如何查看执行状态
- 如何管理作业和作业执行
- 如何检测作业完成情况
- 如何更新作业
2. Cloud Run 作业概览
在 Cloud Run 上运行代码的方法有两种。您可以将其作为一项服务持续运行,
或者,如果您的代码在执行后停止,则可以使用 Cloud Run 作业。
虽然 Cloud Run 服务非常适合无限期运行 HTTP 请求的容器,但 Cloud Run 作业非常适合运行完成而不处理请求的容器,例如数据处理和管理作业。
Cloud Run 作业的其他使用场景包括:
- 运行脚本以执行数据库迁移或其他操作任务。
- 高度并行处理 Cloud Storage 存储分区中的所有文件。
- 每月创建并发送帐单。
- 每 4 小时将数据库查询结果保存为 XML 并上传文件。
与支持长时间运行的作业的其他平台相比,Cloud Run 作业在创建后会快速启动。简单容器只需 10 秒即可启动,具体取决于容器的复杂性。这使得 Cloud Run 作业非常适合需要几分钟来启动虚拟机的问题。
3. Cloud Run 作业工作流
Cloud Run 作业工作流包含两个简单步骤:
作业可以启动一个容器实例来运行代码,也可以并行启动多个相同且独立的容器实例,具体方法是指定运行的任务数量。 例如,如果您要从 Cloud Storage 读取 1000 张图片来调整其大小和进行剪裁,那么与处理由许多容器实例同时处理的图片相比,连续处理这些图片的速率要慢。
4. 创建作业
要创建作业,您可以使用以下命令使用 Cloud Console 或 gcloud CLI:
gcloud beta run jobs create JOB_NAME --image IMAGE_URL OPTIONS
替换:
- 将
JOB_NAME
替换为您要创建的作业的名称。 - 引用了容器映像的
IMAGE_URL
。 - (可选)将
OPTIONS
替换为任何可用标记。如需查看完整的标志列表,请运行gcloud beta run jobs create --help
。
示例标记包括:
--tasks
:要运行的任务数。-–max retries
,表示重试失败任务的次数。--parallelism
:可并行运行的最大任务数。--execute-now
:在创建作业后立即执行该作业。--async
,创建新作业后立即退出作业。
您还可以使用常规 Cloud Run 功能来保护 Cloud Run 作业,并将其连接到 Google Cloud Platform (GCP) 环境的其余部分。
5. 执行作业
如需执行作业,您可以使用以下命令使用 Cloud Console 或 gcloud CLI:
- 在Cloud Console ,点击作业名称,然后点击执行。
- 在 gcloud CLI 中,使用以下命令:
gcloud beta run jobs execute JOB_NAME EXECUTION_OPTIONS
将 JOB_NAME
替换为作业名称。(可选)替换 EXECUTION_OPTIONS
以指定:
- 创建作业后立即执行作业。
gcloud beta run jobs create JOB_NAME --execute-now
- 如果您希望等待执行完成再退出。
gcloud beta run jobs create JOB_NAME --wait
- 如果您希望在新执行之后立即退出。
gcloud beta run jobs create JOB_NAME --async
6. 按计划执行作业
如果您要按计划执行作业,请使用 Cloud Scheduler。
例如,您可能需要定期创建并发送帐单,或者将数据库查询的结果保存为 XML,然后每隔几小时上传文件。
借助 Cloud Scheduler,您可以在一个位置安排作业并管理您的所有自动化任务。
- 每周、每天或每小时的同一时间运行批处理作业和大数据作业,保证执行,并在失败时重试。
- 以可靠且全代管式方式,自动执行与运行云基础架构相关的诸多繁琐任务。
- 几乎自动执行任何操作。
- 通过单个界面或命令行界面查看和管理您的所有作业。
设置环境以使项目能够使用 Cloud Scheduler,您就可以创建 Cloud Run 作业,然后通过输入名称、区域、说明、频率和时区来定义时间表。然后,Cloud Scheduler 会以您指定的频率执行 Cloud Run 作业。
7. 查看作业执行状态
作业执行后,您可以在 Cloud Logging 日志中查看日志,并在 Cloud Monitoring 中查看监控数据。
如需查看日志,您可以执行以下操作:
- 使用 Cloud Console 中的 Cloud Run 页面。
- 使用 Cloud Console 中的 Cloud Logging 日志浏览器。
这两种查看方法都会检查 Cloud Logging 中存储的相同日志,但 Cloud Logging 日志浏览器可提供更多详细信息和更多过滤功能。
Cloud Monitoring 提供 Cloud Run 性能监控、指标以及提醒功能,以便在超出特定指标阈值时发送通知。Cloud Run 会自动与 Cloud Monitoring 集成,无需设置或配置。这意味着系统会在 Cloud Run 作业运行时自动捕获其指标。
您可以在 Cloud Monitoring 或控制台的 Cloud Run 页面中查看指标。Cloud Monitoring 提供了更多图表和过滤选项。
8. 管理作业和作业执行
如需管理您的作业,请使用 Cloud Console 或 gcloud CLI 查看以下内容的列表:
您还可以:
- 通过删除正在运行的作业来执行作业。
- 删除未运行的作业执行。
- 删除职位。
删除作业会取消该作业的所有待处理作业,但作业日志和监控数据在日志保留期限的剩余时间(通常为 30 天)内仍可继续使用。Cloud Monitoring 继续提供数据监控功能。
9. 检测作业执行完成
您可以通过以下几种方式检测作业的执行是否完成:
- 运行带有
--wait
标志的作业,gcloud CLI 会在作业完成后退出。
gcloud beta run jobs execute JOB_NAME --wait
- 轮询 REST API 的 executions.get 端点,并将
Completed
状态设置为True
。 - 执行完成后,查找写入的日志条目,如下所示:
Completed condition status changed to True for Execution sleepy-l8zjp.
如需查找此日志消息,请在 Cloud Logging 中运行以下查询:
resource.type="cloud_run_revision"
resource.labels.revision_name="EXECUTION_NAME" log_name="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event"
protoPayload.response.status.conditions.type="Completed"
protoPayload.response.status.conditions.status="True"
您还可以轮询写入输出的位置,以检测输出何时显示。不过,仅当写入输出是作业的最后一项操作时,才能正常发挥作用。例如,如果您的作业在写入输出后执行清理,则作业在写入输出后仍可能会失败。
10. 更新作业
创建作业时,您可以使用标记或确切摘要来指定容器映像:
- 代码示例:
gcr.io/my-project/my-image:tag
- 摘要示例:
gcr.io/my-project/my-image@sha256:41f34ab970ee...
如果二者未指定,则使用 :latest
标记。
如何更新作业以运行最新版本的代码,取决于您是使用标记还是摘要来指定容器映像。
如果您使用标记指定了容器映像,则 Cloud Run 会在您执行作业时将映像解析为特定的摘要。这意味着,您无需在下次运行作业时明确更新作业以选择最新版本的容器。
如果您希望在每次运行作业时都使用特定的容器摘要,则可以指定一个具有确切摘要的容器映像。在这种情况下,如果您希望作业提取您做出的代码更改,则必须显式更新作业以使用其他摘要:
gcloud alpha run jobs update JOB_NAME --image NEW-IMAGE
无论您如何指定容器映像,执行的所有任务将始终使用相同的摘要。
应用更新期间,您无法开始新的执行作业。您需要等待更新完成,这通常需要几秒钟的时间。 如果更新失败,则无法创建新的执行作业。您需要先再次更新才能使作业恢复到良好的状态。
11. 恭喜
恭喜,您已了解何时以及如何使用 Cloud Run 作业!
您学习了:
- 什么是 Cloud Run 作业
- 何时使用 Cloud Run 作业
- Cloud Run 作业工作流
- 如何创建 Cloud Run 作业
- 如何执行 Cloud Run 作业
- 如何按计划执行作业
- 如何查看执行状态
- 如何管理作业和作业执行
- 如何检测作业完成情况
- 如何更新作业
后续操作
帮助
如需查看完整的 gcloud 参考文档,请使用 help 命令:
gcloud alpha run jobs --help
gcloud alpha run jobs executions --help