IBM Cloud Docs
运行和更新作业

运行和更新作业

通过本教程,使用 IBM Cloud® Code Engine 控制台运行批处理作业。

作业并行运行可执行代码的一个或多个实例。 与处理 HTTP 请求的应用程序不同,作业只运行一次就会退出。 创建作业时,可以指定每次运行作业时使用的工作负载配置信息。

准备工作

有关批处理作业的更多信息,请参阅 批处理作业工作量

要使用 Code Engine 控制台,请转至 Code Engine 概述

所有 Code Engine 用户都需要具有现收现付帐户。 教程可能会产生成本。 使用“成本估算器”根据您的预计使用量生成成本估算。 有关更多信息,请参阅 Code Engine 定价

创建作业

使用 icr.io/codeengine/helloworld 映像创建 Code Engine 作业。 此作业打印 Hello from helloworld! I'm a task job!

  1. 打开 Code Engine“概述”页面。
  2. 选择 让我们开始
  3. 选择工作
  4. 从可用项目列表中选择一个项目。 您还可以 创建新的。 请注意,您必须具有所选项目才能创建作业。
  5. 输入作业的名称,并为容器映像指定 icr.io/codeengine/helloworld。 使用项目中独一无二的工作名称。 对于此示例,您不需要修改环境变量或运行时设置的缺省值。 有关用于此示例的代码的更多信息,请参阅 helloworld
  6. 单击创建

运行作业

创建作业并指定工作负载配置信息后,即可运行作业。 您可以覆盖某些配置信息。

请注意,运行作业时,将下载并部署所引用容器映像的最新版本,除非为该映像指定了标记。 如果为映像指定了标记,那么标记的映像将用于作业。

  1. 导航至您的工作页面:

    • Code Engine "项目" 页面中,单击项目的名称。 单击 作业 以处理作业和作业运行。
    • 从“作业”页面,单击 作业 选项卡,然后单击要运行的作业的名称。
  2. 在作业页面中,单击 提交作业 以提交基于当前配置的作业。

  3. 在“提交作业”窗格中,接受所有默认值,然后再次单击“提交作业”运行作业。

在“提交作业”窗格中,您可以查看并选择更改默认配置值,如实例、CPU、内存、作业重试次数和作业超时。 您可以为要运行的并行作业实例指定数组大小数组索引。 对于 数组大小,提供要为此作业并行运行的实例数。 对于数组索引,请提供一个以逗号分隔的自定义索引集列表。 例如,要使用自定义的 5 索引集运行此作业,请指定 3,12-14,25。 您还可以 指定作业数组大小的定制值,这将更新自动注入的 JOB_ARRAY_SIZE 环境变量的值。 提交此作业后,系统会在“作业详细信息”页面上显示作业实例的状态。 如果在任务详细信息页面 Configuration 部分的“提交任务”窗格中指定阵列大小而不是阵列索引,则此信息将作为阵列索引提供。

访问作业详细信息

查找有关作业的详细信息。

提交作业后,将在控制台的“作业运行详细信息”页面中提供特定作业运行的结果。 在控制台中,您还可以从“作业”页面查看作业和特定作业运行的详细信息。

  • 要查看作业详细信息,请单击 作业 选项卡,然后单击要使用的作业的名称。
  • 要查看特定作业运行的详细信息,请单击 作业运行 选项卡,然后单击要使用的作业运行的名称。

如果作业的任何实例运行失败,您可以采取以下措施:

  1. 单击“重新运行失败的索引”,重新运行失败索引的作业。 在“提交任务”窗格中,查看并选择更改配置值,包括阵列索引Array索引部分会自动列出运行失败的作业实例的索引。

如需排除常见作业运行索引错误,请参阅 了解作业运行索引失败的原因

  1. 单击“提交作业”,为失败的索引提交作业。

您可以在添加日志记录功能之后查看作业日志。 有关更多信息,请参阅 从控制台查看作业日志

更新作业

您可以通过微调作业配置来管理作业,包括更新代码、容器映像、代码参数或命令、运行时实例资源或环境变量。

当作业处于就绪状态时,您可以更新该作业。 让我们更新之前创建的作业,通过更新环境变量来更改问候语和环境变量的输出。 当向 icr.io/codeengine/helloworld 示例任务发送请求时,该任务会读取环境变量 TARGET 并打印 "Hello ${TARGET}!"。 如果该环境变量为空,则返回 "Hello World!"。 有关本示例所用代码的更多信息,请参阅 helloworld.

  1. 导航至您的工作页面。

    • Code Engine "项目" 页面中,单击项目的名称。 单击 作业 以处理作业和作业运行。
    • 从“作业”页面,单击 作业 选项卡,然后单击要更新的作业的名称。
  2. 从“配置> 环境变量”选项卡中,单击 添加环境变量。 添加名称为 TARGET 且值为 Sunshine 的字面值环境变量。 icr.io/codeengine/helloworld 输出消息 Hello <value_of_TARGET>!>

  3. 单击“添加”添加环境变量。

  4. 单击部署

  5. 单击 提交作业

  6. 从“提交作业”窗格中,复审并 (可选) 更改缺省配置值,例如实例,CPU,内存,作业重试次数和作业超时。 您可以为要运行的并行作业实例指定数组大小数组索引。 对于 数组大小,提供要为此作业并行运行的实例数。 对于数组索引,请提供一个以逗号分隔的自定义索引集列表。 例如,要使用自定义的 5 索引集运行此作业,请指定 3,12-14,25。 再次单击 提交作业 以运行作业。 系统会在“作业详细信息”页面上显示作业实例的状态。

  7. 通过 从控制台查看此作业的作业日志,该作业的输出为 Hello Sunshine!

后续步骤

  • 创建作业后,提交作业以运行该作业。 请参阅 运行作业。 您可以多次运行作业。

  • 运行作业 后,要查看作业和作业运行的详细信息,请参阅 访问作业详细信息

  • 既然已创建作业,请考虑使作业由事件驱动。 通过使用事件预订,您可以通过 定期调度 来触发作业,或者将作业设置为对诸如 文件上载 之类的事件作出反应。

  • 您可以通过以下 任何 方式 更新作业 及其引用的代码,而与创建或先前更新作业的方式无关。

    • 如果您具有容器映像,那么根据 Open Container Initiative(OCI)标准,您只需提供对该映像的引用,这将在创建 (或更新) 作业时指向容器注册表的位置。 您可以从 公共注册表专用注册表 中的映像创建 (或更新) 作业,然后从作业运行中访问引用的映像。

      如果使用 job create 命令创建了作业,并且指定了 --build-source 选项以从本地或存储库源构建容器映像,并且要将作业更改为指向其他容器映像,那么必须首先从作业中除去该构建的关联。 例如,运行 ibmcloud ce job update -n JOB_NAME --build-clear。 从作业中除去构建的关联后,可以更新作业以引用其他映像。

    • 如果从位于 Git 存储库中的源代码开始,那么可以选择让 Code Engine 负责从源构建映像,并使用 单个 操作创建 (或更新) 作业。 在此场景中,Code Engine 将映像上载到 IBM Cloud® Container Registry。 要了解更多信息,请参阅 从存储库源代码创建作业。 如果想要对映像的构建进行更多控制,那么可以选择在创建 (或更新) 作业并运行作业之前使用 Code Engine 来 构建映像

    • 如果是从本地工作站上的源代码开始,那么可以选择让 Code Engine 负责从源构建映像并使用 单个 CLI 命令创建作业。 在此场景中,Code Engine 将映像上载到 IBM Cloud® Container Registry。 要了解更多信息,请参阅 使用 CLI 从本地源代码创建作业。 如果要对映像构建进行更多控制,那么可以选择在创建 (或更新) 作业并运行作业之前使用 Code Engine 来 构建映像

    例如,您可以选择让 Code Engine 在为作业开发源时处理本地源的构建。 然后,在映像成熟后,可以更新作业以引用所需的特定映像。 您可以根据需要重复此过程。

    运行更新后的作业时,引用的容器映像的最新版本将用于作业运行,除非为该映像指定了标记。 如果为映像指定了标记,那么标记的映像将用于作业运行。

要查找更多代码示例吗? 请查看 样本 IBM Cloud Code Engine GitHub 存储库