zoukankan      html  css  js  c++  java
  • Kuberbetes的Job和CronJob

    Job

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

    特殊说明

    • .spec.template格式同Pod
    • RestartPolicy仅支持Never或OnFailure
    • 单个Pod时,默认Pod成功运行后Job即结束
    • .spec.completions标志Job结束需要成功运行的Pod个数。默认为1
    • .spec.parallelism标志并运行的Pod个数。默认为1
    • .spec.activeDeadlineSeconds标志失败Pod的重试重大事件,超过这事件不会继续重试

    Example

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

    CronJob

    • 在给定的时间点只运行一次
    • 周期性的在给定时间点运行

    使用条件:当前使用Kubernetes集群,版本>=1.8(对CronJob)

    典型的用法如下所示:

    • 在给定的时间点调度Job运行
    • 创建周期性运行的Job,例如:数据库备份、发送邮件

    CronJob Spec

    • .spec.schedule:调度,必须字段,执行任务运行周期,格式同Cron
    • .spec.jobTemplate:job模板,必需字段,指定需要运行的任务,格式同job
    • .spec.starttingDeadSeconds:启动Job期限(秒级),该字段是可选的。如果因为任何原因而错过了被调度的时间,那么错过执行时间的Job将被认为是失败的,如果没有指定,则没有期限
    • .spec.concurrencyPolicy:并发策略,该字段是可选的。他执行了如何处理被CronJob创建的Job的并发执行。只允许执行下面策略中的一种:
    1. Allow(默认):允许并发运行Job
    2. Forbid:禁止并发运行,如果签一个还没有完成,则直接跳过下一个
    3. Replace:取消当前正在运行的Job,用一个新的来替换

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

    • .spec.suspend:挂起。该字段是可选的,如果设置为true,后续所有执行都会被挂起。他对已经开始执行的Job不起作用,默认为false
    • .spec.successfulJobsHistoryLimit.spec.failedJobsHistoryLimit:历史限制,是可选字段。他们执行了可以保留多少完成和失败的Job,默认情况下,他们分别是3和1.设置限制的值为0,相关类型的Job完成后将不会被保留

    Example

    apiVersion: batch/v1beta1
    kind: CronJob
    metadata:
      name: hello
    spec:
      schedule: "*/1 * * * *"
      jobTemplate:
        spec:
          template:
            spec:
              containers:
              - name: hello
                image: busybox
                args:
                - /bin/sh
                - -c
                - date; echo Hello from the Kubernetes cluster
              restartPolicy: OnFailure
    [root@test yaml]# kubectl get cronJob
    NAME    SCHEDULE      SUSPEND   ACTIVE   LAST SCHEDULE   AGE
    hello   */1 * * * *   False     0        20s             48m
    [root@test yaml]# kubectl get jobs
    NAME               COMPLETIONS   DURATION   AGE
    hello-1607678880   1/1           5s         2m21s
    hello-1607678940   1/1           6s         81s
    hello-1607679000   1/1           4s         20s
    pi                 1/1           33s        151m

    #注意,删除cronjob的时候不会自动删除job,这些job可以用kubectl delete job来删除 [root@
    test yaml]# kubectl delete cronjob hello cronjob.batch "hello" deleted
  • 相关阅读:
    设置文本框的 placeholder 的颜色
    CSS单行文字超出省略
    【持续跟新】剑指Offer_Java实现
    Android必修课-Activity生命周期
    如何查看Android的jks签名的MD5
    Flutter 文字边框/边框颜色
    Flutter initState 初始化调用 Provide报错
    flutter 系统通知栏Demo 基于flutter_local_notifications: ^1.4.1
    # Flutter学习笔记(一)
    一个技术人毕业到就业的思考
  • 原文地址:https://www.cnblogs.com/fat-girl-spring/p/14121625.html
Copyright © 2011-2022 走看看