本页介绍了如何延迟执行作业。延迟执行功能可让您将非紧急任务最多延迟 12 小时。使用此功能后,系统会在利用率较低的时间段内预配作业,以换取更低的价格。如需了解详情,请参阅价格页面。
具体而言:
- 延迟作业执行的预配时间最长为 12 小时,延迟作业执行中所有任务的总运行时长为 12 小时。这些要求结合起来可确保延迟执行在 24 小时内完成。
- 鉴于上述情况,延迟作业的任务超时时限为 12 小时。
- 当延迟作业的执行时间达到时长上限时,系统会取消执行。
常规作业与延迟作业
每个 Cloud Run 作业都是作为常规作业或延迟作业创建的。
无论作业是如何创建的,您都可以将其作为另一种类型的作业来执行。 如需了解详情,请参阅:
价格
如需详细了解 Cloud Run 延迟作业的价格,请参阅 Cloud Run 价格。
所需的角色
如需获得创建 Cloud Run 作业所需的权限,请让您的管理员为您授予以下 IAM 角色:
- Cloud Run 作业的 Cloud Run Developer (
roles/run.developer) 角色 - 服务身份的 Service Account User (
roles/iam.serviceAccountUser) 角色 - 针对作业容器映像的 Artifact Registry 仓库的 Artifact Registry Reader (
roles/artifactregistry.reader)
如需查看与 Cloud Run 关联的 IAM 角色和权限的列表,请参阅 Cloud Run IAM 角色和 Cloud Run IAM 权限。如果您的 Cloud Run 作业与Google Cloud API(例如 Cloud 客户端库)进行交互,请参阅服务身份配置指南。如需详细了解如何授予角色,请参阅部署权限和管理访问权限。
创建延迟作业
默认情况下,当您创建并执行新作业时,执行会尽快开始。
借助延迟作业功能,您可以创建从创建时起就内置了延迟执行的作业:
控制台
在 Google Cloud 控制台中,前往 Cloud Run 页面:
从 Cloud Run 导航菜单中选择作业,然后点击部署容器以显示创建作业表单。
填写创建作业表单中的字段,具体如创建作业中所述。
选择延迟执行,将执行时间最多推迟 12 小时。
gcloud
使用 --delay-execution 标志创建作业:
gcloud beta run jobs create JOB_NAME \ --image IMAGE_URL \ --delay-execution \ --region=REGION
如果您将作业创建为延迟作业,则无需添加 --delay-execution 标志即可执行该作业:
gcloud beta run jobs execute JOB_NAME \ --region=REGION
YAML
使用设置为 true 的 delayExecution 属性更新 job.yaml:
apiVersion: run.googleapis.com/v1 kind: Job metadata: name: JOB_NAME spec: delayExecution: "true"
将常规作业作为延迟作业执行
如需将常规作业作为延迟作业执行,请执行以下操作:
控制台
在 Google Cloud 控制台中,前往 Cloud Run 页面:
点击要修改的作业的名称。
点击查看和修改作业配置。
选择延迟执行。
点击更新。
gcloud
运行以下命令:
gcloud beta run jobs execute JOB_NAME \ --async \ --delay-execution \ --region=REGION
YAML
更新您的 job.yaml,并将 delayExecution 属性设置为 true:
apiVersion: run.googleapis.com/v1 kind: Job metadata: name: JOB_NAME spec: delayExecution: "true"
将延迟作业作为常规作业执行
停用延迟执行后,作业会更新为常规作业。这意味着,下次执行此作业时,系统会尽快执行。
如需停用延迟执行,请执行以下操作:
控制台
在 Google Cloud 控制台中,前往 Cloud Run 页面:
点击要修改的作业的名称。
点击查看和修改作业配置。
取消选择延迟执行。
点击更新。
gcloud
使用 --no-delay-execution 标志。您还可以将此标志与 update 命令结合使用。如果您为常规作业使用此标志,系统会更新该作业以停用延迟执行。
gcloud beta run jobs update JOB_NAME \ --image IMAGE_URL \ --no-delay-execution \ --region=REGION
YAML
更新您的 job.yaml,并将 delayExecution 属性设置为 false:
apiVersion: run.googleapis.com/v1 kind: Job metadata: name: JOB_NAME spec: delayExecution: "false"
在创建或更新时执行延迟作业
使用 --execute-now 标志创建延迟作业时,系统会在创建时触发执行,并且作业会在接下来的 12 小时内运行。
如需在创建或更新作业后执行延迟作业,请执行以下操作:
控制台
在 Google Cloud 控制台中,前往 Cloud Run 作业页面:
如果您具有现有延迟作业,请点击该作业以显示作业详情页面,然后选择查看和修改作业配置。如果您要创建新的延迟作业,请选择部署容器。
在创建或更新作业之前,前往页面底部,并勾选立即执行作业复选框。
gcloud
在创建或更新延迟作业时指定 --execute-now 标志:
创建作业:
gcloud run jobs create JOB_NAME \ --image IMAGE_URL \ --delay-execution \ --execute-now \ --region=REGION
更新作业:
gcloud run jobs update JOB_NAME \ --execute-now \ --region=REGION