直接進入重點
Job
會結束的程式。不會結束的會稱為Daemon。
執行方式
Completions/Parallelism
Completions: 啟動任務要執行幾次
Parallelism: 同時間執行幾個程式
Job Completions: 2 , Parallelism: 1
graph A[Job Completions: 2 , Parallelism: 1] -->|Step.1| B[建立 Pod] B --> |Step.2| C[Pod執行中] C --> |Step.3| D[Pod 執行完成] D -->|Step.4 Observe| A A --> |Step.5| B1[建立 Pod] B1 --> |Step.6|C1[Pod執行中] C1 --> |Step.7|D1[Pod 執行完成] D1 -->|Step.8 Observe| A
Job Completions: 2 , Parallelism: 2
用程式觀點,簡單說就是2個執行緒
執行`,同時間執行兩個工作。
graph A[Job Completions: 2 , Parallelism: 2] -->|Step1.1| B[建立 Pod] B --> |Step-1.2| C[Pod執行中] C --> |Step-2.3| D[Pod 執行完成] D -->|Step-1.4 Observe| A A --> |Step-2.1| B1[建立 Pod] B1 --> |Step-2.2|C1[Pod執行中] C1 --> |Step-2.3|D1[Pod 執行完成] D1 -->|Step-2.4 Observe| A
上面圖片Step1,Step2 是一起做的。我多加一個Thread 來表示可能會比較清楚。
graph ST[StartJob] --> |Step-1 and 2|B & B1 subgraph thread1 B[建立 Pod] --> |Step-1.2| C[Pod執行中] C --> |Step-1.3| D[Pod 執行完成] end subgraph thread2 B1[建立 Pod] --> |Step-2.2|C1[Pod執行中] C1 --> |Step-2.3|D1[Pod 執行完成] end D & D1 --> END[EndJob]
backofflimit
跑失敗幾次就不跑
activeDeadLineSeconds
執行超過多久會自動關閉,Pod狀態會變成failed。
Tree
Job->Pod*
官方實例
1 | apiVersion: batch/v1 |
1 | kubectl apply -f https://kubernetes.io/examples/controllers/job.yaml |
自動清理
完成 100 秒就會清除,我在 kind 沒有效果…
FEATURE STATE: Kubernetes v1.12 [alpha]
可能我的環境還不支援??
1 | apiVersion: batch/v1 |
Crontab
1 | apiVersion: batch/v1beta1 |
Queue Work
Tree
1 | kubectl tree cronjob xxx |
CronJob->Job->Pod