一、Job

需求来源

Job 背景问题

首先我们来看一下 Job 的需求来源。我们知道 K8s 里面,最小的调度单元是 Pod,我们可以直接通过 Pod 来运行任务进程。这样做将会产生以下几种问题:

* 我们如何保证 Pod 内进程正确的结束?
* 如何保证进程运行失败后重试?
* 如何管理多个任务,且任务之间有依赖关系?
* 如何并行地运行任务,并管理任务的队列大小?
Job:管理任务的控制器

我们来看一下 Kubernetes 的 Job 为我们提供了什么功能:

* 首先 kubernetes 的 Job 是一个管理任务的控制器,它可以创建一个或多个 Pod 来指定 Pod 的数量,并可以监控它是否成功地运行或终止;
* 我们可以根据 Pod 的状态来给 Job 设置重置的方式及重试的次数;
* 我们还可以根据依赖关系,保证上一个任务运行完成之后再运行下一个任务;
* 同时还可以控制