创建任务工作负载Job

更新时间: 2024-01-17 09:49:02

阿里云容器计算服务ACS集群支持通过界面创建Job类型的应用。本文将创建一个Job类型的busybox应用,并演示任务(Job)应用的特性。

背景信息

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

Kubernetes支持以下几种Job:

  • 非并行Job:通常创建一个Pod直至其成功结束。

  • 固定结束次数的Job:设置.spec.completions,创建多个Pod,直到.spec.completions个Pod成功结束。

  • 带有工作队列的并行Job:设置.spec.parallelism但不设置.spec.completions,当所有Pod结束并且至少一个成功时,Job就认为是成功。

  • 固定结束次数的并行Job:同时设置.spec.completions.spec.parallelism,多个Pod同时处理工作队列。

    根据.spec.completions.spec.parallelism的设置,可以将Job划分为以下几种模式:

    Job类型

    使用示例

    行为

    Completions

    Parallelism

    一次性Job

    数据库迁移

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

    1

    1

    固定结束次数的Job

    处理工作队列的Pod

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

    2+

    1

    固定结束次数的并行Job

    多个Pod同时处理工作队列

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

    2+

    2+

    并行Job

    多个Pod同时处理工作队列

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

    1

    2+

操作步骤

说明

本例中创建的任务属于固定结束次数的并行Job。

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

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

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

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

    配置项

    描述

    应用名称

    设置应用的名称。

    类型

    设置类型任务(Job)

    标签

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

    注解

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

    实例类型

    请选择实例类型。

    时区同步

    容器与节点是否使用相同的时区。

  5. 设置容器配置。

    说明

    您可为应用的Pod设置多个容器。

    1. 设置容器的基本配置。

      配置项

      描述

      镜像名称

      单击选择镜像,选择所需的镜像并单击确定。本例中为官方Nginx镜像,可以在搜索页签中,选择Docker镜像,然后在文本框中输入nginx进行搜索。

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

        说明

        您可以在容器镜像服务页签,根据名称搜索托管在容器镜像服务ACR中的镜像。

      • Docker官方镜像:在Docker官方镜像页签中,可以选择Docker官方提供的容器镜像。

      • 用户收藏:在用户收藏页签中,可以选择您收藏的Docker官方镜像。

      • 搜索:在搜索页签中,可以分别在ACR的特定地域和Docker官方镜像中搜索容器镜像。

      镜像Tag

      • 您可以单击选择镜像Tag选择镜像的版本。若不指定,默认为最新版。

      • ACS支持以下镜像拉取策略(imagePullPolicy):

        总是拉取镜像(Always):表示每次部署或扩容都会从容器镜像服务重新拉取镜像,而不会从本地拉取镜像。为了提高效率,容器服务会对镜像进行缓存。部署时,如果发现镜像Tag与本地缓存的一致,则会直接复用而不重新拉取。所以,如果您基于上层业务便利性等因素考虑,在做代码和镜像变更时没有同步修改Tag,就会导致部署时还是使用本地缓存内旧版本镜像。而勾选该选项后,会忽略缓存,每次部署时重新拉取镜像,确保使用的始终是最新的镜像和代码。

      设置镜像密钥

      单击设置镜像密钥,您可以实现免密拉取镜像。

      CPU

      可指定该容器预留的CPU资源额度和资源限制,默认资源额度和资源限制相等。如果需要设置不同于资源额度的资源限制,可以使用YAML创建资源方式来创建应用。

      内存

      可指定该容器预留的Memory资源额度和资源限制,默认资源额度和资源限制相等。如果需要设置不同于资源额度的资源限制,可以使用YAML创建资源的方式来创建应用。

      容器启动项

      • 选择stdin,将控制台输入发送到容器。

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

      初始化容器

      勾选该项,表示创建一个Init Container,Init Container包含一些实用的工具,更多信息,请参见Init Container

      端口

      设置主机端口和容器端口,支持TCP/UDP协议。

    2. 可选:配置环境变量

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

    3. 可选:配置生命周期。

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

      • 启动执行:为容器设置预启动命令和参数。

      • 启动后处理:为容器设置启动后的命令。

      • 停止前处理:为容器设置预结束命令。

    4. 可选:配置数据卷信息。

      支持配置本地存储和云存储。

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

      • 云存储:支持块存储/NAS两种存储类型。

  6. 完成容器配置后,单击下一步

  7. 进行高级设置。

    您可进行任务配置

    参数

    说明

    成功运行的Pod数

    即completions,指定job需要成功运行Pods的数量。默认值为1。

    并行运行的Pod数

    即parallelism,指定job在任一时刻应该并发运行Pod的数量。默认值为1。

    超时时间

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

    重试次数

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

    重启策略

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

  8. 单击创建,创建成功后,默认进入创建完成页面,会列出应用包含的对象。

  9. 单击工作负载 > 任务,在任务页面,您可看到该任务已显示完成时间。

    说明

    若任务未创建完毕所有容器组,任务不会显示完成时间。

相关操作

在左侧导航栏单击集群,单击目标集群名称或目标集群操作列下的详情,选择工作负载 > 任务,单击目标应用名称或目标应用操作列下的详情,在应用详情页面您可以伸缩查看YAML

  • 伸缩:在应用详情页面单击伸缩,您可以修改所需容器组数量。

  • 查看YAML:在应用详情页面单击查看YAML