Kubernetes学习之Job控制器

本文介绍了Kubernetes中的Job控制器,用于一次性任务调度。Job会根据restartPolicy管理Pod,可配置为串行或并行执行。通过.spec.activeDeadlineSeconds和.spec.backoffLimit设置最大活动时间和重试限制。文中还涵盖了编写Job YAML文件、查看Job状态以及创建并行队列Job的实验过程。
摘要由CSDN通过智能技术生成

一、认识Job控制器
  Job控制器用于调配Pod对象运行一次性任务,容器中的进程在正常运行结束后不会对其进行重启,而是将Pod对象置于"Completed"(完成状态),若是容器中进程因错误而终止了,则需要依配置确定是否重启,未运行完成的Pod对象因其所在的节点故障而意外终止后被重新调度。
  Job Controller负责根据Job Spec中的定义来创建Pod,并持续监控Pod状态,直至其成功结束。如果失败了,则根据用户定义的restartPolicy(只支持OnFailure和Never,不支持Always)来决定是否创建新的Pod再次重试任务。
在这里插入图片描述
  在实际中,有的作业任务可能不止需要运行一次,用户可以配置它们以串行或者并行的方式运行。总结起来,这种类型的Job控制器对象有两种,具体如下:
  1)单工作队列(work queue)的串行式Job:即以多个一次性的作业方式串行执行多次作业,直至满足期望的次数;这个Job也可以理解为并行度为1的作业执行方式,在某个时刻仅存在一个Pod资源对象。 在这里插入图片描述
  2)多工作队列的并行式Job:这种方式可以设置工作队列数,即作业数,每个队列仅负责运行一个作业;也可以用有限的工作队列运行较多的任务,即工作队列数少于总作业数,相当于运行多个串行作业队列。将并行度属性.spec.paralleism的值设置为1,并设置总任务数.spec.completion属性便能够让Job控制器以串行的方式运行多任务。.spec.parallelism能够定义作业执行的并行度,将其设置为2或者以上的值即可实现并行多队列作业运行。同时,如果.spec.completions属性值设置大于.spec.parallelism的属性值,则表示使用多队列串行任务作业模式。
在这里插入图片描述
  Job控制器待其Pod资源运行完成后,将不再占用系统资源。用户可按需保留或使用资源删除命令将其删除。不过,如果某Job控制器的容器应用总是无法正常结束运行,而其restartPolicy又定为了重启,则它可能会一直处于不停的重启和错误循环当中。所幸的是,Job控制器提供了两个属性用于抑制这种情况的方式:
  1).spec.activeDeadineSeconds<integer>:Job的deadline,用于为其指定最大活动时间长度,超出此时长的作业将被终止;
  2).spec.backoffLimit<integer>:将作业标记为失败状态之前的可重试次数,默认值为6次;

二、Job控制器实验

1)编写创建Job控制器的yaml文件

]# cat job.yml 
apiVersion: batch/v1
kind: Job
metadata:
  name: job-example
spec:
  template:
    spec:
      containers:
      - name: myjob
        image: alpine
        command: ["/bin/sh","-c","sleep 120"]
      restartPolicy: Never
      
]# kubectl apply -f job.yaml 
job.batch/job-example created

2)查看Pod及Job详情

]# kubectl get jobs -o wide 
NAME          COMPLETIONS   DURATION   AGE   CONTAINERS   IMAGES   SELECTOR
job-example   0/1           59s        59s   myjob        alpine   controller-uid=9da99a63-6e39-4e7e-a974-fc0dd6e6216a

]# kubectl get pods -o wide 
NAME                READY   STATUS    RESTARTS   AGE   IP            NODE    NOMINATED NODE   READINESS GATES
job-example-hqc7l   1/1     Running   0          65s   10.244.2.23   node2   <none>           <none>

]# kubectl get jobs -o wide 
NAME          COMPLETIONS   DURATION   AGE     CONTAINERS   IMAGES   SELECTOR
job-example   1/1           2m9s       2m23s   myjob        alpine   controller-uid=9da99a63-6e39-4e7e-a974-fc0dd6e6216a

可以看到当经过120秒之后,此Job的状态即转变为Completions(完成状态)

3)查看Job的详细信息

]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值