更新时间:2024-09-18 GMT+08:00
分享

任务(Job)

任务是负责批量处理短暂的一次性任务(short lived one-off tasks),即仅执行一次的任务,它保证批处理任务的一个或多个Pod成功结束。

任务(Job)是Kubernetes用来控制批处理型任务的资源对象。批处理业务与长期伺服业务(Deployment)的主要区别是批处理业务的运行有头有尾,而长期伺服业务在用户不停止的情况下永远运行。Job管理的Pod根据用户的设置把任务成功完成就自动退出(Pod自动删除)。

任务的这种用完即停止的特性特别适合一次性任务,比如持续集成,配合云容器实例按秒计费,真正意义上做到按需使用。

创建任务

  1. 登录云容器实例管理控制台,左侧导航栏中选择“工作负载 > 任务(Job)”,在右侧页面单击“镜像创建”
  2. 添加基本信息。

    • 任务名称

      请输入以小写字母或数字开头,小写字母、数字、中划线(-)、点(.)组成(其中两点不能相连,点不能与中划线相连),小写字母或数字结尾的1到52字符的字符串。任务名称不支持修改,如需修改名称,需要重新创建。

    • 命名空间

      选择命名空间,如果还未创建命名空间,请参考命名空间创建。

    • 任务描述

      描述信息,少于等于250个字符。

    • Pod规格

      您可以选择使用GPU(只能在GPU型命名空间下)或不使用GPU。

      当前提供3种类型的Pod,包括通用计算型(通用计算型命名空间下使用)、RDMA加速型和GPU加速型(GPU型命名空间下使用)。具体的规格信息请参考约束与限制中的“Pod规格”。

    • 容器配置
      一个Pod可以包含一个或多个运行不同镜像的容器,通常情况下一个Pod中只有一个容器,如果您的应用程序需要多个容器,请单击“添加容器”,然后选择镜像。

      同一个Pod实例中的不同容器如果监听了相同的端口,则会导致端口冲突,Pod可能会启动失败。例如在Pod中添加了一个nginx镜像容器,启动了80端口,如果该Pod中另一个http服务的镜像也启动80端口,那么这个Pod就会出现端口冲突。

      • 我的镜像:展示了您上传到容器镜像服务的镜像。

        如您是IAM用户,您需要参考(可选)上传镜像进账号限设置后才可使用账号的私有镜像。

        CCI当前暂不支持对接第三方镜像仓库。

      • 开源镜像中心:展示了镜像中心的公共镜像。
      • 共享镜像:展示了容器镜像服务中他人共享的镜像。

      镜像选择完成后,需要选择镜像的版本、设置容器名称、设置容器占用的CPU和内存规格,并选择是否开启采集标准输出文件(开启后,应用运维管理AOM将根据实际使用量进行计费)。

      每个租户一个月有500M的免费日志存储空间,超过500M时AOM将根据实际使用量进行收费,计费规则请参见产品价格详情

      对于GPU加速型Pod(仅GPU型命名空间下才可以选择),Pod中只有一个容器能使用GPU,如果您的Pod中有多个容器,您可以通过开启GPU这个开关选择哪个容器使用GPU。

      您还可以为容器做如下高级设置:

      • 存储:支持挂载持久化卷到容器中,以实现数据文件的持久化存储,当前支持云硬盘存储卷、对象存储卷、文件存储卷和极速文件存储卷。单击“添加云硬盘存储卷”、“添加对象存储卷”、“添加文件存储卷”“添加极速文件存储卷”,输入名称、容量、容器内挂载路径,选择磁盘类型。任务创建完成后,可对存储卷进行管理,具体请参见云硬盘存储卷对象存储卷文件存储卷 3.0极速文件存储卷
      • 日志采集:支持根据您配置的日志输出路径,采集应用日志,请自行防爆处理。单击添加日志存储,输入容器内日志路径,调整日志存储空间。负载创建完成后,可在AOM界面查看日志,具体请参见日志管理
      • 环境变量:在容器中设置环境变量,支持手动输入和引用变量。环境变量为应用提供极大的灵活性,您可以在应用程序中使用环境变量,在创建容器时为环境变量赋值,容器运行时读取环境变量的值,从而做到灵活的配置,而不是每次都重新编写应用程序制作镜像。

        手动输入只需要直接输入变量名称和变量值。

        变量引用支持引用PodIP(Pod的IP地址)、PodName(Pod的名称)以及Secret,输入变量名称,选择引用类型、引用值。其中Secret引用的创建请参见使用Secret

      • 存活探针:用于容器的自定义监控检查,如果检查失败,云容器实例将关闭该容器,然后根据默认重启策略来决定是否重启容器。详细步骤请参见健康检查
      • 生命周期:生命周期脚本定义,在容器的生命周期的特定阶段执行调用。详细步骤请参见容器生命周期
      • 启动命令:输入容器启动命令,容器启动后会立即执行。启动命令对应于容器引擎的ENTRYPOINT启动命令,详细内容请参见容器启动命令
      • 配置管理:容器支持挂载ConfigMap和Secret。ConfigMap和Secret的创建请参见使用ConfigMap使用Secret

  3. 单击“下一步:高级设置”,进行任务高级配置。

    任务可以分为一次性任务和自定义任务。

    • 一次性任务:一次性任务每次创建一个Pod,直至一个Pod成功执行,任务完成。
    • 自定义任务:自定义任务的执行次数和每次并行执行的数量。执行次数指任务达到执行完成状态需要成功执行的Pod数量。并行数指任务执行过程中允许同时创建的最大Pod数,并行数应小于执行次数。

    任务执行可以设置超时时间,当任务执行超出该时间时,任务将会被标识为执行失败,任务负载下的所有Pod实例都会被删除。为空时表示不设置超时时间。

  4. 单击“下一步:规格确认”,单击“提交”,单击“返回任务列表”。

    在任务列表中,待任务状态为“执行中”,任务创建成功。您可以单击负载名进入任务详情界面,按F5查看任务实时状态。

使用kubectl创建任务

使用kubectl创建任务请参见创建Job

相关文档