• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

k8s-cronjob

互联网 diligentman 4天前 5次浏览

cronjob:

https://kubernetes.io/zh/docs/concepts/workloads/controllers/cron-jobs/
https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/

jobs:
https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#writing-a-job-spec

k8s-cronjob



cron job -> (0-2)job -> pod


一个 CronJob 对象类似于 crontab (cron table)文件中的一行。它根据指定的预定计划周期性地运行一个 Job

Cron Job 在每次调度运行时间内 大概 会创建一个 Job 对象。我们之所以说 大概 ,是因为在特定的环境下可能会创建两个 Job,或者一个 Job 都没创建。我们尝试少发生这种情况,但却不能完全避免。因此,创建 Job 操作应该是 _幂等的_。

Job 根据它所创建的 Pod 的并行度,负责重试创建 Pod,并就决定这一组 Pod 的成功或失败。      Cron Job 根本不会去检查 Pod


-- 查看cronjob
kubectl get cronjob -n niuniu
kubectl get cronjob -n niuniu --watch

---
apiVersion: batch/v1beta1
kind: CronJob
metadata:
  namespace: niuniu
  name: autocheckout
  labels:
    app: cron
spec:
  schedule: "*/1 * * * *"
  concurrencyPolicy: Allow
  startingDeadlineSeconds: 300
  successfulJobsHistoryLimit: 1
  failedJobsHistoryLimit: 1
  jobTemplate:


.spec.startingDeadlineSeconds 字段是可选的。它表示启动 Job 的期限(秒级别),如果因为任何原因而错过了被调度的时间,那么错过执行时间的 Job 将被认为是失败的。如果没有指定,则没有期限


并发策略
.spec.concurrencyPolicy 字段也是可选的。它指定了如何处理被 Cron Job 创建的 Job 的并发执行。只允许指定下面策略中的一种:
    Allow(默认):允许并发运行 Job
    Forbid:禁止并发运行,如果前一个还没有完成,则直接跳过下一个
    Replace:取消当前正在运行的 Job,用一个新的来替换
注意,当前策略只能应用于同一个 Cron Job 创建的 Job。如果存在多个 Cron Job,它们创建的 Job 之间总是允许并发运行。


挂起
.spec.suspend 字段也是可选的。如果设置为 true,后续所有执行都将被挂起。它对已经开始执行的 Job 不起作用。默认值为 false。
Job 历史限制


.spec.successfulJobsHistoryLimit 和 .spec.failedJobsHistoryLimit 
它们指定了可以保留完成和失败 Job 数量的限制。
默认没有限制,所有成功和失败的 Job 都会被保留。然而,当运行一个 Cron Job 时,很快就会堆积很多 Job,推荐设置这两个字段的值。设置限制值为 0,相关类型的 Job 完成后将不会被保留。

程序员灯塔
转载请注明原文链接:k8s-cronjob
喜欢 (0)