Job单次任务和定时任务
之前我们部署的程序如Nginx、我们自己写的SpringBoot程序等都是持续运行的服务,除此之外k8s也支持单次任务(Job)和定时任务(CronJob)。
Job单次任务
Job也会创建一个Pod,通过该Pod的返回码来判断其是否执行成功,如果发生异常退出会将其重新启动。
Job例子
下面是一个Job的例子。
apiVersion: batch/v1
kind: Job
metadata:
name: myjob
spec:
template:
metadata:
labels:
app: myjob
spec:
restartPolicy: OnFailure
containers:
- name: busybox
image: busybox
args:
- /bin/sh
- -c
- echo helloWorld
这里我们使用busybox镜象输出一段信息作为我们的Job。
注意:Job属于batch API组,因此这里apiVersion为batch/v1。
Job相关操作
部署Job,我们直接使用kubectl create命令。
kubectl create -f <yaml配置文件名>
如下命令可以查看Job运行状态。
kubectl get job
其中,STATUS为Complated为执行成功。
CronJob定时任务
CronJob通过指定一个Linux的Crontab表达式,来定时执行任务,下面是一个例子。
apiVersion: batch/v1
kind: CronJob
metadata:
name: myjob
spec:
schedule: "*/1 * * * *"
jobTemplate:
spec:
template:
spec:
restartPolicy: OnFailure
containers:
- name: busybox
image: busybox
args:
- /bin/sh
- -c
- echo helloWorld
CronJob每一次运行,就会创建一个新的Pod,并执行我们指定的内容。
我们可以用如下命令查看定时任务的执行情况。
kubectl get cronjob
如果不希望CronJob继续运行,可以将其删除。
kubectl delete cronjob <CronJob名>
作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。