k8s的Job负载 支持多个 Pod 可靠的并发执行,如何权衡利弊选择适合的并行计算模式? 简单聊聊你对工作负载Job的理解? Job 支持多个 Pod 可靠的并发执行,如何权衡利弊选择适合的并行计
简单聊聊你对工作负载Job的理解?
Job 支持多个 Pod 可靠的并发执行,如何权衡利弊选择适合的并行计算模式?
Job控制并行了解吗?为什么线上实际并行性可能比并行性请求略大或略小?
囧么肥事-胡说八道
简单聊聊你对工作负载Job的理解?
在说工作负载Job执行原理之前,先了解下为什么会需要Job负载?
对于ReplicaSet
、ReplicationController
等持久性负载来说,它们的职责是让Pod保存预期的副本数量,稳定持久运行。
除非主动去更改模板,进行扩缩操作,否则这些Pod一直持久运行,并且运行的是持久性任务,比如Nginx,MySQL
等。
咦?持久任务,那么万事万物有相对面,太极分阴阳,同样,任务除了持久任务外,也有非持久任务。
身边哪些是非持久任务呢?
我们在日常的工作中经常都会遇到一些需要进行批量数据处理和分析、或者是根据时间调度的需求,这些属于短期性质的任务。不需要持久运行,仅执行一次就结束。例如进行数据库跨库同步,热点数据统计分析等。也可以在特定时间调度单个任务,例如你想调度低活跃周期的任务。
这些执行完成就结束,完成了我们设定的某个目标就可以终止的,我们划分为非持久任务。
好了,既然知道了任务划分,而且k8s中ReplicaSet
、ReplicationController
等持久性负载是保证Pod稳定持久运行,那么对立的,Job负载的职责就是保证非持久任务在生命周期内达成使命后体面终止。
需要Job负载,其实就是对持久性负载的补充。
简单来说:“Pod,你去完成你的任务,完成之后我给你个体面的结束”。
昙花一现这个成语形容Job负载管理的Pod非常合适。昙花的目标是绽放,绽放完毕后立刻凋零。Job Pod 完成任务,终结,刚刚好