文章目录
kubernetes(k8s)工作负载
一、workloads
二、pod
关于pod深入介绍已经在之前文章讲述过,有不了解的同学可以再看看以下文章
【云原生 | kubernetes篇】深入了解pod(六)_lansonli的博客-csdn博客
三、deployment
关于deployment深入介绍已经在上一篇文章讲述过,有不了解的同学可以看看以下文章
【云原生 | kubernetes篇】深入了解deployment_lansonli的博客-csdn博客
四、rc、rs、daemonset、statefulset
关于这块内容****已经在之前文章讲述过,有不了解的同学可以再看看以下文章
【云原生 | kubernetes篇】深入rc、rs、daemonset、statefulset(七)_lansonli的博客-csdn博客
五、job、cronjob
1、job
kubernetes中的 job 对象将创建一个或多个 pod,并确保指定数量的 pod 可以成功执行到进程正常结束:
- 当 job 创建的 pod 执行成功并正常结束时,job 将记录成功结束的 pod 数量
- 当成功结束的 pod 达到指定的数量时,job 将完成执行
- 删除 job 对象时,将清理掉由 job 创建的 pod
apiversion: batch/v1
kind: job
metadata:
name: pi
spec:
template:
spec:
containers:
- name: pi
image: perl
command: ["perl", "-mbignum=bpi", "-wle", "print bpi(2000)"]
restartpolicy: never #job情况下,不支持always
backofflimit: 4 #任务4次都没成,认为失败
activedeadlineseconds: 10
#默认这个任务需要成功执行一次。
#查看job情况
kubectl get job
#修改下面参数设置再试试
#千万不要用阻塞容器。nginx。job由于pod一直running状态。下一个永远得不到执行,而且超时了,当前running的pod还会删掉
kubectl api-resources
#参数说明
kubectl explain job.spec
activedeadlineseconds:10 总共维持10s
#该字段限定了 job 对象在集群中的存活时长,一旦达到 .spec.activedeadlineseconds 指定的时长,该 job 创建的所有的 pod 都将被终止。但是job不会删除,job需要手动删除,或者使用ttl进行清理
backofflimit:
#设定 job 最大的重试次数。该字段的默认值为 6;一旦重试次数达到了 backofflimit 中的值,job 将被标记为失败,且尤其创建的所有 pod 将被终止;
completions: #job结束需要成功运行的pods。默认为1
manualselector:
parallelism: #并行运行的pod个数,默认为1
ttlsecondsafterfinished:
ttlsecondsafterfinished: 0 #在job执行完时马上删除
ttlsecondsafterfinished: 100 #在job执行完后,等待100s再删除
#除了 cronjob 之外,ttl 机制是另外一种自动清理已结束job(completed 或 finished)的方式:
#ttl 机制由 ttl 控制器 提供,ttlsecondsafterfinished 字段可激活该特性
#当 ttl 控制器清理 job 时,ttl 控制器将删除 job 对象,以及由该 job 创建的所有 pod 对象。
#job超时以后 已经完成的不删,正在运行的pod就删除
#单个pod时,pod成功运行,job就结束了
#如果job中定义了多个容器,则job的状态将根据所有容器的执行状态来变化。
#job任务不建议去运行nginx,tomcat,mysql等阻塞式的,否则这些任务永远完不了。
#如果job定义的容器中存在http server、mysql等长期的容器和一些批处理容器,则job状态不会发生变化(因为长期运行的容器不会主动结束)。此时可以通过pod的.status.containerstatuses获取指定容器的运行状态。
manualselector:
- job同样可以指定selector来关联pod。需要注意的是job目前可以使用两个api组来操作,batch/v1和extensions/v1beta1。当用户需要自定义selector时,使用两种api组时定义的参数有所差异。
- 使用batch/v1时,用户需要将jod的spec.manualselector设置为true,才可以定制selector。默认为false。
- 使用extensions/v1beta1时,用户不需要额外的操作。因为extensions/v1beta1的spec.autoselector默认为false,该项与batch/v1的spec.manualselector含义正好相反。换句话说,使用extensions/v1beta1时,用户不想定制selector时,需要手动将spec.autoselector设置为true。
2、cronjob
cronjob 按照预定的时间计划(schedule)创建 job(注意:启动的是job不是deploy,rs)。一个 cronjob 对象类似于 crontab (cron table) 文件中的一行记录。该对象根据 cron 格式定义的时间计划,周期性地创建 job 对象。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
发表评论