定时执行 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.servicekubelet 會重啟 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
總結
以上是生活随笔為你收集整理的定时执行 Job - 每天5分钟玩转 Docker 容器技术(135)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Meta 将更新 Messenger:向
- 下一篇: 2018年对PHP的新认知