K8S CronJob

1、cron基础语法

Cron Job的定时表达式基本上照搬了Linux Cron的表达式,格式如下:

Minutes Hours DayofMonth Month DayofWeek

其中每个域都可出现的字符如下:

描述
Minutes 可出现“,” “-” “*” “/” 这4个字符,有效范围为0~59的整数
Hours 可出现“,” “-” “%” “/” 这4个字符,有效范围为0~23的整数
DayofMonth 可出现“,” “- “*” “/“ “?” “L” “W“ “C”这8个字符,有效范围 为1~31的整数
Month 可出现“,” “-” “*” “/”这4个字符,有效范围为112的整数,JANDEC
DayofWeek 可出现“,” “*” “/” “?” “L” “C” “#” 这8个字符,有效范围为1~7的整数或SUN-SAT。1表示星期天,2表示星期一,以此类推

表达式中的特殊字符“*”与“/”的含义如下:

  • :表示匹配该域的任意值,假如在Minutes域使用“”,则表示每分钟都会触发事件;
  • /:表示从起始时间开始触发,然后每隔固定时间触发一次,例如在Minutes域设置为5/20,则意味着第1次触发在第5min时,接下来每20min触发一 次,将在第25min、第45min等时刻分别触发

2、CronJob属性

1)、schedule

每分钟执行一次

'*/1 * * * *'

分 小时 日 月 周 要运行的命令
第1列分钟(0~59)
第2列小时(0~23)
第3列日(1~31)
第4列月(1~12)
第5列星期(0~7)(0和7表示星期天)
第6列要运行的命令

2)、successfulJobsHistoryLimit

保留执行成功的历史记录次数,默认值是3。

假如设置为5,就会保留过去5次成功的执行记录

3)、failedJobsHistoryLimit

保留执行失败的历史记录次数,默认值是1。

假如设置为3,就会保留过去3次失败的执行记录

4)、startingDeadlineSeconds

它表示任务如果由于某种原因错过了调度时间,开始该任务的截止时间的秒数。

控制器将测量从预期创建作业到现在之间的时间。

如果差异高于该限制,它将跳过此执行。

例如,如果设置为60,则它允许在实际计划后最多60 秒内创建作业。

5、ttlSecondsAfterFinished

假如jobTemplate添加了ttlSecondsAfterFinished,这个时候successfulJobsHistoryLimit和failedJobsHistoryLimit就会失效。

例如ttlSecondsAfterFinished设置成30,这样不管这次的job是成功还是失败,在30秒后会照样清除

3、CronJob yaml配置样例

apiVersion: batch/v1beta1
kind: CronJob
metadata:
 name: invokekafka
 namespace: dev
spec:
 schedule: "*/1 * * * *"
 #successfulJobsHistoryLimit: 1 #默认3
 #failedJobsHistoryLimit: 1 #默认1
 #startingDeadlineSeconds: 60  ##CronJob 控制器将测量从预期创建作业到现在之间的时间。如果差异高于该限制,它将跳过此执行。 例如,如果设置为200,则它允许在实际计划后最多 200 秒内创建作业。
 jobTemplate:
  spec:
   #ttlSecondsAfterFinished: 30
   template:
    spec:
     containers:
     - name: invokekafka
       image: 172.171.2.148:5000/invokeintf
       imagePullPolicy: Always
       args: [http://kafka-demo.dev:8090/send]
     restartPolicy: OnFailure

1)、运行yaml 文件

kubectl apply -f xxx.yaml

2)、查看运行日志

kubectl get pod -n namespace

[root@k8s-master conf]# kubectl get pod -n dev
NAME                            READY   STATUS      RESTARTS   AGE
gateway-demo-5fbd8f4dc9-vvbmp   1/1     Running     0          19d
invokekafka-1678933860-sjj7m    0/1     Completed   0          3m6s
invokekafka-1678933920-xffz4    0/1     Completed   0          2m6s
invokekafka-1678933980-vmv74    0/1     Completed   0          65s
invokekafka-1678934040-ksxdt    0/1     Completed   0          5s
kafka-demo-7d545b454-jsqv9      1/1     Running     0          23h

kubectl logs podname -n namespace

[root@k8s-master conf]# kubectl logs invokekafka-1678934040-ksxdt -n dev
请求地址:http://kafka-demo.dev:8090/send
发送kafka成功
posted @ 2023-03-16 10:55  eqwal  阅读(288)  评论(0编辑  收藏  举报