凯发k8国际娱乐官网入口-k8凯发> 云容器实例 cci> > 使用job和cronjob创建任务负载
更新时间:2023-12-21 gmt 08:00

使用job和cronjob创建任务负载-凯发k8国际娱乐官网入口

任务负载是负责批量处理短暂的一次性任务(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
  namespace: cci-namespace-test1
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
  namespace: cci-namespace-test1
spec:
  schedule: "0,15,30,45 * * * *"           # 定时相关配置
  jobtemplate:                             # job的定义
    spec:
      template:
        spec:
          restartpolicy: onfailure
          containers:
          - name: main
            image: pi

cron的格式从前到后就是:

  • minute
  • hour
  • day of month
  • month
  • day of week

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

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

更详细的cron格式说明请参见。

分享:
网站地图