创建普通任务(Job) 操作场景 普通任务是一次性运行的短任务,部署完成后即可执行。正常退出(exit 0)后,任务即执行完成。 普通任务是用来控制批处理型任务的资源对象。批处理业务与长期伺服业务(Deployment、Statefulset)的主要区别是: 批处理业务的运行有头有尾,而长期伺服业务在用户不停止的情况下永远运行。Job管理的Pod根据用户的设置把任务成功完成就自动退出了。成功完成的标志根据不同的spec.completions策略而不同,即: 单Pod型任务有一个Pod成功就标志完成。 定数成功型任务保证有N个任务全部成功。 工作队列型任务根据应用确认的全局成功而标志成功。 前提条件 已创建资源,具体操作请参见购买节点。若已有集群和节点资源,无需重复操作。 步骤 1 (可选)普通任务需要基于镜像创建,若选择私有镜像,用户首先需要将镜像上传至镜像仓库。 步骤 2 登录CCE控制台,在左侧导航栏中选择“工作负载 > 普通任务 Job”,单击“创建普通任务”。 步骤 3 参照下表配置任务基本信息,其中带“”标志的参数为必填参数。 参数 参数说明 任务名称 新建任务的名称,命名必须唯一。 请输入4到63个字符的字符串,可以包含小写英文字母、数字和中划线(),并以小写英文字母开头,小写英文字母或数字结尾。 容器集群 新建任务所在的集群。 命名空间 新建任务所属的命名空间,默认为default。 实例数量 任务的实例数量。任务可以有一个或多个实例,用户可以设置具体实例个数,默认为1。 每个任务实例都由相同的容器部署而成。设置多个实例主要用于实现高可靠性,当某个实例故障时,任务还能正常运行。 任务描述 任务描述信息。 步骤 4 单击“下一步:添加容器”,添加容器和镜像。 1. 单击“选择镜像”,选择需要部署的镜像。 − 我的镜像:展示了您创建的所有镜像仓库。 − 第三方镜像:CCE支持拉取第三方镜像仓库(即镜像仓库之外的镜像仓库)的镜像创建任务。使用第三方镜像时,请确保任务运行的节点可访问公网。第三方镜像的具体使用方法请参见如何使用第三方镜像。 若您的镜像仓库不需要认证,密钥认证请选择“否”,并输入“镜像地址”,单击“确定”。 若您的镜像仓库都必须经过认证(帐号密码)才能访问,您需要先创建密钥再使用第三方镜像,具体操作请参见如何使用第三方镜像。 − 共享镜像:其它租户通过“容器镜像服务”共享给您的镜像将在此处展示,您可以基于共享镜像创建工作负载。 2. 配置镜像参数。 参数 说明 镜像 导入的镜像,您可单击“更换镜像”进行更换。 镜像版本 选择需要部署的镜像版本。 容器名称 容器的名称,可修改。 容器规格 CPU 配额: 申请:容器需要使用的最小CPU值,默认0.25Core。 限制:允许容器使用的CPU最大值。建议设容器配额的最高限额,避免容器资源超额导致系统故障。 内存配额: 申请:容器需要使用的内存最小值,默认0.5GiB。 限制:允许容器使用的内存最大值。如果超过,容器会被终止。 申请和限制的具体请参见6.10.2 设置容器规格。 GPU 配额:当集群中包含GPU节点时,才能设置GPU,无GPU节点不显示此选项。 容器需要使用的GPU百分比。勾选“使用”并设置百分比,例如设置为10%,表示该容器需使用GPU资源的10%。若不勾选“使用”,或设置为0,则无法使用GPU资源。 GPU 显卡:工作负载实例将被调度到GPU显卡类型为指定显卡的节点上。 若勾选“不限制”,容器将会随机使用节点中的任一显卡。您也可以勾选某个显卡,容器将使用特定显卡。 3. (可选)高级设置。 参数 参数说明 生命周期 生命周期脚本定义,主要针对容器类任务的生命周期事件采取的动作。 启动命令:输入容器启动命令,容器启动后会立即执行。详细步骤请参见容器设置。 启动后处理:任务启动后触发。详细步骤请参见设置容器生命周期。 停止前处理:任务停止前触发。详细步骤请参见设置容器生命周期。 环境变量 在容器中添加环境变量,一般用于通过环境变量设置参数。在环境变量页签,单击“添加环境变量”。当前支持三种类型。 手动添加:输入变量名称、变量/变量引用。 密钥导入:输入变量名称,选择导入的密钥名称和数据。您需要提前创建密钥,具体请参见创建密钥。 配置项导入:输入变量名称,选择导入的配置项名称和数据。您需要提前创建配置项,具体请参见创建配置项。 数据存储 支持挂载本地磁盘或者云存储到容器中,以实现数据文件的持久化存储。 详细步骤请参见存储管理。 容器日志 CCE支持配置工作负载日志策略,便于日志收集分析,以及按周期防爆处理。详细步骤请参见采集容器标准输出日志。 4. (可选)一个任务实例包含1个或多个相关容器。若您的任务包含多个容器,请单击“添加容器”,再执行添加容器的操作。 步骤 5 配置完成后,单击“创建”。 待状态为“执行中”,普通任务创建成功。 使用kubectl创建Job Job的配置参数如下所示。 spec.template格式与Pod相同。 RestartPolicy仅支持Never或OnFailure。 单个Pod时,默认Pod成功运行后Job即结束。 .spec.completions表示Job结束需要成功运行的Pod个数,默认为1。 .spec.parallelism表示并行运行的Pod的个数,默认为1。 spec.backoffLimit表示失败Pod的重试最大次数,超过这个次数不会继续重试。 .spec.activeDeadlineSeconds表示Pod运行时间,一旦达到这个时间,Job即其所有的Pod都会停止。且activeDeadlineSeconds优先级高于backoffLimit,即到达activeDeadlineSeconds的Job会忽略backoffLimit的设置。 根据.spec.completions和.spec.Parallelism的设置,可以将Job划分为以下几种类型。 任务类型 Job类型 说明 使用示例 一次性Job 创建一个Pod直至其成功结束 数据库迁移 固定结束次数的Job 依次创建一个Pod运行直至completions个成功结束 处理工作队列的Pod 固定结束次数的并行Job 依次创建多个Pod运行直至completions个成功结束 多个Pod同时处理工作队列 并行Job 创建一个或多个Pod直至有一个成功结束 多个Pod同时处理工作队列 以下是一个Job配置示例,保存在myjob.yaml中,其计算π到2000位并打印输出。 apiVersion: batch/v1 kind: Job metadata: name: piwithtimeout spec: completions: 50