Kubernetes中的Job(工作计划)&CronJob(定时工作计划)Demo+实战

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kubernetes中的Job(工作计划)&CronJob(定时工作计划)Demo+实战相关的知识,希望对你有一定的参考价值。

参考技术A

很多道理我憋在心里,想要跟这个世界好好的说上一说! ——烽火戏诸侯《剑来》

Kubernetes从1.2版本 开始支持批处理类型的应用,我们可以通过 Kubernetes Job 资源对象来定义并启动一个批处理任务。

批处理任务通常 并行(或者串行) 启动多个计算进程去处理一批 工作项(work item) 处理完成后,整个批处理任务结束。

一种简单的使用场景下,你会创建一个 Job 对象以便以一种可靠的方式运行某 Pod 直到完成。 当第一个 Pod 失败或者被删除(比如因为节点硬件失效或者重启)时,Job 对象会启动一个新的 Pod。也可以使用 Job 以并行的方式运行多个 Pod。

考虑到批处理的并行问题, Kubernetes将Job分以下三种类型。

嗯,我们就第一个,第二搞一个Demo,第三中之后有时间搞,其实就是资源配置参数的问题
环境准备

创建一个Job,执行 echo "hello jobs"
myjob.yaml

STATUS 状态变成 Completed 意味着执行成功,查看日志

job的restart策略

activeDeadlineSeconds:最大可以运行时间

使用 activeDeadlineSeconds:最大可以运行时间 创建一个job
myjobact.yaml

超过5秒任务没有完成,所以从新创建一个pod运行

parallelism: N 一次性运行N个pod
completions: M job结束需要成功运行的Pod个数,即状态为Completed的pod数
backoffLimit: N 如果job失败,则重试几次
parallelism:一次性运行几个pod,这个值不会超过completions的值。

创建一个有参数的job

查看参数设置的变化,运行6个job

命令行的方式创建一个job

拉取相关镜像,命令行创建job

查看运行的job输出

在 cronjob 的 yaml 文件里的 .spec.jobTemplate.spec 字段里,可以写 activeDeadlineSeconds 参数,指定 cronjob 所生成的 pod 只能运行多久

Kubernetes从1.5 版本开始增加了一种新类型的Job,即类似LinuxCron的定时任务 Cron Job ,下面看看如何定义和使用这种类型的Job首先,确保 Kubernetes的版本为1.8及以上 。

在 Kubernetes 1.9 版本后, kubectl 命令增加了别名 cj 来表示 cronjob ,同时 kubectl set image/env 命令也可以作用在 CronJob 对象上了。

每分钟创建一个pod执行一个date命令

可是使用yaml文件或者命令行的方式创建

运行 --watch 命令,可以更直观地了解Cron Job定期触发任务执行的 历史 和现状:

以上是关于Kubernetes中的Job(工作计划)&CronJob(定时工作计划)Demo+实战的主要内容,如果未能解决你的问题,请参考以下文章

Docker&Kubernetes ❀ Kubernetes集群Pod控制器 - Job

Docker&Kubernetes ❀ Kubernetes集群Pod控制器 - Job

Docker&Kubernetes ❀ Kubernetes集群Pod控制器 - Cronjob(CJ)

Docker&Kubernetes ❀ Kubernetes集群Pod控制器 - Cronjob(CJ)

Kubernetes基础_07_Job & CronJob 全解析(短暂性Pod)

Kubernetes基础_07_Job & CronJob 全解析(短暂性Pod)