首页 > 其他分享 >14. Kubernetes - Job 和 CronJob

14. Kubernetes - Job 和 CronJob

时间:2022-10-22 12:01:18浏览次数:52  
标签:CronJob 14 Kubernetes demo 任务 Job Pod spec

Job

Job 负责处理任务,主要为仅执行一次的任务,它保证批处理任务的一个或多个 Pod 成功结束。

Job 的资源清单如下所示:

apiVersion: batch/v1
kind: Job
metadata:
  name: job-demo
  namespace: default
spec:
  # 限制任务运行的最长时间
  activeDeadlineSeconds: 100
  # 任务失败重建 Pod 的次数,默认 6,重建 Pod 的间隔呈指数增加,即 10s、20s、40s...
  backoffLimit: 10
  # 定义 Job 最多可以有多少 Pod 同时运行
  parallelism: 2
  # 定义 Job 至少要完成的 Pod 数目
  completions: 5
  template:
    spec:
      # 重启策略必须是 Never,设置 OnFailure,则 Job 执行失败后不会创建新的 Pod,只会不断重启 Pod
      restartPolicy: Never
      containers:
        - name: demo
          image: busybox
          command:
            - "/bin/sh"
            - "-c"
            - "echo 'Hello World'"  

配置清单参数说明:

  • apiVersion:Job 类的属于 batch/v1 而不是 apps/v1

  • activeDeadlineSeconds:限制任务运行时间,如果运行超过该时间,这个 Job 的所有 Pod 都会终止,Pod 的终止原因为: DeadlineExceeded

  • backoffLimit:当重启策略设置为 Never 时,Job 在执行失败后会不断创建新 Pod,但不会一直创建下去,可以通过该参数进行限制,默认为 6。同时 Job 重建 Pod 的间隔是呈指数增加的,即 10s、20s、40s… 后。

  • parallelism:并行控制,定义 Job 能有多少个 Pod 同时运行。

  • completions:定义 Job 至少要完成的 Pod 数目。

  • RestartPolicy:重启策略,仅支持 NeverOnFailure 两种,不支持 Always

需要注意的是:Job 和 Deployment、StatefulSet 之类不同的地方在于,Pod 中的容器要求是一个任务,而不是一个常驻前台的进程。执行 apply 之后 Pod 会很快的退出,如果没出错,状态就处于 Completed

CronJob

CronJob 相当于在 Job 的基础上加上了时间调度,使得任务可以在给定的时间点运行,也可以周期性地在给定时间点运行。类似于 Linux 中的 crontab。它的时间配置也和 crontab 一样。

时间格式为:分 时 日 月 周

  • 分:支持 0~59,每分钟配置为 */1
  • 时:支持 0~23
  • 日:支持 1~31
  • 月:支持 1~12
  • 周:支持 0~7,0 和 7 都表示星期天

使用 CronJob 来管理 Job 任务的资源清单:

apiVersion: batch/v1
kind: CronJob
metadata:
  name: cronjob-demo
  namespace: default
spec:
  # 定时任务
  schedule: "*/1 * * * * "
  # 
  successfulJobsHistoryLimit: 3
  # 
  failedJobsHistoryLimit: 3
  # 配置 Job 资源清单,省略了某些重复项
  jobTemplate:
    spec:
      template:
        spec:
          restartPolicy: OnFailure
          containers:
            - name: demo
              image: busybox
              command:
                - "/bin/sh"
                - "-c"
                - "echo AAAA"

配置清单参数说明:

  • schedule:指定任务运行的周期,格式和 crontab 一样。
  • jobTemplate:指定需要运行的任务,格式就是 Job 资源清单。
  • successfulJobsHistoryLimit:历史限制,指定可以保留多少完成的 Pod,默认为 3。
  • failedJobsHistoryLimit::历史限制,指定可以保留多少失败的 Pod,默认为 1。

如果不再需要 CronJob,可以使用 kubectl 命令删除它:

kubectl delete cronjob cronjob-demo

不过需要注意:将会终止正在创建的 Job,但是运行中的 Job 将不会被立即终止。

标签:CronJob,14,Kubernetes,demo,任务,Job,Pod,spec
From: https://www.cnblogs.com/ezops/p/16815754.html

相关文章