Job管理

最近更新时间:2020-10-21 15:38:57

Job概述

Job负责批量处理短暂的一次性任务,即仅执行一次的任务,它保证批处理任务的一个或多个Pod成功结束。相较于Deployment, Statefulset这类正常状态下保持永远运行的任务,Job的主要区别在于成功完成用户设置的任务后会自动退出。因此Job更适合于数据处理、迁移等一次性任务处理场景。 本模块提供了基于Kubernetes原生的Job的创建、配置、删除等生命周期的管理指南。

创建Job

您可以在容器服务控制台通过镜像和参数配置创建一个Job。

a) 设置基本信息

b) 部署配置

设置基本信息

Job管理

  • 名称:用户自定义Job的名称,不超过63个字符,只能包含小写字母、数字、和“-”,并且必须以小写字母开头,小写字母或数字结尾
  • 部署集群:选择Job运行的集群
  • 命名空间:选择Job所在集群的命名空间
  • 描述:创建Job的相关信息,用户自定义填写

部署配置

Job设置

Job管理 根据实际需求,您可以设置Job的关键参数:

  • 重复次数:设置Job结束所需pod成功运行的次数,默认为1
  • 并行度:设置Job下pod并行执行的数量,默认为1
  • 失败重启策略:设置pod的容器异常退出时是否重启
    • Never:失败容器不会重启,直至所有容器全部退出,新的pod会被启动
    • OnFailure:失败容器将会重新启动,pod继续运行

存储卷

目前支持使用主机路径、本地路径、金山云云硬盘、文件存储、已有PVC等存储类型。 Job管理

  • 类型:包含主机路径、本地路径、金山云云硬盘、文件存储、已有PVC、使用ConfigMap/Secret
  • 存储卷名称:存储卷的名称
  • 资源名称:选择相应存储资源的名称
  • 其他信息:指定容器要挂载的路径

备注:

使用本地硬盘时,若不指定源路径,则默认分配临时路径(对应k8s存储中EmpytDir)

当使用云硬盘作为存储卷时,存储卷的名称为云硬盘的id,不可修改

容器配置

设置运行的容器信息 Job管理

  • 名称:容器的名称,不超过63个字符,只能包含小写字母、数字、和“-”,并且必须以小写字母开头,小写字母或数字结尾
  • 镜像:点击【选择镜像】,从镜像仓库中选择;或输入镜像仓库地址
  • 镜像版本:镜像的tag
  • 资源限制:设定容器所使用的CPU和内存资源的限制
  • 环境变量:在容器中添加环境变量,一般用于通过环境变量设置参数,目前仅支持手动添加
  • 实例数量:一个实例由相关的一个或多个容器构成,用户自定义实例数量

镜像访问凭证

目前支持从私有镜像仓库拉取镜像时,为容器配置镜像访问凭证(对应yaml中的imagePullSecret)。 Job管理

  • 初始状态下提供默认选项ksyunregistrykey,可以匹配金山云镜像仓库中的私有镜像
  • 若您使用的镜像来自第三方私有镜像仓库,可以通过【添加镜像访问凭证】-【使用新的访问凭证】-【设置访问凭证信息】,设置新的访问凭证的名称,以及第三方仓库的域名、用户名、密码,即完成添加第三方私有镜像仓库访问凭证 Job管理

配置完成后,点击【创建】,返回Job列表页面,查询Job的状态。

Job基本操作

查看Job状态

从控制台左侧导航栏,进入【工作负载】——【Job】列表页面,即可查看当前命名空间下所有Job的运行状态。 Job管理

  • 实例个数(成功/全部):这一指标反映该job当前运行进展,全部实例代表Job设置中的重复次数,成功个数代表当前已经成功退出的pod数量

点击Job名称进入某个Job的Pod列表,在状态栏中可以看到各pod当前的运行状态。 Job管理

点击Job名称进入某个Job的详情页,在详情中的基本信息部分,也可以看到当前Job下不同状态pod的数量统计,状态包含“成功”,“失败”,“运行中”三种。 Job管理

删除

点击Job列表中的【删除】,执行删除Job的操作 Job管理 点击Job名称进入某个Job的详情页,在pod列表中点击【销毁实例】,即可删除某Job下的特定实例。 Job管理

Kubectl操作示例

在Job列表页面,可以通过【YAML创建资源】新建Job,也可以通过Job列表中的【编辑YAML】更新已有Job的配置。 以下提供一个YAML示例,创建一个Job执行计算π到2000位并打印输出。 pi-job.yaml如下:

apiVersion: batch/v1
kind: Job
metadata:
  name: pi
spec:
  completions: 2
  parallelism: 2
  template:
    spec:
      containers:
      - name: pi
        image: perl
        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      restartPolicy: Never
  backoffLimit: 4
  • spec.completions: Job结束所需pod成功运行的次数
  • spec.parallelism: Job下pod并行执行的数量
  • spec.template: Job管理的Pod的详细模板配置
  • spec.backoffLimit: Job的容错次数,当达到这个值时不会再创建新的pod而会退出job,默认值为6

创建该job

# kubect apply -f pi-job.yaml

查看Job的状态

# kubectl get job

金山云,开启您的云计算之旅

免费注册