k8s Job

k8s

Job的使用



前言

  • 使用job可以创建一个pod或者多个pod去执行任务。
  • Job会记录已完成的Pod的数量,但完成的数量达到指定值时,这个Job就完成了。 以下主要是介绍job.spec的参数配置

一、job的yaml

apiVersion: batch/v1
kind: Job 
metadata:
 name: test-job
spec:
 ttlSecondsAfterFinished: 5  
 activeDeadlineSeconds: 10
 backoffLimit: 2
 parallelism: 3
 completions: 5
 template:
  metadata:
    name: test-job
  spec:
   containers:
   - name: test-job
     image: centos # 镜像
     command: ["/bin/sh", "-c", " echo ","123"]
     imagePullPolicy: IfNotPresent
   restartPolicy: Never

二、ttlSecondsAfterFinished

  • 当设置了ttlSecondsAfterFinished
    参数,job完成或者失败后都会在ttlSecondsAfterFinished所设置的时间后被清理。
  • 假设ttlSecondsAfterFinished 设置成30。在job完成或者失败后30s,job就会被自动清除,包括job和job所管理的pod都会被清除
  • 假设没有设置,job和job所管理的pod会一直存在,不管是失败还是成功。
  • 不过好像有些k8s的版本ttlSecondsAfterFinished是不生效的,建议使用1.20以上的版本

三、activeDeadlineSeconds

  • Job的超时时间,一旦一个Job运行的时间超出该限制,则Job失败,所有运行中的Pod会被结束并删除。
  • 该配置指定的值必须是个正整数。不指定则不会超时。
  • 但是经过我实验,job pod并不会自动删除,所以如果希望超时后pod会自动删除还是设置一下ttlSecondsAfterFinished

四、backoffLimit

  • 允许执行失败的次数,默认值是6,0表示不允许执行失败。

  • 如果Pod是restartPolicy为Nerver,则失败后会创建新的Pod,如果是OnFailed,则会重启Pod,不管是哪种情况,只要Pod失败一次就计算一次,而不是等整个Pod失败后再计算一个。

  • 当失败的次数达到该限制时,整个Job随即结束,所有正在运行中的Pod都会被删除。

  • 但是经过我实验,job
    pod并不会自动删除,所以如果希望超时后pod会自动删除还是设置一下ttlSecondsAfterFinished


五、parallelism

  • 并行运行的Pod的个数,默认值为1,假如设置为3,就会同时开启3个pod去执行任务

六、completions

  • 完成该Job需要执行成功的Pod数
  • 指定需要完成的数量,默认值为1,假设设置为3,需要有三个pod成功完成任务,这个job才算是完成

总结

以上是我对job的理解,不一定完全正确,可以作为参考

K8sJob是一种管理容器化应用程序的方法,它适用于在集群中运行一次性任务和批处理作业。Job是一个有状态的Pod控制器,用于确保容器在执行作业时仅执行一次。他需要一种方式来监控一个容器的生命期,并在完成时正确响应它们。在以下情况下,Job是最佳选择: 1. 定时任务 借助Cron JobK8s能够定期执行任务。当你需要每天,周,月等定期执行任务时,你可以使用Job。例如,一个每日备份任务即使系统出现故障也必须完成。由于Job可以保证任务被执行完整,因此它非常适合用于定时任务。 2. 异步执行任务 在某些情况下,应用程序需要执行耗时的任务,这个任务可能需要更长时间才能完成。这时候,异步执行是一个很好的选择。例如,如果应用程序需要对一个大型数据库执行查询,这可能需要几分钟才能完成。在这种情况下,当任务完成时,需要使用Job来确保仅执行该任务一次。 3. 批处理任务 批处理本质上是一组计算任务的执行,这也可以看成是一种异步执行。批处理任务是那些需要处理大量数据的任务,例如大量的数据迁移。由于需要分割大量的数据,执行批处理任务变得更加困难。这时候,K8sJob可以非常方便地处理它。因为Job保证任务在集群中的一个节点上运行,因此可以更好地利用集群中的资源。 综上所述,K8sJob适用于像应用任务、异步任务、批处理任务等一次性任务和批处理作业,它可以更好地管理容器化应用程序。Job并不是适合所有场景的,对于那些需要长时间运行的程序,它并不是最佳选择,能否成功利用他,需要根据实际情况来确定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值