Kubernetes 模式:Cronjob模式

「【隻做懂你de雲原生幹貨知識共享】」

Kubernetes 模式:Cronjob模式

從早期版本開始,Cronjob就是 UNIX 系統的一部分。當 GNU 和 Linux 出現時,cron 已經是系統的一部分。cron job隻是計劃定期運行的命令、程序或 shell 腳本。例如,一個自動執行日志輪換的程序必須定時運行(每天、每周、每月等)。

但是,隨著應用程序規模的增長和需要高可用性,我們也需要我們的 cronjob具有高可用性。這種方法可能面臨以下挑戰:

「1」 如果我們有多個節點托管應用程序以獲得高可用性,哪個節點處理 cron?

「2」 如果多個相同的 cronjob同時運行會發生什麼?

應對這些挑戰的一種可能解決方案是創建一個更高級別的“控制器”來管理 cronjob。控制器安裝在每個節點上,並選舉出一個領導節點。領導節點是唯一可以執行 cronjob的節點。如果該節點宕機,則選舉另一個節點。

但是,您需要通過第三方供應商安裝此控制器或編寫自己的控制器。幸運的是,您可以使用 Kubernetes CronJob 控制器來執行周期性任務,這為傳統的 Job 控制器增加瞭一個時間維度。在本文中,我們將演示 CronJob 類型、它的用例以及它解決的問題類型。

Cronjob示例

apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: sender
spec:
schedule: "*/15 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- image: bash
name: sender
command: ["bash","-c","echo 'Sending information to API/database'"]
restartPolicy: OnFailure

赞(0)