cronjob --> job --> Pod

API版本:batch/v1beta1


创建


创建命令:

kubectl create cronjob cronjob-example --image=busybox --schedule='0/5 * * * *' --dry-run -o yaml

yaml:

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: cronjob-example
spec:
  schedule: "0/5 * * * *"
  jobTemplate:
    metadata:
      name: cronjob-example
      labels:
        app: cronjob
    spec:
      template:
        spec:
          containers:
          - image: busybox
            name: cronjob-example
            command: ["/bin/sh","-c","sleep 20"]
          restartPolicy: OnFailure

查看:

kubectl get cronjobs
kubectl get jobs -l app=cronjob

spec.concurrencyPolicy  是否允许并行

        Allow:允许前后Job。

        Forbid:前一个未结束后一个不允许启动。

        Replace:后一个Job取代前一个。

spec.schedule:调度时间点

spec.failedJobsHistoryLimit:失败任务记录数

spec.successfulJobsHistoryLimit:成功任务记录数

spec.startingDeadlineSeconds:启动作业错误超时时长

spec.suspend:挂起任务,只对后续任务有效

实例:

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: cleareslog
spec:
  jobTemplate:
    metadata:
      name: cleareslog
      namespace: staging
    spec:
      template:
        metadata:
        spec:
          containers:
          - image: registry.cn-hangzhou.aliyuncs.com/scriptjc/deleteindex:0.1
            name: cleareslog
            env:
            - name: RETDAYS
              value: "40"
            - name: ESURL
              value: "http://elasticsearch.logging:9200"
          restartPolicy: Never
  schedule: '00 1 * * *'