[K8s] 開始學習 Kubernetes - Jobs

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 * * * *
  • cron format editor 網站

如何建立 Jobs 和 CronJobs

  • 先定義 Jobs

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    apiVersion: 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
    21
    apiVersion: 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

參考資料