# K8s 计划任务 Job、Cronjob
# 1. Job 配置参数详解
# cat job.yaml
apiVersion: batch/v1
kind: Job
metadata:
labels:
job-name: echo
name: echo
namespace: default
spec:
#suspend: true # 1.21+
#ttlSecondsAfterFinished: 100
backoffLimit: 4
completions: 1
parallelism: 1
template:
spec:
containers:
- name: echo
image: busybox
imagePullPolicy: IfNotPresent
command:
- sh
- -c
- echo "Hello Job"
restartPolicy: Never
[root@k8s-master01 ~]# kubectl get jobs
NAME STATUS COMPLETIONS DURATION AGE
echo Complete 1/1 70s 2m5s
[root@k8s-master01 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
echo-564c8 0/1 Completed 0 2m10s
[root@k8s-master01 ~]# kubectl logs echo-564c8
Hello Job
- backoffLimit::如果任务执行失败,失败多少次后不再执行
- completions:有多少个 Pod 执行成功,认为任务是成功的,默认为空和 parallelism 数值一样
- parallelism:并行执行任务的数量,如果 parallelism 数值大于 completions 数值,只会创建 completions 的数量;如果 completions 是 4,并发是 3,第一次会创建 3 个 Pod 执行任务,第二次只会创建一个 Pod 执行任务
- ttlSecondsAfterFinished:Job 在执行结束之后(状态为 completed 或 Failed)自动清理。设置为 0 表示执行结束立即删除,不设置则不会清除,需要开启 TTLAfterFinished 特性
# 2. CronJob 配置参数详解
# cat cronjob.yaml
apiVersion: batch/v1
kind: CronJob
metadata:
name: hello
spec:
schedule: "*/1 * * * *"
concurrencyPolicy: Allow #允许同时运行多个任务
failedJobsHistoryLimit: 10 #保留多少失败的任务
successfulJobsHistoryLimit: 10 #保留多少已完成的任务
#suspend: true #如果true则取消周期性执行任务
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox
command:
- sh
- -c
- date; echo Hello from the Kubernetes cluster
restartPolicy: OnFailure
[root@k8s-master01 ~]# kubectl get cj
NAME SCHEDULE TIMEZONE SUSPEND ACTIVE LAST SCHEDULE AGE
hello */1 * * * * <none> False 0 6s 81s
[root@k8s-master01 ~]# kubectl get jobs
NAME STATUS COMPLETIONS DURATION AGE
hello-29084454 Complete 1/1 4s 72s
hello-29084455 Complete 1/1 5s 12s
[root@k8s-master01 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
hello-29084454-hwv7p 0/1 Completed 0 78s
hello-29084455-vf99w 0/1 Completed 0 18s
[root@k8s-master01 ~]# kubectl logs -f hello-29084455-vf99w
Sat Apr 19 12:55:02 UTC 2025
Hello from the Kubernetes cluster
- apiVersion: batch/v1beta1 #1.21+ batch/v1
- schedule:调度周期,和 Linux 一致,分别是分时日月周。
- restartPolicy:重启策略,和 Pod 一致。
- concurrencyPolicy:并发调度策略。可选参数如下:
- Allow:允许同时运行多个任务。
- Forbid:不允许并发运行,如果之前的任务尚未完成,新的任务不会被创建。
- Replace:如果之前的任务尚未完成,新的任务会替换的之前的任务。
- suspend:如果设置为 true,则暂停后续的任务,默认为 false。
- successfulJobsHistoryLimit:保留多少已完成的任务,按需配置。
- failedJobsHistoryLimit:保留多少失败的任务。
本文出自于:https://edu.51cto.com/course/23845.html