文档首页 > > 用户指南> 工作负载> 创建普通任务(Job)

创建普通任务(Job)

分享
更新时间: 2020/05/18 GMT+08:00

普通任务是一次性运行的短任务,部署完成后即可执行。正常退出(exit 0)后,任务即执行完成。

普通任务是用来控制批处理型任务的资源对象。批处理业务与长期伺服业务(Deployment、Statefulset)的主要区别是:

批处理业务的运行有头有尾,而长期伺服业务在用户不停止的情况下永远运行。Job管理的Pod根据用户的设置把任务成功完成就自动退出了。成功完成的标志根据不同的spec.completions策略而不同,即:

  • 单Pod型任务有一个Pod成功就标志完成。
  • 定数成功型任务保证有N个任务全部成功。
  • 工作队列型任务根据应用确认的全局成功而标志成功。

准备工作

已创建资源,具体操作请参见购买节点(按需计费)。若已有集群节点资源,无需重复操作。

操作步骤

  1. (可选)普通任务需要基于镜像创建,若选择私有镜像,用户首先需要将镜像上传至镜像仓库。

    镜像仓库的使用步骤请参考上传镜像至容器镜像服务

  2. 登录CCE控制台,在左侧导航栏中选择工作负载 > 普通任务 Job”,单击“创建普通任务”
  3. 参照表1配置任务基本信息,其中带“*”标志的参数为必填参数。

    表1 任务基本信息

    参数

    参数说明

    * 任务名称

    新建任务的名称,命名必须唯一。

    * 容器集群

    新建任务所在的集群。

    * 命名空间

    新建任务所属的命名空间,默认为default。

    * 实例数量

    任务的实例数量。任务可以有一个或多个实例,用户可以设置具体实例个数,默认为1。

    每个任务实例都由相同的容器部署而成。设置多个实例主要用于实现高可靠性,当某个实例故障时,任务还能正常运行。

    CCI弹性承载

    该参数仅在安装virtual kubelet插件后才显示,具体请参见virtual kubelet

    勾选此选项后,当集群资源不足时,支持将Pod部署到CCI集群。

    任务描述

    任务描述信息。

  4. 单击“下一步”,添加容器。

    1. 单击“选择镜像”,选择需要部署的镜像。
      • 我的镜像:展示了您创建的所有镜像仓库。
      • Dockerhub官方镜像:展示了Dockerhub仓库中的官方镜像。
      • 第三方镜像:CCE支持拉取第三方镜像仓库(即镜像仓库与Dockerhub之外的镜像仓库)的镜像创建任务。使用第三方镜像时,请确保任务运行的节点可访问公网。第三方镜像的具体使用方法请参见如何使用第三方镜像
        • 若您的镜像仓库不需要认证,密钥认证请选择“否”,并输入“镜像地址”,单击“确定”
        • 若您的镜像仓库都必须经过认证(帐号密码)才能访问,您需要先创建密钥再使用第三方镜像,具体操作请参见如何使用第三方镜像
      • 共享镜像:其它租户通过“容器镜像服务”共享给您的镜像将在此处展示,您可以基于共享镜像创建工作负载。
    2. 配置镜像参数。
      表2 添加容器参数说明

      参数

      说明

      镜像

      导入的镜像,您可单击“更换镜像”进行更换。

      * 镜像版本

      若选择Dockerhub官方镜像,请选择需要部署的镜像版本。

      * 容器名称

      容器的名称,可修改。

      容器规格

      申请和限制的含义如下,具体请参见 设置容器规格
      • 申请:表示容器运行所需最少资源。
      • 限制:若担心容器超载,导致系统故障。建议设容器配额的最高限制。确保容器资源不会超额。
      • GPU设置:
        说明:

        当集群中包含GPU节点时,才能设置GPU。

        • GPU配额:勾选申请,并设置百分比,例如设置为10%,表示该容器需使用GPU资源的10%。若不勾选申请,或设置为0,则无法使用GPU资源。
        • GPU显卡:若勾选“不限制”,容器将会随机使用节点中的任一显卡。您也可以勾选某个显卡,容器将使用特定显卡。
    3. (可选)高级设置。
      表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划分为以下几种类型。

表4 任务类型

Job类型

说明

使用示例

一次性Job

创建一个Pod直至其成功结束

数据库迁移

固定结束次数的Job

依次创建一个Pod运行直至completions个成功结束

处理工作队列的Pod

固定结束次数的并行Job

依次创建多个Pod运行直至completions个成功结束

多个Pod同时处理工作队列

并行Job

创建一个或多个Pod直至有一个成功结束

多个Pod同时处理工作队列

以下是一个Job配置,其计算π到2000位并打印输出。

apiVersion: batch/v1
kind: Job
metadata:
  name: pi-with-timeout
spec:
  completions: 50        # Job结束需要运行50个Pod,这个示例中就是打印π 50次
  parallelism: 5        # 并行5个Pod
  backoffLimit: 5        # 最多重试5次
  template:
    spec:
      containers:
      - name: pi
        image: perl
        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      restartPolicy: Never

相关操作

普通任务创建完成后,您还可执行表5中操作。

表5 其他操作

操作

操作说明

查看YAML

单击任务名称后的“查看YAML”,可查看到当前任务对应的YAML文件。

删除普通任务

  1. 选择待删除的任务,单击操作列的“删除”
  2. 单击“确定”。

    任务删除后将无法恢复,请谨慎操作。

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问