一.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 个数

b83f412687addecc3fd7d4efa482956d107.jpg

a69a6ec5732e5402638bf1a62cde0d29698.jpg

二. 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 对不上

17503ce3723e3c81fb51104c19897c68301.jpg

  • activeDeadlineSeconds 优先级 高于 backoffLimit

4.

ttlSecondsAfterFinished: 100

需要开启TTLAfterFinished ,k8s 默认关闭
 

 

 

 

转载于:https://my.oschina.net/u/3657235/blog/3102630

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐