运维开发网
广告位招商联系QQ:123077622
 
广告位招商联系QQ:123077622

Job和CronJob

运维开发网 https://www.qedev.com 2020-11-25 10:41 出处:51CTO 作者:容器魔方
Job和CronJob是负责批量处理短暂的一次性任务(shortlivedone-offtasks),即仅执行一次的任务,它保证批处理任务的一个或多个Pod成功结束。Job:是Kubernetes用来控制批处理型任务的资源对象。批处理业务与长期伺服业务(Deployment、Statefulset)的主要区别是批处理业务的运行有头有尾,而长期伺服业务在用户不停止的情况下永远运行。Job管理的Pod

Job和CronJob是负责批量处理短暂的一次性任务(short lived one-off tasks),即仅执行一次的任务,它保证批处理任务的一个或多个Pod成功结束。

  • Job:是Kubernetes用来控制批处理型任务的资源对象。批处理业务与长期伺服业务(Deployment、Statefulset)的主要区别是批处理业务的运行有头有尾,而长期伺服业务在用户不停止的情况下永远运行。Job管理的Pod根据用户的设置把任务成功完成就自动退出(Pod自动删除)。
  • CronJob:是基于时间的Job,就类似于linux系统的crontab文件中的一行,在指定的时间周期运行指定的Job。

    任务负载的这种用完即停止的特性特别适合一次性任务,比如持续集成。

创建Job

以下是一个Job配置,其计算π到2000位并打印输出。Job结束需要运行50个Pod,这个示例中就是打印π 50次,并行运行5个Pod,Pod如果失败最多重试5次。

apiVersion: batch/v1
kind: Job
metadata:
  name: pi-with-timeout
spec:
  completions: 50            # 运行的次数,即Job结束需要成功运行的Pod个数
  parallelism: 5             # 并行运行Pod的数量,默认为1
  backoffLimit: 5            # 表示失败Pod的重试最大次数,超过这个次数不会继续重试。
  activeDeadlineSeconds: 10  # 表示Pod超期时间,一旦达到这个时间,Job及其所有的Pod都会停止。
  template:                  # Pod定义
    spec: 
      containers:
      - name: pi
        image: perl
        command:
        - perl
        - "-Mbignum=bpi"
        - "-wle"
        - print bpi(2000)
      restartPolicy: Never

根据completions和parallelism的设置,可以将Job划分为以下几种类型。

表1 任务类型

Job类型 说明 使用示例
一次性Job 创建一个Pod直至其成功结束 数据库迁移
固定结束次数的Job 依次创建一个Pod运行直至completions个成功结束 处理工作队列的Pod
固定结束次数的并行Job 依次创建多个Pod运行直至completions个成功结束 多个Pod同时处理工作队列
并行Job 创建一个或多个Pod直至有一个成功结束 多个Pod同时处理工作队列

创建CronJob

相比Job,CronJob就是一个加了定时的Job,CronJob执行时是在指定的时间创建出Job,然后由Job创建出Pod。

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: cronjob-example
spec:
  schedule: "0,15,30,45 * * * *"           # 定时相关配置
  jobTemplate:                             # Job的定义
    spec:
      template:
        spec:
          restartPolicy: OnFailure
          containers:
          - name: main
            image: pi

CronJob的格式从前到后就是:

  • Minute
  • Hour
  • Day of month
  • Month
  • Day of week

    如 "0,15,30,45 " ,前面逗号隔开的是分钟,后面第一个 表示每小时,第二个 表示每个月的哪天,第三个表示每月,第四个表示每周的哪天。

如果您想要每个月的第一天里面每半个小时执行一次,那就可以设置为" 0,30 1 " 如果您想每个星期天的3am执行一次任务,那就可以设置为 "0 3 * 0"。

更详细的CronJob格式说明请参见https://zh.wikipedia.org/wiki/Cron。

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消