定時執行 Job - 每天5分鍾玩轉 Docker 容器技術(135)


Linux 中有 cron 程序定時執行任務,Kubernetes 的 CronJob 提供了類似的功能,可以定時執行 Job。CronJob 配置文件示例如下:

① batch/v2alpha1 是當前 CronJob 的 apiVersion

② 指明當前資源的類型為 CronJob

③ schedule 指定什么時候運行 Job,其格式與 Linux cron 一致。這里 */1 * * * * 的含義是每一分鍾啟動一次。

④ jobTemplate 定義 Job 的模板,格式與前面 Job 一致。

接下來通過 kubectl apply 創建 CronJob。

失敗了。這是因為 Kubernetes 默認沒有 enable CronJob 功能,需要在 kube-apiserver 中加入這個功能。方法很簡單,修改 kube-apiserver 的配置文件 /etc/kubernetes/manifests/kube-apiserver.yaml:

kube-apiserver 本身也是個 Pod,在啟動參數中加上 --runtime-config=batch/v2alpha1=true 即可。

然后重啟 kubelet 服務:

systemctl restart kubelet.service

kubelet 會重啟 kube-apiserver Pod。通過 kubectl api-versions 確認 kube-apiserver 現在已經支持 batch/v2alpha1

再次創建CronJob:

這次成功了。通過 kubectl get cronjob 查看 CronJob 的狀態:

等待幾分鍾,然后通過 kubectl get jobs 查看 Job 的執行情況:

可以看到每隔一分鍾就會啟動一個 Job。執行 kubectl logs 可查看某個 Job 的運行日志:

小結

運行容器化應用是 Kubernetes 最重要的核心功能。為滿足不同的業務需要,Kubernetes 提供了多種 Controller,包括 Deployment、DaemonSet、Job、CronJob 等。本章我們通過實踐詳細學習了這些 Controller,並討論了它們的特性和應用場景。

書籍:
1.《每天5分鍾玩轉Docker容器技術》
https://item.jd.com/16936307278.html

2.《每天5分鍾玩轉OpenStack》
https://item.jd.com/12086376.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM