007-k8s资源控制器-Job、CronJob

一、概述

1.1、Job

  Job负责批处理任务,即仅执行一次的任务,他保证批处理任务的一个或多个Pod成功结束

说明

  spec.template格式同Pod

  RestartPolicy仅支持Never或OnFailure

  单个Pod时,默认Pod成功运行后Job即结束

  spec.completion标志Job结束需要成功运行的Pod个数,默认为1

  spec.parallelism标志并运行的Pod的个数,默认为1

  spec.activeDeadlineSeconds标志失败Pod的重试最大时间,超过这个时间不会继续重试

示例:显示pi的2000千位

apiVersion: batch/v1
kind: Job
metadata:
  name: pi
spec:
  completions: 60
  parallelism: 2
  template:
    metadata:
      name: pi
    spec:
      containers:
      - name: pi
        image: perl
        command: ["perl","-Mbignum=bpi","-wle","print bpi(2000)"]
      restartPolicy: Never

 

1.2、CronJob

基于时间管理的Job

  在给定时间点只运行一次

  周期性地在给定时间点运行

使用条件:kubectl集群,版本》1.8,如,发送邮件,备份数据库

说明

  spec.template格式同Pod

  RestartPolicy仅支持Never或OnFailure

  单个Pod时,默认Pod成功运行后Job即结束

  spec.completion标志Job结束需要成功运行的Pod个数,默认为1

  spec.parallelism标志并运行的Pod的个数,默认为1

  spec.activeDeadlineSeconds标志失败Pod的重试最大时间,超过这个时间不会继续重试

  spec.schedule:调度,必须字段,指定任务运行周期,格式cron

  spec.jodTemplate:job模板,指定要运行的任务,格式同job  

  spec.startingDeadlineSeconds :启动 Job 的期限(秒级别),该字段是可选的。

    如果因为任何原因而错过了被调度的时间,那么错过执行时间的 Job 将被认为是失败的。

    如果没有指定,则没有期限。

  spec.concurrencyPolicy:并发策略,该字段也是可选的。

    它指定了如何处理被 Cron Job 创建的 Job 的并发执行。只允许指定下面策略中的一种。

    Allow(默认):允许并发运行 Job。

    Forbid:禁止并发运行,如果前一个还没有完成,则直接跳过下一个。

    Replace:取消当前正在运行的 Job,用一个新的来替换。

    注意,当前策略只能应用于同一个 Cron Job 创建的 Job。如果存在多个 Cron Job,它们创建的 Job 之间总是允许并发运行。

  spec.suspend :挂起,该字段也是可选的。

    如果设置为 true,后续所有执行都会被挂起。

    它对已经开始执行的 Job 不起作用。默认值为 false。

  spec.successfulJobsHistoryLimit 和 .spec.failedJobsHistoryLimit :历史限制,是可选的字段。

    它们指定了可以保留多少完成和失败的 Job。

    默认没有限制,所有成功和失败的 Job 都会被保留。

    当运行一个 Cron Job 时,Job 可以很快就堆积很多,推荐设置这两个字段的值。

    设置限制的值为 0,相关类型的 Job 完成后将不会被保留。

示例

apiVersion: batch/v1beta1 #batch/v2alpha1
kind: CronJob
metadata:
  name: clean-job
spec:
  schedule: "*/1 * * * *"  # 分钟,小时,日,月,星期
  startingDeadlineSeconds: 300  # 300秒没有启动成功,就不再启动
  concurrencyPolicy: Forbid #Allow 允许job并发执行,Forbid只允许当前这个执行,Replace取消当前这个,而执行新的
  suspend: false # 设置为true,后续所有执行被挂起
  jobTemplate:
    spec:
#      ttlSecondsAfterFinished: 100 # 任务完成后的10s之后自动删除pod,k8s 1.12以后才有
      backoffLimit: 4  # 最大允许失败的次数
      template:
        spec:
          restartPolicy: OnFailure
          containers:
          - name: clean-job
            image: busybox
            args: ['/bin/sh','-c','date; echo hello']

可以通:kubectl create -f cronjob-demo.yaml创建

查看任务:kubectl get cronjob

 kubectl get job

 日志: kubectl logs pod名称

 

posted @ 2020-09-05 10:55  bjlhx15  阅读(362)  评论(0编辑  收藏  举报
Copyright ©2011~2020 JD-李宏旭