延迟执行作业

本页介绍了如何延迟执行作业。延迟执行功能可让您将非紧急任务最多延迟 12 小时。使用此功能后,系统会在利用率较低的时间段内预配作业,以换取更低的价格。如需了解详情,请参阅价格页面

具体而言:

  • 延迟作业执行的预配时间最长为 12 小时,延迟作业执行中所有任务的总运行时长为 12 小时。这些要求结合起来可确保延迟执行在 24 小时内完成。
  • 鉴于上述情况,延迟作业的任务超时时限为 12 小时。
  • 当延迟作业的执行时间达到时长上限时,系统会取消执行。

常规作业与延迟作业

每个 Cloud Run 作业都是作为常规作业或延迟作业创建的。

无论作业是如何创建的,您都可以将其作为另一种类型的作业来执行。 如需了解详情,请参阅:

价格

如需详细了解 Cloud Run 延迟作业的价格,请参阅 Cloud Run 价格

所需的角色

如需获得创建 Cloud Run 作业所需的权限,请让您的管理员为您授予以下 IAM 角色:

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

创建延迟作业

默认情况下,当您创建并执行新作业时,执行会尽快开始。

借助延迟作业功能,您可以创建从创建时起就内置了延迟执行的作业:

控制台

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

    转到 Cloud Run

  2. 从 Cloud Run 导航菜单中选择作业,然后点击部署容器以显示创建作业表单。

    1. 填写创建作业表单中的字段,具体如创建作业中所述。

    2. 选择延迟执行,将执行时间最多推迟 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

使用设置为 truedelayExecution 属性更新 job.yaml

apiVersion: run.googleapis.com/v1
kind: Job
metadata:
  name: JOB_NAME
spec:
  delayExecution: "true"

将常规作业作为延迟作业执行

如需将常规作业作为延迟作业执行,请执行以下操作:

控制台

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

    转到 Cloud Run

  2. 点击要修改的作业的名称。

  3. 点击查看和修改作业配置

  4. 选择延迟执行

  5. 点击更新

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"

将延迟作业作为常规作业执行

停用延迟执行后,作业会更新为常规作业。这意味着,下次执行此作业时,系统会尽快执行。

如需停用延迟执行,请执行以下操作:

控制台

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

    转到 Cloud Run

  2. 点击要修改的作业的名称。

  3. 点击查看和修改作业配置

  4. 取消选择延迟执行

  5. 点击更新

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 小时内运行。

如需在创建或更新作业后执行延迟作业,请执行以下操作:

控制台

  1. 在 Google Cloud 控制台中,前往 Cloud Run 作业页面:

    转到 Cloud Run 作业

  2. 如果您具有现有延迟作业,请点击该作业以显示作业详情页面,然后选择查看和修改作业配置。如果您要创建新的延迟作业,请选择部署容器

  3. 在创建或更新作业之前,前往页面底部,并勾选立即执行作业复选框。

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