zoukankan      html  css  js  c++  java
  • 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名称

  • 相关阅读:
    209. Minimum Size Subarray Sum
    208. Implement Trie (Prefix Tree)
    207. Course Schedule
    206. Reverse Linked List
    205. Isomorphic Strings
    204. Count Primes
    203. Remove Linked List Elements
    201. Bitwise AND of Numbers Range
    199. Binary Tree Right Side View
    ArcGIS API for JavaScript 4.2学习笔记[8] 2D与3D视图同步
  • 原文地址:https://www.cnblogs.com/bjlhx/p/13617475.html
Copyright © 2011-2022 走看看