前面我们讲过了deployment、statefulset、daemonset三种控制器,每一种都是各有各的特色
今天我们来学习剩下的另外2中
job和cronjob;其实job和cronjob是一样的功能,只不过cronjob添加了定时任务功能。
总结:Job负责处理任务,即仅执行一次的任务,它保证批处理任务的一个或多个Pod成功结束。而CronJob则就是在Job上加上了时间调度
好了开始实践一下
首先使用job创建一个倒计时的功能
cat job.yaml
apiVersion: batch/v1
kind: Job
metadata:
name: job-demo
spec:
template:
metadata:
name: job-demo
spec:
restartPolicy: Never
containers:
- name: counter
image: busybox
command:- "bin/sh"
- "-c"
- "for i in 9 8 7 6 5 4 3 2 1; do echo $i; done"
然后创建一下
看一下效果
CronJob
其实就是在Job的基础上加上了时间调度,我们可以:在给定的时间点运行一个任务,也可以周期性地在给定时间点运行。这个实际上和我们Linux中的crontab就非常类似
cat cronjob-demo.yaml
apiVersion: batch/v2alpha1
kind: CronJob
metadata:
name: cronjob-demo
spec:
schedule: "/1 *"
jobTemplate:
spec:
template:
spec:
restartPolicy: OnFailure
containers:
- name: hello
image: busybox
args:- "bin/sh"
- "-c"
- "for i in 9 8 7 6 5 4 3 2 1; do echo $i; done"
spec.schedule字段是必须填写的,用来指定任务运行的周期
spec.jobTemplate, 用来指定需要运行的任务
pec.successfulJobsHistoryLimit和.spec.failedJobsHistoryLimit,表示历史限制,是可选的字段。它们指定了可以保留多少完成和失败的Job,默认没有限制
kubectl create -f cronjob-demo.yaml
或者使用kubectl run来创建一个CronJob
kubectl run hello --schedule="/1 *" --restart=OnFailure --image=busybox -- /bin/sh -c "date; echo Hello from the Kubernetes cluster"
这里会定时一直去创建,而且保留下来
所以删掉吧
job和cronjob其实用的时候相对于另外的三中要少很多,这里只是演示一下,了解就好,
k8s的5种控制器模式到现在就完成了,后面开始新的学习,
欢迎大家私信留言