01 引言
聲明:本文為《Kubernetes權(quán)威指南:從Docker到Kubernetes實踐全接觸(第5版)》的讀書筆記
Kubernetes從1.5版本開始增加了一種新類型的Job,即類似Linux Cron的定時任務Cron Job
,下面看看如何定義和使用這種類型的Job
。
02 基本語法
首先,確保
Kubernetes
的版本為1.8
及以上。
Cron Job的定時表達式基本上照搬了Linux Cron的表達式,格式如下:
Minutes Hours DayofMonth Month DayofWeek
其中每個域都可出現(xiàn)的字符如下。
域 | 描述 |
---|---|
Minutes | 可出現(xiàn)“,” “-” “*” “/” 這4個字符,有效范圍為0~59 的整數(shù) |
Hours | 可出現(xiàn)“,” “-” “%” “/” 這4個字符,有效范圍為0~23 的整數(shù) |
DayofMonth | 可出現(xiàn)“,” “- “*” “/“ “?” “L” “W“ “C” 這8個字符,有效范圍 為1~31 的整數(shù) |
Month | 可出現(xiàn)“,” “-” “*” “/” 這4個字符,有效范圍為1~12的整數(shù)或JAN~DEC
|
DayofWeek | 可出現(xiàn)“,” “*” “/” “?” “L” “C” “#” 這8個字符,有效范圍為1~7 的整數(shù)或SUN~SAT 。1 表示星期天,2 表示星期一,以此類推 |
表達式中的特殊字符“*”
與“/”
的含義如下:
-
*
:表示匹配該域的任意值,假如在Minutes
域使用“*”
,則表示每分鐘都會觸發(fā)事件; -
/
:表示從起始時間開始觸發(fā),然后每隔固定時間觸發(fā)一次,例如在
Minutes域設置為5/20,則意味著第1次觸發(fā)在第5min時,接下來每20min觸發(fā)一 次,將在第25min、第45min等時刻分別觸發(fā)。
03 案例
比如,我們要每隔1min
執(zhí)行一次任務,則Cron表達式如下:
*/1 * * * *
編寫一個Cron Job的配置文件(cron.yaml
):
apiversion: batch/vl beta
kind: CronJob
metadata:
name: hello
spec:
schedule: "*/1 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name:hello
image:busybox
args:
- /bin/sh
- -C
- date;echo Hello from the Kubernetes cluster restartPolicy:OnFailure
該例子定義了一個名為hello
的Cron Job
,任務每隔1min執(zhí)行一次,運行的鏡像是busybox
,運行的命令是Shell
腳本,腳本運行時會在控制臺輸出當前時間和字符串"Hello from the Kubernetes cluster".
接下來運行kubectl create
命令完成創(chuàng)建:
$ kubectl create -f cron.yaml
cronjob "hello"created
然后每隔1min
運行kubectl get cronjob hello
查看任務狀態(tài),發(fā)現(xiàn)的確每分鐘調(diào)度了一次:
還可以通過查找Cron Job對應的容器,驗證每隔1min產(chǎn)生一個容器的事實:
查看任意一個容器的日志,結(jié)果如下:
運行下面的命令,可以更直觀地了解Cron Job定期觸發(fā)任務執(zhí)行的歷史和現(xiàn)狀:
在Kubernetes1.9
版本后,kubectl
命令增加了別名cj
來表示cronjob
,同時 kubectl set image/env
命令也可以作用在CronJob
對象上。文章來源:http://www.zghlxwxcb.cn/news/detail-419439.html
04 文末
本文主要講解pod的定時任務調(diào)度,希望能幫助到大家,謝謝大家的閱讀,本文完!文章來源地址http://www.zghlxwxcb.cn/news/detail-419439.html
到了這里,關(guān)于k8s教程(pod篇)-定時任務的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!