job
job用于执行一次性任务,如数据处理、分析、测试、运算等需求,运算完成后,也就结束了,不用一直计算下去。
 创建一个job后,会创建一个pod,如果pod执行成功了,则此job结束,若此pod执行失败,则创建一个新的pod或者重启pod,再次执行该任务。
 job的restart策略只有如下两种(没有pod的策略Always):
- Never:只要任务没有完成,则新创建pod运行,直到job完成,会产生多个pod。(默认)
 - OnFailure:只要pod没有完成,就会重启pod,重新执行任务。
 
- 创建yaml文件,并修改镜像下载策略,任务为先执行’echo hello’,之后等待30s
 
kubectl create job job1 --image=busybox --dry-run=client -o yaml -- sh -c "echo hello && sleep 30" > job1.yaml
 

- 创建job,查看pod状态,查看job运行状态,此时pod创建成功,job还未完成
 
kubectl apply -f job1.yaml
kubectl get pod
kubectl get job
 

- 再次查看pod和job状态,pod已经正常运行完毕了,状态为Completed,job需要完成一次,顺利完成
 
kubectl get pod
kubectl get job
 

- 删除job
 
kubectl delete jobs.batch job1
 

job中指定参数
对于一些任务,测试一次成功了,不能算成功,需要多次测试,此时可以在yaml文件中使用下面的参数:
- parallelism: N,并行运行N个pod。
 - completions: N,需要有M次成功才算成功。
 - backoffLimit: N,如果job失败,则重启N次。
 - activeDeadlineSeconds: N,job运行的最长时间,单位是秒,超过这个时间,不管job有没有完成都会被终止,没完成的pod也会被强制删除,也不会再生产新的pod。
 
例子:
spec
  parallelism: 3
  completions: 6
  backoffLimit: 4
  省略
 
job练习:计算圆周率小数点后1000位
- 创建job
 
kubectl create job job2 --image=perl -- perl -Mbignum=bpi -wle 'print bpi(1000)'
 
- 查看pod运行情况
 
kubectl get pod
 
- 查看job输出
 
kubectl logs job2--1-5kz6c
 

- 删除job
 
kubectl delete job job2
 
cronjob
cronjob是周期性的、循环性的(如每天清理临时文件),简写为cj。
- 创建yaml文件,并添加镜像下载策略,–schedule定义了什么时候开始执行指定命令,格式与Linux中crontab的格式一样。
 
kubectl create cj job2 --image=busybox --schedule="*/1 * * * *" --dry-run=client -o yaml -- /bin/sh -c "echo hello world" > job2.yaml
 
- 创建cj
 
kubectl apply -f job2.yaml
 
- 查看cj
 
kubectl get cj
 
- 查看pod,每隔1分钟运行一个pod
 
kubectl get pod
 

- 删除cj
 
kubectl delete -f job2.yaml
 

注意:在cronjob的yaml文件里,.spec.jobTemplate.spec字段里,可以写activeDeadlineSeconds参数,指定cronjob所生成的pod只能执行多久。

















![[计算机网络(第八版)]第二章 物理层(学习笔记)](https://img-blog.csdnimg.cn/9b29482cceba4cf29ad661ba5db5da72.png)

