Open 0x171-0 opened 2 years ago
印象中 kubernetes cronjobs (https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/) 應該就可以管理排程,kubernetes 根據你定的時間, 起一個 container 跑你的 code 如果有error, application 就 throw exception, 成功跑完就 system.exit(0) 結束 有 exception 的話, pod 就會一直留在那 -> 接著就需要一些 monitor mechanism 來監控 如果失敗要怎麼處理排程
我們專案在 config 上還有加
concurrencyPolicy: Forbid
來做多一層保護 => 假設每小時跑一次, 上個小時的job 失敗了, pod 還卡在哪. 這個小時 k8s 執行前, 發現已經有一個 job 還在跑, 那他就不會執行這個小時的 job
想請教大家有沒有實作過特定時間排程任務的鎖定?我之前有過的作法是最先處理到的 pod 去 db 拿 redis key,或是利用環境變數設定特定的節點執行特定任務,好奇大家有沒有時做過其他機制來阻止排程任務重複執行?