回到目錄?
Job
-
對于非耐久性任務(wù),比如壓縮文件,任務(wù)完成后,pod需要結(jié)束運(yùn)行,不需要pod繼續(xù)保持在系統(tǒng)中,這個時候就要用到Job。
-
Job負(fù)責(zé)批量處理短暫的一次性任務(wù) (short lived one-off tasks),即僅執(zhí)行一次的任務(wù),它保證批處理任務(wù)的一個或多個Pod成功結(jié)束
yaml文件
多次執(zhí)行任務(wù)
一個執(zhí)行10次,并發(fā)為1的job任務(wù),在容器中輸出hello
apiVersion: batch/v1 #版本
kind: Job #類型
metadata:
name: busybox-job #名稱
spec:
completions: 10 # 執(zhí)行job的次數(shù)
parallelism: 1 # 執(zhí)行job的并發(fā)數(shù)
template:
metadata:
name: busybox-job-pod #pod名
spec:
containers:
- name: busybox
image: busybox
imagePullPolicy: IfNotPresent
command: ["echo", "hello"]
restartPolicy: Never #重啟策略
一次性任務(wù)
不指定completions即默認(rèn)為1,是一次性任務(wù)
改任務(wù)將執(zhí)行sh命令,將mysql的host,數(shù)據(jù)庫名和密碼寫入容器卷中
apiVersion: batch/v1 #版本
kind: Job #類型
metadata:
name: mysql-dump
spec:
template:
metadata:
name: mysql-dump
spec:
nodeName: k8s-master2 #部署到指定節(jié)點(diǎn)
containers:
- name: mysql-dump
image: mysql:5.7
command: ["/bin/sh","-c","mysqldump --host=mysql-test -uroot -pabc123 --databases mysql > /root/mysql2022.sql"]
volumeMounts:
- mountPath: "/root"
name: mysql-data
restartPolicy: Never
volumes:
- name: mysql-data
hostPath:
path: /opt/mysqldump
CronJob
在 k8s 中周期性運(yùn)行計(jì)劃任務(wù),與 linux 中的 crontab 相同
注意點(diǎn):CronJob 執(zhí)行的時間是 controller-manager 的時間,所以一定要確保 controller-manager 時間是準(zhǔn)確的
cron表達(dá)式
格式
┌───────────── 分鐘 (0 - 59)
│ ┌───────────── 小時 (0 - 23)
│ │ ┌───────────── 月的某天 (1 - 31)
│ │ │ ┌───────────── 月份 (1 - 12)
│ │ │ │ ┌───────────── 周的某天 (0 - 6)(周日到周一;在某些系統(tǒng)上,7 也是星期日)
│ │ │ │ │ 或者是 sun,mon,tue,web,thu,fri,sat
│ │ │ │ │
│ │ │ │ │
* * * * *
*
代表全部
?
代表不使用該位置
/
后緊跟代表每隔多久
-
代表前后期間文章來源:http://www.zghlxwxcb.cn/news/detail-622571.html
#
代表第幾個文章來源地址http://www.zghlxwxcb.cn/news/detail-622571.html
常見cron
0 0 0 * * ?:每天的零點(diǎn)整執(zhí)行任務(wù)。
0 0 */2 * * ?:每隔2小時執(zhí)行一次任務(wù)。
0 0 12 * * ?:每天中午12點(diǎn)執(zhí)行任務(wù)。
0 15 10 * * ?:每天上午10點(diǎn)15分執(zhí)行任務(wù)。
0 0 6,18 * * ?:每天的早上6點(diǎn)和晚上6點(diǎn)執(zhí)行任務(wù)。
0 0/30 8-18 * * ?:每天的上午8點(diǎn)到下午6點(diǎn)之間,每隔30分鐘執(zhí)行一次任務(wù)。
0 0 0 1 1 ?:每年的1月1日零點(diǎn)整執(zhí)行任務(wù)。
0 0 0 * * 2:每周的星期二零點(diǎn)整執(zhí)行任務(wù)。
0 0 0 ? * 6#3:每月的第三個星期六零點(diǎn)整執(zhí)行任務(wù)。
0 0 0 L * ?:每個月的最后一天零點(diǎn)整執(zhí)行任務(wù)。
ymal文件
apiVersion: batch/v1
kind: CronJob
metadata:
name: hello
spec:
concurrencyPolicy: Allow # 并發(fā)調(diào)度策略:Allow 允許并發(fā)調(diào)度,F(xiàn)orbid:不允許并發(fā)執(zhí)行,Replace:如果之前的任務(wù)還沒執(zhí)行完,就直接執(zhí)行新的,放棄上一個任務(wù)
failedJobsHistoryLimit: 1 # 保留多少個失敗的任務(wù)
successfulJobHistoryLimit: 3 # 保留多少個成功的任務(wù)
suspend: false # 是否掛起任務(wù),若為 true 則該任務(wù)不會執(zhí)行
# startingDeadlineSeconds: 30 # 間隔多長時間檢測失敗的任務(wù)并重新執(zhí)行,時間不能小于 10
schedule: "* * * * *" # 調(diào)度策略
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox:1.28
imagePullPolicy: IfNotPresent
command:
- /bin/sh
- -c
- date; echo Hello from the Kubernetes cluster
restartPolicy: OnFailure
到了這里,關(guān)于k8s概念-Job和CronJob的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!