本文主要是介绍k8s初级实战06--Job CronJob,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
k8s初级实战06--Job & CronJob
- 1 基础概念
- 2 常见用法
- 2.1 Job
- 2.2 CronJob
- 3 注意事项
- 4 说明
1 基础概念
- Job
Job负责批量处理短暂的一次性任务 (short lived one-off tasks),即仅执行一次的任务,它保证批处理任务的一个或多个Pod成功结束。
当第一个 Pod 失败或者被删除(比如因为节点硬件失效或者重启)时,Job 对象会启动一个新的 Pod。删除 Job 的操作会清除所创建的全部 Pods。
Kubernetes支持以下几种Job:- 非并行Job:通常创建一个Pod直至其成功结束
- 固定结束次数的Job:设置.spec.completions,创建多个Pod,直到.spec.completions个Pod成功结束
- 带有工作队列的并行Job:设置.spec.Parallelism但不设置.spec.completions,当所有Pod结束并且至少一个成功时,Job就认为是成功
- CronJob
CronJob 即定时任务,就类似于 Linux 系统的 crontab,在指定的时间周期运行指定的任务。
CronJobs 对于创建周期性的、反复重复的任务很有用,例如执行数据备份或者发送邮件。 CronJobs 也可以用来计划在指定时间来执行的独立任务,例如计划当集群看起来很空闲时 执行某个 Job。
crontab 时间表7语法:# ┌───────────── 分钟 (0 - 59) # │ ┌───────────── 小时 (0 - 23) # │ │ ┌───────────── 月的某天 (1 - 31) # │ │ │ ┌───────────── 月份 (1 - 12) # │ │ │ │ ┌───────────── 周的某天 (0 - 6) (周日到周一;在某些系统上,7 也是星期日) # │ │ │ │ │ # │ │ │ │ │ # │ │ │ │ │ # * * * * *
2 常见用法
2.1 Job
- 创建Job 计算pi小数点后100位
$ kubectl create job cal-pi --image=perl:5.32 -- perl -Mbignum=bpi -wle 'print bpi(100)' job.batch/cal-pi created 查看输出日志: $ kubectl logs cal-pi-dh766 3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117068 或者yaml vim job-cal-pi.yaml kind: Job apiVersion: batch/v1 metadata:name: cal-pi spec:template:spec:containers:- name: cal-piimage: perl:5.32command:- perl- '-Mbignum=bpi'- '-wle'- 'print bpi(100)'imagePullPolicy: IfNotPresentrestartPolicy: NeverbackoffLimit: 4 $ kubectl apply -f job-cal-pi.yaml
- 查看job
$ kubectl get jobs[.batch] NAME COMPLETIONS DURATION AGE cal-pi 1/1 4s 22s
- 删除job
$ kubectl delete -f job-cal-pi.yaml job.batch "cal-pi" deleted
- 创建job 执行10次任务
过一会可以在lens前端上发现该任务执行完成:vim job-cal-pi-10.yaml kind: Job apiVersion: batch/v1 metadata:name: cal-pi-10 spec:completions: 10template:spec:containers:- name: cal-piimage: perl:5.32command:- perl- '-Mbignum=bpi'- '-wle'- 'print bpi(100)'imagePullPolicy: IfNotPresentrestartPolicy: NeverbackoffLimit: 4 $ kubectl apply -f job-cal-pi-10.yaml
2.2 CronJob
- 创建cronjob
lens 中执行任务的状态如下:$ kubectl create cronjob cal-pi-cj --schedule="*/1 * * * *" --image=perl:5.32 -- perl -Mbignum=bpi -wle 'print bpi(100)' cronjob.batch/cal-pi-cj created或者yaml创建 vim cronjob-cal-pi.yaml kind: CronJob apiVersion: batch/v1beta1 metadata:name: cal-pi-cj spec:schedule: '*/1 * * * *'jobTemplate:spec:template:spec:containers:- name: cal-pi-cjimage: perl:5.32command:- perl- '-Mbignum=bpi'- '-wle'- 'print bpi(100)'imagePullPolicy: IfNotPresentrestartPolicy: OnFailure $ kubectl apply -f cronjob-cal-pi.yaml
- 查看cronjob
$ kubectl get cronjobs.batch NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE cal-pi-cj */1 * * * * False 0 <none> 31s
- 删除cronjob
kubectl delete cronjobs[.batch] cal-pi-cj cronjob.batch "cal-pi-cj" deleted
3 注意事项
- job执行完成后,对应的pod不会自动删除(),删除job后才会删除对应的pod。
4 说明
概念->工作负载->工作负载资源->Jobs
Kubernetes指南->Job
这篇关于k8s初级实战06--Job CronJob的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!