在 Day7 中,我們學習了 ReplicaSet 與 Deployment,這兩者主要用於 長時間運行的服務,並且具備自動擴展與滾動更新的能力。
不過,真實世界中除了服務型應用之外,我們常常還需要執行一些 一次性任務 或 週期性任務。
例如:
這時候,k8s 的 Job 與 CronJob 就是一個很好的選擇。
設計理念
使用場景
常見參數
completions
:總共要完成多少次任務parallelism
:允許同時跑幾個 PodbackoffLimit
:失敗後最多重試幾次restartPolicy
:通常設為 OnFailure
建立一個 Job,執行一次簡單的批次計算:
apiVersion: batch/v1
kind: Job
metadata:
name: fibonacci-job
spec:
template:
spec:
containers:
- name: fibonacci
image: busybox
command: ["sh", "-c", "echo '計算斐波那契數列'; sleep 5; echo '完成!'"]
restartPolicy: OnFailure
操作:
kubectl apply -f fibonacci-job.yaml
kubectl get jobs
kubectl logs job/fibonacci-job
設計理念
使用場景
常見參數
建立一個 CronJob,每分鐘輸出一次時間戳記:
apiVersion: batch/v1
kind: CronJob
metadata:
name: timestamp-cron
spec:
schedule: "*/1 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: timestamp
image: busybox
command: ["sh", "-c", "date; echo Hello from CronJob"]
restartPolicy: OnFailure
操作:
kubectl apply -f timestamp-cron.yaml
kubectl get cronjobs
kubectl get jobs --watch
kubectl logs job/<job-name>
Job 與 CronJob 的最佳實務
Job 與 CronJob 是 Kubernetes 中 不可或缺的拼圖,讓自動化、數據處理、AI workflow 得以順暢運行。