Job主要用途為執行一次性任務,例如建立初始化資料庫、批次處理資料、備份。
Job會創建一個或多個Pod來執行任務,直到Pod完成指定數量才算任務完成
apiVersion: batch/v1
kind: Job
metadata:
name: job-demo
spec:
template:
spec:
containers:
- name: job-demo
image: busybox
command: ["echo", "Hello Kubernetes"]
restartPolicy: Never
套用到Kubernetes後查看後發現馬上就進入Completed狀態,畢竟我們只有叫它輸出一個Hello Kubernetes
而我們可以使用completions:和parallelism:來調整job執行任務時一次啟動的pod數量與所需完成的指定Pod數量。
completions: 負責總共需要成功算完幾次。parallelism: 負責同時最多能有幾個 Pod 一起算。這樣可以幫助系統在Job運行時減少負擔。
CronJob是可以進行時間排程的Job,當有一個工作需要在指定時間重複執行時可以使用。設定時間排程的表示方式為Cron語法。
在schedule:中進行設定
這裡設定為每五分鐘執行一次
apiVersion: batch/v1
kind: CronJob
metadata:
name: cronjob-demo
spec:
schedule: "*/5 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: cron-demo
image: busybox
command:
- /bin/sh
- -c
- |
echo "Hello"
sleep 5
echo "k8s"
restartPolicy: OnFailure
間隔大約五分鐘後再查一次

可以看到cronjob是按照我們的設定每隔五分鐘就創建一個Pod來執行任務