昨天講完了 Pod 的進階版了,接著就要來講一些類似 Pod 但是比較特殊的資源,就是 Job & CronJob 。
首先先說 Job ,主要就是負責處理單次的任務,例如初始化或是手動備份之類的操作,這種操作就不適合使用 Pod 來處理,更適合用 Job 來處理。
而我們同樣使用 YAML 檔來建立 Job 。
apiVersion: batch/v1
kind: Job
metadata:
name: myjob
spec:
template:
metadata:
name: myjob
spec:
restartPolicy: OnFailure
ttlSecondsAfterFinished: 10 # 完成後多久會被自動刪除
containers:
- name: counter
image: ubuntu:20.04
command: [bash, -c, "for i in {1..100} ; do echo $i ; done ; "]
大致的操作同樣是 Pod 外面包一層殼,使其更適合處裡單次的任務。使用 Job 的時候我們透過以下指令來查看。
$ kubectl get jobs
# or
$ kubectl get pods # 只有執行中會看到
這樣就可以將簡單快速地處裡完單次的任務。
那如果我們有定時的任務需要處理的話呢?
這時候就需要 CronJob 來幫我們處理了,例如定時備份之類的任務,我們可以設定多久處理一次,像是每天備份一次。
我們同樣使用 YAML 檔來建立 CronJob 。
apiVersion: batch/v1
kind: CronJob
metadata:
name: mycronjob
spec:
schedule: "*/1 * * * *"
jobTemplate:
spec:
template:
spec:
restartPolicy: OnFailure
ttlSecondsAfterFinished: 10
containers:
- name: counter
image: ubuntu:20.04
command: [bash, -c, "for i in {1..100} ; do echo $i ; done ; "]
CronJob 也是類似 Job 外面再包一層殼,接著定時透過 Pod 處裡任務。使用 CronJob 的時候我們透過以下指令來查看。
$ kubectl get cronjobs
# or
$ kubectl get cj
# or
$ kubectl get pods # 只有執行中會看到
這樣就可以定時的處理任務。
那麼就先到這邊, Job 跟 CronJob 在處理某些小任務時非常好用,使用上也不太難。
大家掰~掰~