K8s 內也可以跑 Jobs 和 CronJobs,這一篇筆記就是在記錄此事
什麼是 Jobs
- one time execution
 - can run multiple Pods in parallel
 - Successful completions are tracked
 
什麼是 CronJobs
- Cron Job creates Jobs on a time-based schedule
 - scheduled using the Cron format
 - names must be less than 52 characters
 * * * * *為標準 Cron format.- 第一個 
*: min (0~59) - 第二個 
*: hour (0~23) - 第三個 
*: day of month (1 - 31) - 第四個 
*: month (1 - 12) 或 jan, fan, mar,… - 第五個 
*: day of week (0 - 6, Sunday = 0 or 7) 或是 sun, mon, tue,… 
- 第一個 
 - 範例:
- 每週一早上 3 點, 
0 3 * * 1 - 每小時: 
0 * * * *,@hourly - 每天: 
0 0 * * *,@daily - 每週: 
0 0 1 * *,@monthly - 每年: 
0 0 1 1 *,@yearly - 每分鐘: 
*/1 * * * * 
 - 每週一早上 3 點, 
 - cron format editor 網站
 
如何建立 Jobs 和 CronJobs
- 
先定義 Jobs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19apiVersion: batch/v1
kind: job
metadata:
name: pie-counter
spec:
template:
metadata:
name: pie-counter
spec:
completions: 4
parallelism: 2
restartPolicy: Never
containers:
- name: pie-counter
image: xxx
command:
- "sh"
- "-c"
- "....."- apiVersion 和 kind 的設定方法如上
 - completions: 需要成功執行 Job 的 Pods 數量
 - parallelism: 平行執行 Job 的 Pods 數量
 - restartPolicy 設定值有
- Never : Never try to restart
 - OnFailure: restart when job fail
 
 - command: 執行指令
 
 - 
Crobjob YAML 樣本如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21apiVersion: batch/v1
kind: CronJob
metadata:
name: pie-counter
spec:
concurrencyPolicy: Allow # Allow, Forbid, Replace
schedule: '*/5 * * * *'
jobTemplate:
metadata:
name: pie-counter
spec:
completions: 4
parallelism: 2
restartPolicy: Never
containers:
- name: pie-counter
image: xxx
command:
- "sh"
- "-c"
- "....."- concurrencyPolicy: 是否允許 cronjobs 重疊執行
 - schedule: 設定執行時間表 (Cron format)
 - 使用 
jobTemplate來描述job的 template