码迷,mamicode.com
首页 > Web开发 > 详细

centos7下kubernetes(11。kubernetes-运行一次性任务)

时间:2018-09-28 19:14:46      阅读:282      评论:0      收藏:0      [点我收藏+]

标签:自动   重试   相同   不能   uber   replica   怎么办   show   limit   

 

容器按照持续运行的时间可以分为两类:服务类容器和工作类容器

服务类容器:持续提供服务

工作类容器:一次性任务,处理完后容器就退出

Deployment,replicaset和daemonset都用于管理服务类容器,

对于工作类的容器,我们用job

编辑一个简单的job类型的yml文件

技术分享图片

1.apiversion:当前job的apiversion是batch/v1

2.kind:当前的资源类型是job

3.restartpolicy指定什么情况下需要重启容器。对于job只能设置为never或者onfailure

对于其他的controller(比如deployment,replicaset等)可以设置为always

创建job应用

技术分享图片

通过kubectl get job进行查看

技术分享图片

显示destire为1,成功1

说明是按照预期启动了一个pod,并且成功执行

查看pod的状态

技术分享图片

由于myjob的pod处于completed的状态,所以需要加--show-all参数才能显示出来

 

 

通过kubectl logs 查看pod标准输出

技术分享图片

 

 

 

如果job没有执行成功,怎么办?

修改job.yml文件,故意引起一个错误,然后重新启动myjob

技术分享图片

 

先将原来的job删除

技术分享图片

 然后重新启动一个新的job

技术分享图片

重新启动一个job,我们发现有一个未成功的job,查看pod的时候竟然有两个job相关的pod,目标job只有1个啊,为什么??

我们再次查看一下

技术分享图片

目前达到了6个

原因是:当地一个pod启动时,容器失败退出,根据restartPolicy:Never,此失败容器不会被重启,但是job destired的pod是1,目前successful为1。由于我们的命令是错误的,successful永远不能到1,

job contorller会一直创建新的pod达到job得期望状态,最多重新创建6次,因为K8S为job提供了spec.bakcofflimits来限制重试次数,默认为6.

 

 

如果将restartpolicy设置为OnFailure会怎么样?我们来实验一下

修改job.yml文件

技术分享图片

将restartpolicy修改为OnFailure

重新启动job.yml

技术分享图片

pod数量只有1,job为失败得状态

但是pod得restart得次数在变化,说明onfailure生效,容器失败后会自动重启

 

 

 

并行执行job

之前我们得实验都是一次运行一个job里只有一个pod,当我们同时运行多个pod得时候,怎么进行设置呢?

可以通过:parallelism设置

修改job.yml文件

技术分享图片

 

此次我们执行一个job同时运行3个pod

kubectl apply -f job.yml

技术分享图片

job一共启动了3个pod,而且AGE相同,说明是并行运行得。

还可以通过completions设置job成功完成pod的总数;

 

centos7下kubernetes(11。kubernetes-运行一次性任务)

标签:自动   重试   相同   不能   uber   replica   怎么办   show   limit   

原文地址:https://www.cnblogs.com/lkun/p/9720043.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!