IBM Cloud Docs
使用作业和作业运行

使用作业和作业运行

了解如何在 IBM Cloud® Code Engine中运行作业。 作业并行运行可执行代码的一个或多个实例。 与处理 HTTP 请求的应用程序不同,作业设计为运行一次并退出。 创建作业时,可以指定每次运行作业时使用的工作负载配置信息。

准备工作

  • 了解 Code Engine 中批处理作业工作负载的概念。 有关批处理作业的更多信息,请参阅 批处理作业工作量
  • 计划并选择使代码作为 Code Engine 作业组件运行的方法。 有关创建 Code Engine 工作量类型的更多信息,请参阅 规划 Code Engine
  • 您可以通过两种方式处理作业和作业运行:

Code Engine 提供定制资源定义 (CRD) 方法。 更多信息,请参阅 批处理 CRD 方法

如何使代码作为 Code Engine 作业组件运行?

无论您的代码是作为本地文件或 Git 存储库中的源存在,还是您的代码是存在于公共或专用注册表中的容器映像,Code Engine 都为您提供了一种作为作业运行代码的简化方法。

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

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

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

创建并运行作业之后,还可以使用 任何 上述方法 更新作业,而与创建或先前更新作业的方式无关。

在使用作业时,请记住以下关键事项。

  • 与应用程序映像不同,作业映像没有 HTTP Server。
  • 映像中的可执行程序必须以零代码退出才能视为成功。
  • 可以从公共或专用映像注册表下载映像。 有关更多信息,请参阅 访问容器注册表

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

HTTP 处理注意事项

使用作业 (或应用程序) 时,了解 Code Engine中的基本 HTTP 处理很有用。 请参阅 HTTP 处理注意事项

用于创建和运行作业的选项

了解创建或运行作业时可以指定的选项。 请注意,选项可能因控制台和 CLI 而异。

作业的内存和 CPU

部署作业时,可以指定作业可以使用的内存量和 CPU。 根据作业是计算密集型作业,内存密集型作业还是均衡作业,这些数量可能有所不同。

缺省情况下,将为作业分配 4 G 内存和 1 vCPU。 有关选择内存和 CPU 的更多信息,请参阅 支持的内存和 CPU 组合

使用命令和参数创建和运行作业

您可以为作业定义命令和参数,以便在创建或运行作业时在运行时使用这些命令和参数。

您可以使用 CLI 或控制台向作业添加命令和参数。

要通过控制台添加命令和参数,请使用 CommandArguments 字段。

要使用 CLI 添加命令和参数,请将 --cmd--args 选项添加到 job createjobrun submit 命令。

有关定义命令和参数的更多信息,请参阅 为 Code Engine 工作负载定义命令和参数

使用环境变量创建和运行作业

您可以将环境变量定义为可在运行时供作业使用的“键/值”对,并将其设置为“键/值”对。

您可以在创建作业时定义环境变量,也可以在从控制台或使用 CLI 更新现有作业时定义环境变量。 您可以为作业创建环境变量,这些变量完全引用 configmap (或 secret) 或引用 configmap (或 secret) 中的各个密钥。

有关定义环境变量的更多信息,请参阅 使用环境变量

使用私钥和配置映射创建和运行作业

在 Code Engine中,作业可以使用环境变量来使用私钥和 configmap。

私钥和配置映射都是键/值对。 当映射到环境变量时,将设置 NAME=VALUE 关系,以使环境变量的名称对应于这些映射中每个条目的“键”,并且环境变量的值是该键的“值”。

作业可以使用环境变量来完全引用 configmap (或私钥) 或引用 configmap (或私钥) 中的各个密钥。

有关更多信息,请参阅 使用环境变量引用私钥使用环境变量引用配置映射

如果我希望我的工作无限期地运行怎么办?

通常,作业设计为运行一次并以最大执行时间退出。

但是,假设您希望不断轮询第三方数据存储器。 您可以选择创建应用程序; 但是,应用程序端口必须保持打开状态以处理 HTTP 请求。 相反,如果您不希望为 HTTP 请求提供服务,那么可以选择创建一个在没有最长执行时间的情况下运行且不会超时的作业。

通过 Code Engine,可以选择作业的 mode。 对于应用了最长执行时间的作业,请对作业使用 task 方式。 将根据作业重试限制重新启动失败的实例。 此方式是作业的缺省行为。

如果要创建可以无限期运行且不会超时的作业,请对作业使用 daemon 方式。 失败的实例将无限期自动重新启动。

通过 Code Engine,您只需为所使用的资源付费。 当您的作业以 daemon 方式运行时,请注意该作业始终处于运行状态,直到您删除该作业为止。

有关更多信息,请参阅 创建和运行无限期运行的作业 命令。

作业配额注意事项

使用应用程序,函数和批处理作业时,这些资源将在 Code Engine 项目的上下文中运行。 资源配额是根据每个项目定义的,限制适用于应用程序,功能和批处理作业。

有关 Code Engine 限制的更多信息,请参阅 Code Engine

清理已完成的工作

一周后,自动删除已完成的工作。

后续步骤

既然您熟悉使用 Code Engine 作业的关键概念,是否准备好创建和运行作业? 请参阅

如需了解有关职位的更多信息,请参阅