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
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 实现后将不会被保留。