1 2 3 4 5 6 7 作者:李晓辉 联系方式: 1. 微信:Lxh_Chat 2. 邮箱:939958092@qq.com
在 Kubernetes 里,集群管理员就像个超级管家,可以用调度任务搞定集群的维护工作,轻松又省心。其他用户也能创建调度任务,给自己的应用做常规维护,很方便呢。
job 作业(job)
咱来说说作业,这就好比是一次性的任务,比如打扫房间,干完就完事儿了。在 Kubernetes 里,作业就是指定执行一次的任务,简单明了。
创建一个Job,这个Job只有一个任务,完成后即可退出,就是hello lixiaohui的字符串输出
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 cat > job.yml <<EOF apiVersion: batch/v1 kind: Job metadata: name: hello-lixiaohui-job spec: template: spec: containers: - name: pi image: registry.ocp4.example.com:8443/openshift/origin-cli:4.12 imagePullPolicy: IfNotPresent command: ["sh" , "-c" , "echo hello lixiaohui" ] restartPolicy: Never backoffLimit: 4 EOF
看一下任务运行的结果
1 2 3 [student@workstation ~]$ oc get job NAME COMPLETIONS DURATION AGE hello-lixiaohui-job 1/1 12s 5m15s
从日志中看,输出了一次内容就标记为完成了
1 2 3 4 5 6 7 [student@workstation ~]$ oc create -f job.yml [student@workstation ~]$ oc get pod NAME READY STATUS RESTARTS AGE hello-lixiaohui-job-fqh4t 0/1 Completed 0 16s [student@workstation ~]$ oc logs hello-lixiaohui-job-fqh4t hello lixiaohui
Cron Job Cron 作业(cronjob)
再看看 Cron 作业,这可有意思了,它就像是个超级闹钟,能按照设定的时间表定期执行任务。比如,每周一早上自动清理垃圾,或者每天晚上自动备份数据。当 Cron 作业到了该执行的时间,Kubernetes 就会自动创建一个作业资源,就像闹钟响了,提醒你该干活了。这些作业是根据 Cron 作业定义里的模板来创建的,就像按照菜谱做饭一样,保证每次执行都是一样的标准。
集群管理员可以使用调度任务来自动执行集群中的维护任务。其他用户可以创建调度任务以进行常规应用维护。
cron 作业资源包括描述任务和调度的作业模板,Kubernetes cron 作业的调度规范衍生自 Linux cron 作业中的规范,我们来看看Linux里的cron知识
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [student@workstation ~]$ cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root
以下是 cron 作业规范的几个示例:
调度规范 描述 0 0 * * *
每天午夜运行指定的任务 0 0 * * 7
每周日运行指定的任务 0 * * * *
每小时运行指定的任务 */4 * * * *
每四分钟运行指定的任务
我们来创建一个crontjob
这个cronjob每分钟会输出一句话
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 cat > cronjob.yml <<EOF apiVersion: batch/v1 kind: CronJob metadata: name: cronjobtest spec: schedule: "*/1 * * * *" jobTemplate: spec: template: spec: containers: - name: hello image: registry.ocp4.example.com:8443/openshift/origin-cli:4.12 imagePullPolicy: IfNotPresent command: - /bin/sh - -c - date; echo Hello lixiaohui again restartPolicy: OnFailure EOF
1 [student@workstation ~]$ oc create -f cronjob.yml
这个不会那么快的看到结果,因为要到1分钟后,它才会运行
1 2 3 [student@workstation ~]$ oc get cronjobs.batch NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE cronjobtest */1 * * * * False 0 <none> 18s
再看的时候,已经有了上一次的调度时间,并可以看到pod正常运行
1 2 3 4 5 6 7 8 9 10 11 [student@workstation ~]$ oc get cronjobs.batch NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE cronjobtest */1 * * * * False 0 12s 63s [student@workstation ~]$ oc get pod NAME READY STATUS RESTARTS AGE cronjobtest-28914331-r7rdz 0/1 Completed 0 16s [student@workstation ~]$ oc logs cronjobtest-28914331-r7rdz Sun Dec 22 09:31:01 UTC 2024 Hello lixiaohui again
版权声明: 本博客中的内容未经允许不得转载和引用,转载和引用需获得作者同意, 作者微信: Lxh_Chat