27、k8s-pod的控制器-第六种-CronJob(CJ)-定时执行Job任务(控制job控制器)

概念:CronJob控制器以Job控制器资源为其管控对象、并借助它管理pod资源对象、Job控制器定义的作业任务在其控制器资源创建之后便会立即执行、
但CronJob可以以类似于linux操作系统的周期性任务作业计划的方式控制其运行的 时间点 及 重复运行的方式、也就是说、CronJob可以在特定的时间点(反复的)去运行Job任务

CronJob的资源清单文件:

vim cronjob.yaml
---------------------------------------------------------------
apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: cronjob
  namespace: dev
  labels:
    controller: cronjob

spec:
  schedule:     #cronjob格式的作业调度运行时间点、用于控制任务在什么时间执行
  concurrencyPolicy:    #并发执行 是策略、用于定义前一次做作业运行尚未完成时是否(如何)运行后一次的作业
  failedJobHistoryLimit:        #为失败的任务执行保留的历史记录、默认位1
  successfulJobHistoryLimit:    #位成功的任务执行保留的历史记录数、默认为3
  startingDeadlineSeconds:      #启动作业错误的超时时长
  jobTemplate:  #job控制器的模板、用于cronjob控制器生成job对象、下面其实就是job的定义
    metadata:
    spec:
      completions: 1
      parallelism: 1
      activeDeadlineSeconds: 30
      backoffLimit: 6
      manualSelector: true
      selector:
        matchLabels:
          app: counter-pod
        matchExpressions:
          - {key: app, operator: In, values: [counter-pod]}
      template:
        metadata:
          labels:
            app: counter-pod
        spec:
          restartPolicy: Never
          containers:
          - name: counter
            image:busybox:1.30
            command: ["bin/sh","-c","for i in 9 8 7 6 5 4 3 2 1; do echo $i;sleep 3;done"]
----------------------------------------------------------------------------------------------
·schedule: cron的表达式、用于指定任务执行的时间、类似于linux的cron调度任务
·concurrencyPolicy:
    ·Allow:允许Jobs并发允许
    ·Forbid:禁止并发允许、如果上一次运行尚未完成、则跳过下一次运行
    ·Replace:替换、取消当前正在运行的作业并用新的作业替换它

案例:

1、创建cronjob的yaml文件:
----------------------------------------------------------
apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: pc-cronjob
  namespace: dev
  labels:
    controller: cronjob

spec:
  schedule: "*/1 * * * *"    #每分钟执行一次
  jobTemplate:
    metadata:
    spec:
      template:
        spec:
          restartPolicy: Never
          containers:
          - name: counter
            image: busybox:1.30
            command: ["bin/sh","-c","for i in 9 8 7 6 5 4 3 2 1;do echo $i;sleep 3;done"]
---------------------------------------------------------------------------------------------------
2、执行yaml文件创建cronjob并实时观察cronjob、job和pod的情况:
    ·kubectl create -f pc-cronjob.yaml
    ·kubectl get cj -ndev -w
    ·kubectl get job -ndev -w
    ·kubectl get pod -ndev -w

 

posted @ 2024-07-01 00:13  little小新  阅读(4)  评论(0编辑  收藏  举报