一、CronJob介紹
可以利用 CronJobs 執行基於時間調度的任務。這些自動化任務和 Linux 或者 Unix 系統的 Cron 任務類似
CronJobs在創建周期性以及重復性的任務時很有幫助,例如執行備份操作或者發送郵件。CronJobs 也可以在特定時間調度單個任務,例如你想調度低活躍周期的任務。
二、創建一個Job
2.1、yaml文件創建
[root@k8s-master01 app]# cat cronjob.yaml
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: hello
spec:
schedule: "*/1 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox:1.28
imagePullPolicy: IfNotPresent
args:
- /bin/sh
- -c
- date; echo Hello from the Kubernetes cluster
restartPolicy: OnFailure
# 創建job
kubectl create -f cronjob.yaml
2.2、查看job
[root@k8s-master01 app]# kubectl get jobs --watch
NAME COMPLETIONS DURATION AGE
hello-1609167960 0/1 7m44s 7m44s
hello-1609168020 0/1 6m42s 6m42s
hello-1609168080 0/1 5m41s 5m41s
hello-1609168140 0/1 4m50s 4m50s
hello-1609168200 0/1 3m49s 3m49s
hello-1609168260 1/1 21s 2m48s
hello-1609168320 1/1 2s 107s
hello-1609168380 1/1 3s 46s
[root@k8s-master01 app]# kubectl get cronjob hello
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
hello */1 * * * * False 6 4s 8m20s
# 刪除
[root@k8s-master01 app]# kubectl delete cronjob hello
cronjob.batch "hello" deleted
2.3、yaml文件參數介紹
kubectl get cj hello -oyaml
apiVersion: batch/v1beta1
kind: CronJob
metadata:
labels:
run: hello
name: hello
namespace: default
spec:
concurrencyPolicy: Allow #並發調度策略:Allow運行同時運行過個任務。
# Forbid:不運行並發執行。
# Replace:替換之前的任務
failedJobsHistoryLimit: 1 # 保留失敗的任務數。
jobTemplate:
metadata:
creationTimestamp: null
spec:
template:
metadata:
creationTimestamp: null
labels:
run: hello
spec:
containers:
- args:
- /bin/sh
- -c
- date
image: nginx
imagePullPolicy: IfNotPresent
name: hello
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: OnFailure
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
schedule: '*/1 * * * *' #調度的策略 分時日月周
successfulJobsHistoryLimit: 3 # 成功的Job保留的次數
suspend: false # 掛起,true:cronjob不會被執行。
status: {}