CronJob

有时我们需要定时执行一个批处理程序,此时就可以使用CronJob来接管Pod。

创建CronJob

CronJob的配置文件很有意思,它的spec.jobTemplate就是Job的配置文件,相当于为Job加了一层计时器。

下面展示一个CronJob的具体配置文件案例:

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: hello
spec:
  schedule: "0,15,30,45 1-3 * * *"    # (必须)与Linux的cron一样,设定开始Job的时间
  startingDeadlineSeconds: 15    # Pod最迟必须在预定时间后15s开始运行,若超过了15s,则任务不会被执行,并且显示为Failed
  jobTemplate:    # (必须)Job的配置文件
    spec:    
      template:    # Pods的模板
        spec:    # Pods的规格
          containers:
          - name: hello
            image: busybox
            command: ["echo", "hello k8s job!"]
          restartPolicy: OnFailure

配置运行时间表

CronJob中的定时功能是由spec.schedule字段指定的,其规范与Linux的crontab一致,默认为* * * * *,从左往右每一个*的含义如下:

  • 代表一小时内的第几分,范围 0-59

  • 代表一天中的第几小时,范围 0-23

  • 代表一个月中的第几天,范围 1-31

  • 代表一年中第几个月,范围 1-12

  • 代表星期几,范围 0-7 (0及7都是星期天)

下面举几个例子:

  1. 每15分钟运行一次任务:

     0,15,30,45 * * * *

    每15分钟,即每小时的0分、15分、30分、45分

  2. 每隔30分钟运行一次任务,且仅在每月的第一天运行:

     0,30 * 1 * *
  3. 每个星期天的3am运行任务:

     0 3 * * 0

Last updated

Was this helpful?