天天看点

Kubernetes必备知识: Job

所属技术领域:

kubernetes

|名词定义|

首先 kubernetes 的 Job 是一个管理任务的控制器,它可以创建一个或多个 Pod 来指定 Pod 的数量,并可以监控它是否成功地运行或终止;

我们可以根据 Pod 的状态来给 Job 设置重置的方式及重试的次数;

我们还可以根据依赖关系,保证上一个任务运行完成之后再运行下一个任务;

同时还可以控制任务的并行度,根据并行度来确保 Pod 运行过程中的并行次数和总体完成大小。

|技术特点|

 Job 语法

Kubernetes必备知识: Job

上图是 Job 最简单的一个 yaml 格式,这里主要新引入了一个 kind 叫 Job,这个 Job 其实就是 job-controller 里面的一种类型。然后 metadata 里面的 name 来指定这个 Job 的名称,下面 spec.template 里面其实就是 pod 的 spec。

 Job 状态

$ kubectl create -f jon.html

$ kubectl get jobs

Job 创建完成之后,我们就可以通过 kubectl get jobs 这个命令,来查看当前 job 的运行状态。得到的值里面,基本就有 Job 的名称、当前完成了多少个 Pod,进行多长时间。

 查看 Pod

$kubectl get pods pi-4cfrp -o yaml

它比普通的 Pod 多了一个叫 ownerReferences,这个东西来声明此 pod 是归哪个上一层 controller 来管理。可以看到这里的 ownerReferences 是归 batch/v1,也就是上一个 Job 来管理的。这里就声明了它的 controller 是谁,然后可以通过pod 返查到它的控制器是谁,同时也能根据 Job 来查一下它下属有哪些 Pod。

 并行运行 Job

我们有时候有些需求:希望 Job 运行的时候可以最大化的并行,并行出 n 个 Pod 去快速地执行。同时,由于我们的节点数有限制,可能也不希望同时并行的 Pod 数过多,有那么一个管道的概念,我们可以希望最大的并行度是多少,Job 控制器都可以帮我们来做到。

这里主要看两个参数:一个是 completions,一个是 parallelism。

首先第一个参数是用来指定本 Pod 队列执行次数。第二个参数代表这个并行执行的个数。

 查看并行 Job 运行

Kubernetes必备知识: Job

1.pod age 表明每次job同时创建了两个pod

2.本job一共运行了四个批次,一共运行8个pod

 Cronjob 语法

CronJob 其实和 Job 大体是相似的,唯一的不同点就是它可以设计一个时间。比如说可以定时在几点几分执行,特别适合晚上做一些清理任务,还有可以几分钟执行一次,几小时执行一次等等,这就叫定时任务。

 架构设计

Job 管理模式

Kubernetes必备知识: Job

Job 控制器

Kubernetes必备知识: Job

|资料来源|

发展历程:

http://www.orchome.com/1337

继续阅读