调度计划任务job&cronjob

一.job

Job负责批量处理短暂的一次性任务 (short lived one-off tasks),即仅执行一次的任务,它保证批处理任务的一个或多个Pod成功结束。
中文文档:https://www.kubernetes.org.cn/job
Kubernetes支持以下几种Job:

  • 非并行Job:通常创建一个Pod直至其成功结束
  • 固定结束次数的Job:设置.spec.completions,创建多个Pod,直到.spec.completions个Pod成功结束
  • 带有工作队列的并行Job:设置.spec.Parallelism但不设置.spec.completions,当所有Pod结束并且至少一个成功时,Job就认为是成功


根据.spec.completions和.spec.Parallelism的设置,可以将Job划分为以下几种pattern:

1.job的使用

[root@k8s-master01 job]# vim job.yaml

apiVersion: batch/v1
kind: Job
metadata:
  labels:
    job-name: echo
  name: echo
  namespace: default
spec:
  suspend: true # 1.21+
  ttlSecondsAfterFinished: 100    //Job在执行结束之后(状态为completed或Failed)自动清理。设置为0表示执行结束立即删除,不设置则不会清除,需要开启TTLAfterFinished特性
  backoffLimit: 4       //如果任务执行失败,失败多少次后不再执行
  completions: 1       //有多少个Pod执行成功,认为任务是成功的,为空默认和parallelism数值一样
  parallelism: 1     //并行执行任务的数量,如果parallelism数值大于未完成任务数,只会创建未完成的数量;比如completions是4,并发是3,第一次会创建3个Pod执行任务,第二次只会创建一个Pod执行任务
  template:
    spec:
      containers:
      - command:
        - echo
        - Hello, Job
        image: registry.cn-beijing.aliyuncs.com/dotbalo/busybox
        imagePullPolicy: Always
        name: echo
        resources: {}
      restartPolicy: Never

创建验证:

[root@k8s-master01 job]# kubectl create -f job.yaml 
job.batch/echo created
[root@k8s-master01 job]# kubectl get pod 
NAME                     READY   STATUS      RESTARTS   AGE
echo-9wlwq               0/1     Completed   0          7s
nginx-66cfc7f7d5-jkmvh   1/1     Running     1          6d1h
nginx-66cfc7f7d5-zdk4r   1/1     Running     1          6d1h
[root@k8s-master01 job]# kubectl get job    //执行完毕
NAME   COMPLETIONS   DURATION   AGE
echo   1/1           4s         24s

[root@k8s-master01 job]# kubectl logs -f echo-9wlwq   //查看日志
Hello, Job

二.cronjob

中文文档:https://www.kubernetes.org.cn/cronjob
CronJob即定时任务,就类似于Linux系统的crontab,在指定的时间周期运行指定的任务。在Kubernetes 1.5,使用CronJob需要开启batch/v2alpha1 API,即–runtime-config=batch/v2alpha1。

  • .spec.schedule指定任务运行周期,格式同Cron
  • .spec.jobTemplate指定需要运行的任务,格式同Job
  • .spec.startingDeadlineSeconds指定任务开始的截止期限
  • .spec.concurrencyPolicy指定任务的并发策略,支持Allow、Forbid和Replace三个选项
  • 1.crontab的使用

    [root@k8s-master01 job]# vim cronjob.yaml
    apiVersion: batch/v1beta1    //1.21+ batch/v1
    kind: CronJob
    metadata:
      labels:
        run: hello
      name: hello
      namespace: default
    spec:
      concurrencyPolicy: Allow     //并发调度策略。可选参数如下:Allow:允许同时运行多个任务。Forbid:不允许并发运行,如果之前的任务尚未完成,新的任务不会被创建。Replace:如果之前的任务尚未完成,新的任务会替换的之前的任务。
      failedJobsHistoryLimit: 1    //保留多少失败的任务。
      jobTemplate:
        metadata:
        spec:
          template:
            metadata:
              labels:
                run: hello
            spec:
              containers:
              - args:
                - /bin/sh
                - -c
                - date; echo Hello from the Kubernetes cluster
                image: registry.cn-beijing.aliyuncs.com/dotbalo/busybox
                imagePullPolicy: Always
                name: hello
                resources: {}
              restartPolicy: OnFailure     //重启策略,和Pod一致。
              securityContext: {}
      schedule: '*/1 * * * *'               //调度周期,和Linux一致,分别是分时日月周。
      successfulJobsHistoryLimit: 3    //保留多少已完成的任务,按需配置。
      suspend: false    //如果设置为true,则暂停任务,默认为false。
    

    创建验证

    [root@k8s-master01 job]# kubectl create -f cronjob.yaml 
    cronjob.batch/hello created
    [root@k8s-master01 job]# kubectl get cj   //查看cronjob,简称cj
    NAME    SCHEDULE      SUSPEND   ACTIVE   LAST SCHEDULE   AGE   
    hello   */1 * * * *   False     0        43s             56s
    
    [root@k8s-master01 job]# kubectl get pod  //查看pod
    NAME                     READY   STATUS              RESTARTS   AGE
    echo-9wlwq               0/1     Completed           0          19m
    hello-1629201900-9q7wt   0/1     Completed           0          2m3s
    hello-1629201960-jtxj6   0/1     Completed           0          63s
    hello-1629202020-87n74   0/1     ContainerCreating   0          2s
    nginx-66cfc7f7d5-jkmvh   1/1     Running             1          6d1h
    nginx-66cfc7f7d5-zdk4r   1/1     Running             1          6d1h
    [root@k8s-master01 job]# kubectl logs hello-1629201900-9q7wt    //查看执行日志
    Tue Aug 17 12:05:03 UTC 2021
    Hello from the Kubernetes cluster
    
    暂无评论

    发送评论 编辑评论

    
    				
    |´・ω・)ノ
    ヾ(≧∇≦*)ゝ
    (☆ω☆)
    (╯‵□′)╯︵┴─┴
     ̄﹃ ̄
    (/ω\)
    ∠( ᐛ 」∠)_
    (๑•̀ㅁ•́ฅ)
    →_→
    ୧(๑•̀⌄•́๑)૭
    ٩(ˊᗜˋ*)و
    (ノ°ο°)ノ
    (´இ皿இ`)
    ⌇●﹏●⌇
    (ฅ´ω`ฅ)
    (╯°A°)╯︵○○○
    φ( ̄∇ ̄o)
    ヾ(´・ ・`。)ノ"
    ( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
    (ó﹏ò。)
    Σ(っ °Д °;)っ
    ( ,,´・ω・)ノ"(´っω・`。)
    ╮(╯▽╰)╭
    o(*////▽////*)q
    >﹏<
    ( ๑´•ω•) "(ㆆᴗㆆ)
    😂
    😀
    😅
    😊
    🙂
    🙃
    😌
    😍
    😘
    😜
    😝
    😏
    😒
    🙄
    😳
    😡
    😔
    😫
    😱
    😭
    💩
    👻
    🙌
    🖕
    👍
    👫
    👬
    👭
    🌚
    🌝
    🙈
    💊
    😶
    🙏
    🍦
    🍉
    😣
    Source: github.com/k4yt3x/flowerhd
    颜文字
    Emoji
    小恐龙
    花!
    上一篇
    下一篇