iT邦幫忙

2022 iThome 鐵人賽

DAY 20
0
DevOps

從認識Docker到精通系列 第 20

第二十天 - CronJob

  • 分享至 

  • xImage
  •  

CronJob

和 Linux 中的 Cron Job 一樣,K8s 在 1.5 版本之後開始支援定時啟動的任務 CronJob ,只要掌握 Cron Job 的定時運算式,就可以學會使用 CronJob 了!

控制CronJob的啟動時機 - 定時運算式

[分] [時] [日] [月] [星期]
  • 分:可利用 , , - , * , /,需使用 0-59 的整數
  • 時:可利用 , , - , * , /,需使用 0-23 的整數
  • 日:可利用 , , - , * , /, ?,需使用 1-31 的整數
  • 月:可利用 , , - , * , /,需使用 1-12 的整數或 JAN ~ DEC
  • 日:可利用 , , - , * , /, ?,需使用 0-6 的整數(從週日開始)或 SUN~SAT
  • 符號說明:
    • *:表示符合該域的任意值,每當時間更新一次就會判斷,例如如果在分鐘的部分使用 *,則會在每分鐘都觸發一次
    • /:格式是 <T1>/<T2> 表示從 T1 時間開始觸發,然後每隔 T2 時間再次觸發,例如分鐘欄位是*/5,便代表每隔五分鐘執行,10/5則是從第十分鐘起每五分鐘執行
    • ?:用在可以用文字表示的部分,如星期,符合指定的字便會執行 (a wildcard value that matches a single character)

更多資訊可以查看 Cron - 维基百科,自由的百科全书 (wikipedia.org)

控制CronJob執行項目:spec.jobTemplate

在此區塊定義CronJob的執行項目,包括執行的 container image、commands等等,內容和job的部分相同

(選用) 執行時間的deadline:startingDeadlineSeconds

我們可以利用 startingDeadlineSeconds 這個參數來定義 job 在啟動多少秒後為timeout failure

(選用) job 並行控制:spec.concurrencyPolicy

利用這個參數可以設置該不該允許job並行處理,預設為 allow,另有 ForbidReplace,作用和字面上的意思類似:

  • Allow:允許job並行
  • Forbid:不允許job並行,且後一個job必須等前一個執行完畢才可接著執行(前一個沒完後一個會被忽略)
  • Replace:和 Forbid 一樣,但若前一個 job 未完成但到了新的job的觸發時間時,新的 job 會取代舊的 job 執行

註:以上設置僅對同一個 Cronjob 創建的 job 有效,若有多個 CronJob 則仍可並行

(選用)記錄限制

  • spec.successfulJobsHistoryLimit:紀錄成功運行的 job,預設為3
  • spec.failedJobsHistoryLimit:記錄失敗運行的 job,預設為1
  • 以上兩個項目若設置為0,則不會保留相關紀錄

啟動 CronJob

執行 kubectl create -f <YAML>就可以啟動Cronjob了

刪除 CronJob

執行 kubectl delete cronjob <CronJob名稱>

REF

CronJobs  |  Google Kubernetes Engine (GKE)  |  Google Cloud
Running Automated Tasks with a CronJob | Kubernetes
使用 CronJob 运行自动化任务 | Kubernetes


上一篇
第十九天-jobs
下一篇
第二十一天 - Daemon Set
系列文
從認識Docker到精通30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言