Kubernetes笔记之Job/CronJob
Contents
Job负责处理任务,即仅执行一次的任务,它保证批处理任务的一个或多个pod成功结束。
CronJob负责定时任务,在指定的时间周期运行指定的任务
Job
Job用于批量处理短暂的一次性任务,并保证指定数量的pod成功结束。
Kubernetes支持以下几种方式:
- 非并行Job:
- 通常只运行一个pod,pod成功结束Job就退出。
- 固定完成次数的并行Job:
- 并发运行指定数量的pod,直到指定数量的pod成功,job结束。
- 带有工作队列的并行Job:
- 用户可以指定并行的pod数量,当任何Pod成功结束后,不会再创建新的pod
- 一旦有一个pod成功结束,并且所有的pods都结束了,改job就成功结束。
- 一旦有一个pod成功结束,其他pods都会准备推出。
Job Spec
- Spec.template格式通Pod
- RestartPolicy仅支持Never或OnFailure
- 单个Pod时,默认Pod成功运行后Job即结束
- .spec.completions 标志Job结束需要成功运行的pod个数,默认为1
- .spec.parallelism 标志并行运行的pod的个数,默认为1
- .spec.activeDeadLineSeconds 标志失败pod的重试最大时间,超过这个时间不会继续重试
- .spec.backoffLimit 标志指定job失败后进行重试的次数。默认是6次,每次失败后重试会有延迟时间,改时间是指数级增长,最长时间是6min
示例
yaml:
|
|
创建:
|
|
查看:
|
|
CronJob
cronJob是基于时间进行任务的定时管理:
- 在特定的时间点运行任务
- 反复在指定的时间点运行任务:比如定时进行数据库备份,定时发送邮件等等
CronJob Spec
-
.spec.schedule: 调度,必需字段,指定任务运行周期
-
.spec.jobTemplate: Job模板,必需字段,指定需要运行的任务
-
.spec.startingDeadlineSeconds: 启动Job的期限(秒级别),该字段是可选的。如果因为任何原因而错过了被调度的时间,那么错过执行时间的Job将被认为是失败的。如果没有指定,则没有期限。
-
.spec.concurrencyPolicy: 并发策略,该字段也是可选的。它指定了如何处理被Cron Job创建的Job的并发执行。只允许指定下面策略的一种:
- Allow(默认):允许并发运行Job
- Forid: 禁止并发运行,如果前一个还没有完成,则直接跳过下一个
- Replace: 取消当前正在运行的Job,用一个新的来替换
注意,当前策略只能应用于同一个CronJob创建的Job。如果存在多个CronJob,它们创建的Job之间总是允许并发运行
-
.spec.successfulJobsHistoryLimit 和 .spec.failedJobsHistoryLimit: 历史限制,是可选的字段。它们指定了可以保留多少完成和失败的Job
示例
分 时 日 月 星期 要运行的命令 第1列分钟0~59 第2列小时0~23) 第3列日1~31 第4列月1~12 第5列星期0~7(0和7表示星期天) 第6列要运行的命令
Yaml:
|
|
创建:
|
|
Author dylan
LastMod 2020-04-18
License 如需转载请注明文章作者和出处。谢谢!