一.cronJob
1. doc
https://kubernetes.io/zh/docs/concepts/workloads/controllers/cron-jobs/#%E5%89%8D%E6%8F%90%E6%9D%A1%E4%BB%B6
2.参数深入理解
1) startingDeadlineSeconds 看文档
2) concurrencyPolicy
Allow
(默认):允许并发运行 Job ,即:job 错过执行时间(可能是container crashoff,可能是job supend,或者其他),当再次启动cronJob 时,会根据schedule 计算 miss 的job ,与当前job 并行执行Forbid
:old job 正在运行,则 直接跳过新job,不会创建新job...如果用 kubectl get jobs -n namespace 查看该cronJob 下的jobs ,会发现只要old job 运行,不会有新的job 创建,不论schedule 错过几次- Replace:如果一个新的Job创建时,正在运行一个旧Job,那么CronJob controller会使用这个新Job替代正在运行的旧Job
3) failedJobsHistoryLimit: 0
successfulJobsHistoryLimit: 3
cronjob 中保存失败或者成功job 的个数
注意:successfulJobsHistoryLimit 保存completed 和running 的job 个数
二. job 参数
When a Job completes, no more Pods are created, but the Pods are not deleted either
terminal or clean up job
1. kubectl
删除job,并将其创建的所有pod 一并删除
2. backoffLimit
pod 或是container 的 restartPolicy
不是never 的情况下,当重启次数达到limit值时,job被标记为失败,并且所有运行的pod 都将被终止
3. activeDeadlineSeconds
当一个job 的运行时间达到 activeDeadlineSeconds
时,所有运行的pod 都会被终止,并且该job faild ,因为 DeadlineExceeded
.
注意:
- 该参数能指定job 的运行期限,超过期限的job 和其创建的pod 随即被清理,解除系统资源占用,但是也会将cronjob 的调度信息同时清除,如下图,last schedule ,age 和 schedule 对不上
activeDeadlineSeconds 优先级 高于 backoffLimit
4.
ttlSecondsAfterFinished: 100
需要开启TTLAfterFinished ,k8s 默认关闭