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)的主要内容,如果未能解决你的问题,请参考以下文章
Docker&Kubernetes ❀ Kubernetes集群Pod控制器 - Job
Docker&Kubernetes ❀ Kubernetes集群Pod控制器 - Job
关于 Kubernetes中Job&CronJob的一些笔记