回到目录
Job
-
对于非耐久性任务,比如压缩文件,任务完成后,pod需要结束运行,不需要pod继续保持在系统中,这个时候就要用到Job。
-
Job负责批量处理短暂的一次性任务 (short lived one-off tasks),即仅执行一次的任务,它保证批处理任务的一个或多个Pod成功结束
yaml文件
多次执行任务
一个执行10次,并发为1的job任务,在容器中输出hello
apiVersion: batch/v1 #版本
kind: Job #类型
metadata:
name: busybox-job #名称
spec:
completions: 10 # 执行job的次数
parallelism: 1 # 执行job的并发数
template:
metadata:
name: busybox-job-pod #pod名
spec:
containers:
- name: busybox
image: busybox
imagePullPolicy: IfNotPresent
command: ["echo", "hello"]
restartPolicy: Never #重启策略
一次性任务
不指定completions即默认为1,是一次性任务
改任务将执行sh命令,将mysql的host,数据库名和密码写入容器卷中
apiVersion: batch/v1 #版本
kind: Job #类型
metadata:
name: mysql-dump
spec:
template:
metadata:
name: mysql-dump
spec:
nodeName: k8s-master2 #部署到指定节点
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 中周期性运行计划任务,与 linux 中的 crontab 相同
注意点:CronJob 执行的时间是 controller-manager 的时间,所以一定要确保 controller-manager 时间是准确的
cron表达式
格式
┌───────────── 分钟 (0 - 59)
│ ┌───────────── 小时 (0 - 23)
│ │ ┌───────────── 月的某天 (1 - 31)
│ │ │ ┌───────────── 月份 (1 - 12)
│ │ │ │ ┌───────────── 周的某天 (0 - 6)(周日到周一;在某些系统上,7 也是星期日)
│ │ │ │ │ 或者是 sun,mon,tue,web,thu,fri,sat
│ │ │ │ │
│ │ │ │ │
* * * * *
*
代表全部
?
代表不使用该位置
/
后紧跟代表每隔多久
-
代表前后期间文章来源:https://www.toymoban.com/news/detail-622571.html
#
代表第几个文章来源地址https://www.toymoban.com/news/detail-622571.html
常见cron
0 0 0 * * ?:每天的零点整执行任务。
0 0 */2 * * ?:每隔2小时执行一次任务。
0 0 12 * * ?:每天中午12点执行任务。
0 15 10 * * ?:每天上午10点15分执行任务。
0 0 6,18 * * ?:每天的早上6点和晚上6点执行任务。
0 0/30 8-18 * * ?:每天的上午8点到下午6点之间,每隔30分钟执行一次任务。
0 0 0 1 1 ?:每年的1月1日零点整执行任务。
0 0 0 * * 2:每周的星期二零点整执行任务。
0 0 0 ? * 6#3:每月的第三个星期六零点整执行任务。
0 0 0 L * ?:每个月的最后一天零点整执行任务。
ymal文件
apiVersion: batch/v1
kind: CronJob
metadata:
name: hello
spec:
concurrencyPolicy: Allow # 并发调度策略:Allow 允许并发调度,Forbid:不允许并发执行,Replace:如果之前的任务还没执行完,就直接执行新的,放弃上一个任务
failedJobsHistoryLimit: 1 # 保留多少个失败的任务
successfulJobHistoryLimit: 3 # 保留多少个成功的任务
suspend: false # 是否挂起任务,若为 true 则该任务不会执行
# startingDeadlineSeconds: 30 # 间隔多长时间检测失败的任务并重新执行,时间不能小于 10
schedule: "* * * * *" # 调度策略
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
到了这里,关于k8s概念-Job和CronJob的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!