当前位置:   article > 正文

Kubernetes之job_kubernetes job

kubernetes job

job

job用于执行一次性任务,如数据处理、分析、测试、运算等需求,运算完成后,也就结束了,不用一直计算下去。
创建一个job后,会创建一个pod,如果pod执行成功了,则此job结束,若此pod执行失败,则创建一个新的pod或者重启pod,再次执行该任务。
job的restart策略只有如下两种(没有pod的策略Always):

  1. Never:只要任务没有完成,则新创建pod运行,直到job完成,会产生多个pod。(默认)
  2. 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
  • 1

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

  • 删除job
kubectl delete jobs.batch job1
  • 1

在这里插入图片描述

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
  省略
  • 1
  • 2
  • 3
  • 4
  • 5

job练习:计算圆周率小数点后1000位

  • 创建job
kubectl create job job2 --image=perl -- perl -Mbignum=bpi -wle 'print bpi(1000)'
  • 1
  • 查看pod运行情况
kubectl get pod
  • 1
  • 查看job输出
kubectl logs job2--1-5kz6c
  • 1

在这里插入图片描述

  • 删除job
kubectl delete job job2
  • 1

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
  • 1
  • 创建cj
kubectl apply -f job2.yaml
  • 1
  • 查看cj
kubectl get cj
  • 1
  • 查看pod,每隔1分钟运行一个pod
kubectl get pod
  • 1

在这里插入图片描述

  • 删除cj
kubectl delete -f job2.yaml
  • 1

在这里插入图片描述

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

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号