创建任务工作负载Job

Job主要用于运行短暂的、一次性的批量任务(short-lived one-off tasks),确保批处理任务的一个或多个Pod成功执行。ACS集群支持通过控制台创建任务类型的应用,本文介绍如何创建一个Job类型工作负载。

背景信息

根据.spec.completions(需要成功完成的Pod数,默认为1)和.spec.parallelism(Job可以并行运行的最大副本数,默认为1)的配置,可以将Job划分为以下几种类型:

Job类型

completions

parallelism

使用示例

行为

一次性Job

1

1

数据库迁移

运行一个Pod直至其成功完成。

固定结束次数的Job

2+

1

处理工作队列的Pod

Pod依次运行,直至成功完成的Pod数达到completions配置的数量。

带有工作队列的并行Job

1

2+

多个Pod同时处理工作队列,不要求成功数

多个Pod并行运行,直至有一个Pod成功完成。

固定结束次数的并行Job

2+

2+

多个Pod同时处理工作队列,要求成功数

多个Pod并行运行,直至成功完成的Pod数达到completions配置的数量。

操作步骤

步骤一:配置应用基本信息

  1. 登录容器计算服务控制台,在左侧导航栏选择集群

  2. 集群页面,单击目标集群ID或者目标集群右侧操作列下的详情

  3. 在集群管理页左侧导航栏,选择工作负载 > 任务

  4. 任务页面,单击使用镜像创建

  5. 应用基本信息配置向导页面,配置应用的基本信息。

    配置项

    描述

    应用名称

    输入应用的名称。

    类型

    选择任务(Job)

    标签

    为该应用添加一个标签,标识该应用。

    注解

    为该应用添加一个注解(Annotation)。

    实例类型

    选择实例类型。关于实例类型的说明,请参见ACS Pod实例概述

    QoS类型

    选择QoS类型。更多信息,请参见算力质量定义

    • 通用型实例支持defaultbest-effort

    • 性能型实例仅支持default

  6. 完成基本信息配置后,单击下一步

步骤二:配置容器

容器配置向导页面中,配置容器的镜像、资源、端口、环境变量、生命周期、数据卷和日志等信息。

说明

容器1页签右侧,单击添加容器,可以为应用的Pod设置多个容器。

  1. 基本配置区域,完成容器的基本配置。

    配置项

    说明

    镜像名称

    • 选择镜像

      单击选择镜像,选择所需的镜像。

      • 容器镜像服务企业版:可以选择托管在容器镜像服务ACR中的企业版镜像。需要选择镜像所属地域,以及镜像服务实例。关于ACR的更多信息,请参见什么是容器镜像服务ACR

      • 容器镜像服务个人版(需要提前开通):可以选择托管在容器镜像服务ACR中的个人版镜像。需要选择镜像所属地域,以及镜像服务实例。

      • 制品中心:包含应用容器化基础OS镜像、基础语言镜像、AI/大数据相关镜像,本示例以制品中心的Nginx镜像为例说明。关于制品中心的更多信息,请参见制品中心

    • (可选)设置镜像拉取策略

      镜像拉取策略的下拉列表中选择镜像拉取策略。默认情况下不设置,采用Kubernetes默认的IfNotPresent。

      • 优先使用本地镜像(IfNotPresent):如果本地已经存在该镜像(之前拉取过该镜像至宿主机中),则不会再次拉取,如果本地不存在该镜像,则会拉取该镜像。

      • 总是拉取镜像(Always):表示每次部署或扩容都会重新拉取镜像,而不会使用本地镜像。

      • 仅使用本地镜像(Never):仅使用本地镜像。

    • (可选)设置镜像密钥

      单击设置镜像密钥,为私有镜像设置密钥以确保安全。

      • 对于ACR个人版实例,您可以通过设置镜像密钥的方式拉取容器镜像。设置密钥的更多信息,请参见管理保密字典

      • 对于ACR企业版实例,您可以通过免密组件拉取镜像。具体操作,请参见免密拉取ACR镜像

    所需资源

    为容器设置资源额度。

    • CPU:可指定该容器CPU资源配额和资源限制,默认资源配额和资源限制相等,计费模式为按量计费。如果您通过YAML方式设置不同于资源配额的资源限制,资源配额将改写成与资源限制相等。详见资源规格

    • 内存:可指定该容器Memory资源额度和资源限制,默认资源额度和资源限制相等,计费模式为按量计费。如果您通过YAML方式设置不同于资源额度的资源限制,资源额度将改写成与资源限制相等。详见资源规格

    容器启动项

    (可选)设置容器启动项。

    • stdin:将控制台输入发送到容器。

    • tty:将标准输入控制台作为容器的控制台输入。

    说明

    通常会同时选中stdintty,表示将终端(tty)绑定到容器的标准输入(stdin)上。例如,一个交互式的程序从用户获取标准输入,并显示到终端中。

    初始化容器

    (可选)选择该选项,表示创建一个初始化容器。

    初始化容器提供了一种机制来阻塞或延迟应用容器的启动,初始化容器执行成功后,Pod内的应用容器会并行启动。例如,检测依赖服务的可用性。初始化容器可以包括一些应用镜像中不存在的实用工具和安装脚本,用来初始化应用容器的运行环境,例如设置内核参数、生成配置文件。更多信息,请参见Init Container

  2. (可选)在端口设置区域,单击新增设置容器的端口。

    配置项

    说明

    名称

    设置容器端口名称。

    容器端口

    设置暴露的容器访问端口,端口号必须介于1~65535。

    协议

    支持TCPUDP。

  3. (可选)在环境变量区域,单击新增设置环境变量。

    支持通过键值对的形式为Pod配置环境变量,用于给Pod添加环境标志或传递配置等。更多信息,请参见Pod Environment Variables

    配置项

    说明

    类型

    设置环境变量的类型:

    • 自定义

    • 配置项

    • 保密字典

    • 变量/变量引用

    • 资源引用

    配置项、保密字典支持全部文件的引用。

    本示例以保密字典为例。选择保密字典类型,只选择目标保密字典,则默认引用全部文件。环境变量

    对应的YAML,也引用了整个密钥(Secret)。yaml

    变量名称

    设置环境变量名称。

    变量/变量引用

    设置变量引用的值。

  4. (可选)在生命周期区域,设置容器的生命周期。

    您可以为容器的生命周期配置启动执行、启动后处理和停止前处理。具体操作,请参见配置生命周期

    配置项

    说明

    启动执行

    为容器设置预启动命令和参数。

    启动后处理

    为容器设置启动后的命令。

    停止前处理

    为容器设置预终止命令。

  5. (可选)在数据卷区域,为容器挂载数据卷。

    • 本地存储:配置项(ConfigMap)、保密字典(Secret)和临时目录,将对应的挂载源挂载到容器路径中。更多信息,请参见volumes

    • 云存储:支持云盘、NAS等。更多信息,请参见存储概述

  6. (可选)在日志配置区域,进行采集配置自定义Tag设置。

    配置项

    说明

    采集配置

    • 日志库:即在日志服务中生成一个对应的Logstore,用于存储采集日志。

    • 容器内日志路径:支持Stdout和文本日志。

      • Stdout:表示采集容器的标准输出日志。

      • 文本日志:表示收集容器内指定路径的日志本例中表示/var/log/nginx下所有的文本日志,也支持通配符的方式。

    自定义Tag

    您还可以设置自定义Tag,设置Tag后,会将该Tag一起采集到容器的日志输出中。自定义Tag可以帮助您给容器日志打上Tag,方便进行日志统计和过滤等分析操作。

  7. 单击下一步,进入高级配置配置向导页面。

步骤三:完成高级配置

  1. 任务设置区域,设置任务。

    配置项

    说明

    成功运行的Pod

    completions,指定Job需要成功运行的Pod数量。默认值为1。

    并行运行的Pod

    parallelism,指定Job在任一时刻可以并发运行的Pod数量。默认值为1。

    超时时间

    activeDeadlineSeconds,指定Job可运行的时间期限,超过时间还未结束,系统将会尝试进行终止。

    重试次数

    Pod运行失败后,尝试重建Pod的次数。默认是6次,每次失败后重试会有延迟时间,该时间是指数级增长,最长时间是6 min。

    重启策略

    仅支持不重启(Never)和失败时(OnFailure)。

  2. (可选)在标签和注释区域,单击添加设置容器组的标签和注释。

  3. 单击创建

步骤四:查看应用信息

创建成功后,默认进入创建完成页面,单击查看应用详情可以跳转到该Job的详情页面。

您也可以在任务页面查看该Job的信息,单击目标Job的名称或对应操作列下的详情可以进入应用详情页面。