Kubernetes基础_07_Job & CronJob 全解析(短暂性Pod)

Posted 毛奇志

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kubernetes基础_07_Job & CronJob 全解析(短暂性Pod)相关的知识,希望对你有一定的参考价值。

系列文章目录

文章目录


前言

一、短暂性Pod

一次任务(主动触发) 完成了就是 completed 0/1 表示停止了,结束了。

持久性Pod 与 短暂性Pod

持久性Pod:就是启动之后,只要不销毁,就一直是Running,对这种Pod的管理,包括Deployment(无状态)、StatefulSet(有状态),其正常状态是Running

短暂性Pod:就是启动之后,先Running,Running完成之后就是Completed,对这种Pod的管理,包括Job,其正常状态是Completed

其中,Job也分为两种, 一次任务(主动触发) 就是 Job,定时任务(定时被动触发) 就是 CronJob。

二、Job

2.1 Job

官网:https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion

A Job creates one or more Pods and ensures that a specified number of them successfully terminate. As pods successfully complete, the Job tracks the successful completions. When a specified number of successful completions is reached, the task (ie, Job) is complete. Deleting a Job will clean up the Pods it created.

对于RS,RC之类的控制器,能够保持Pod按照预期数目持久地运行下去,它们针对的是持久性的任务,比如web服务。

而有些操作其实不需要持久,比如压缩文件,我们希望任务完成之后,Pod就结束运行,不需要保持在系统中,此时就需要用到Job。

所以可以这样理解,Job是对RS、RC等持久性控制器的补充。

负责批量处理短暂的一次性任务,仅执行一次,并保证处理的一个或者多个Pod成功结束。

2.2 Job实践

Here is an example Job config. It computes π to 2000 places and prints it out. It takes around 10s to complete.

vi job.yaml
kubectl apply -f job.yaml   # 运行
kubectl describe jobs/pi     # 日志
kubectl logs pod-name   # 日志
apiVersion: batch/v1
kind: Job     # 定义为job 这个pod执行完command就销毁 ,定义为deployment,这个pod执行完command一直存在
metadata:
  name: job-demo
spec:
  template:
    metadata:
      name: job-demo
    spec:
      restartPolicy: Never
      containers:
      - name: counter
        image: busybox
        command:
        - "bin/sh"
        - "-c"
        - "for i in 9 8 7 6 5 4 3 2 1; do echo $i; done"

  • 非并行Job:
    • 通常只运行一个Pod,Pod成功结束Job就退出。
  • 固定完成次数的并行Job:
    • 并发运行指定数量的Pod,直到指定数量的Pod成功,Job结束。
  • 带有工作队列的并行Job:
    • 用户可以指定并行的Pod数量,当任何Pod成功结束后,不会再创建新的Pod
    • 一旦有一个Pod成功结束,并且所有的Pods都结束了,该Job就成功结束。
    • 一旦有一个Pod成功结束,其他Pods都会准备退出。

三、CronJob

官网:https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/

A Cron Job creates Jobs on a time-based schedule.One CronJob object is like one line of a crontab (cron table) file. It runs a job periodically on a given schedule, written in Cron format.

cronJob是基于时间进行任务的定时管理。

  • 在特定的时间点运行任务
  • 反复在指定的时间点运行任务:比如定时进行数据库备份,定时发送电子邮件等等。

总结

以上是关于Kubernetes基础_07_Job & CronJob 全解析(短暂性Pod)的主要内容,如果未能解决你的问题,请参考以下文章

在任何给定时间运行 5 个脚本

Docker&Kubernetes ❀ Kubernetes集群Pod控制器 - Job

Docker&Kubernetes ❀ Kubernetes集群Pod控制器 - Job

关于 Kubernetes中Job&CronJob的一些笔记

Kubernetes中的Job(工作计划)&CronJob(定时工作计划)Demo+实战

Oozie_初识