普通任务(job)和定时任务(cronjob)-九游平台
普通任务(job)和定时任务(cronjob)
job和cronjob是负责批量处理短暂的一次性任务(short lived one-off tasks),即仅执行一次的任务,它保证批处理任务的一个或多个pod成功结束。
- job:是kubernetes用来控制批处理型任务的资源对象。批处理业务与长期伺服业务(deployment、statefulset)的主要区别是批处理业务的运行有头有尾,而长期伺服业务在用户不停止的情况下永远运行。job管理的pod根据用户的设置把任务成功完成就自动退出(pod自动删除)。
- cronjob:是基于时间的job,就类似于linux系统的crontab文件中的一行,在指定的时间周期运行指定的job。
任务负载的这种用完即停止的特性特别适合一次性任务,比如持续集成。
创建job
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划分为以下几种类型。
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格式说明请参见。
相关文档
意见反馈
文档内容是否对您有帮助?
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨