【赵渝强老师】周期性任务控制器CronJob

在这里插入图片描述

  在K8s中,Job控制器管理的作业在控制器资源被创建之后便会立即执行,而CronJob控制器可用于管理和调度作业运行的时间,从而实现定时作业和周期作业的目的,这种控制器管理和调度作业的方式类似Linux的crontab命令。CronJob控制器管理和调度作业的方式主要有以下两种:

  • 在未来某一时间运行作业一次
  • 在指定的时间点重复运行作业

  视频讲解如下:

周期性任务控制器CronJob

【赵渝强老师】周期性任务控制器CronJob

一、运行第一个CronJob控制器

  下面通过一个具体的示例来演示如何使用CronJob控制器。该示例会在每分钟打印出当前时间和问候消息。

(1)创建"cronjob-demo.yaml"文件,并输入下面的内容。

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: cronjob-demo
spec:
  #CronJob控制器将1分钟调度一次
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: cronjob-demo
            image: busybox
            imagePullPolicy: IfNotPresent
            command:
            - /bin/sh
            - -c
            - date; echo Hello from the CronJob
          restartPolicy: OnFailure

(2)执行命令创建CronJob。

kubectl apply -f cronjob-demo.yaml

(3)查看CronJob和Pod的信息,如下图所示。

kubectl get cronjob,pod

在这里插入图片描述

提示:这时候CronJob控制器将创建第一个Pod。

(4)查看Pod的标准输出信息。

kubectl logs pod/cronjob-demo-1643438580-9v556

# 输出的信息如下:
Sat Jan 29 06:43:05 UTC 2022
Hello from the CronJob

(5)等待一分钟后,再次查看CronJob和Pod的信息,如下图所示。

kubectl get cronjob,pod

在这里插入图片描述

提示:这时候CronJob控制器将创建第二个Pod。

(6)再次等待一分钟后,再次查看CronJob和Pod的信息,如下图所示。

kubectl get cronjob,pod

在这里插入图片描述

提示:这时候CronJob控制器将创建第三个Pod,以后每隔一分钟将创建一个新的Pod。

二、CronJob的时间表示

  CronJob控制器中的时间表示方式与Linux中的crontab命令表示时间的方式类似。以"cronjob-demo.yaml"为例。通过".spec.schedule"字段设置CronJob控制器将1分钟调度一次。具体的参数含义如下图所示。

在这里插入图片描述

  按照CronJob的时间表示方式,下面的CronJob控制器将在每个月21号的午夜以及每个星期六的午夜开始任务。

schedule: "0 0 21 * 6"

  下表列举了一些常见的CronJob的时间表示方式。

在这里插入图片描述

三、CronJob控制器的限制

  CronJob控制器根据预写设定的时间定时创建一个Job并执行该Job。但CronJob并不严格保证Job一定会被创建,某些情况下可能不会创建Job,某些情况下可能会创建两个Job。应该尽量减少这种情况的发生,但不能完全杜绝。当字段"startingDeadlineSeconds"保持默认值或者很大,且字段"concurrencyPolicy"设置为"Allow"时,CronJob控制器将保证Job将始终至少运行一次。

提示:由于CronJob控制器每隔10秒钟执行一次检查。因此不能将字段"startingDeadlineSeconds"的值设置过小。如果该字段的值低于了10秒钟,CronJob可能无法被调度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵渝强老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值