Cronjob
从1.5版本开始增加的类型,类似linux cron的定时任务
Cron Job的定时任务的形式:
分 时 日 月 周
apiVersion: batch/v1
//Cronjob资源类型
kind: CronJob
metadata:
name: hello
//定义了 Pod 的行为和构建
spec:
//定时任务
schedule: "*/1 * * * *"
//job模板
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: nginx
args:
- /bin/bash
- -c
- date; echo Hello from the Kubernetes cluster
//restartPolicy 指定什么情况下需要重启容器。对于 Job,只能设置为 Never 或者 OnFailure。对于其他 controller(比如 Deployment)可以设置为 Always
restartPolicy: OnFailure
kubectl create -f 2fluentd-ds.yaml
获取定时任务:
//获取 hello定时任务
kubectl get cronjob hello
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
hello */1 * * * * False 0 26s 149m
//1min后再刷新,发现又执行了一次
[root@scms01 day6]# kubectl get cronjob hello
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
hello */1 * * * * False 1 3s 152m
可见,能看到定时任务大的Schedule, suspend代表是否挂起,目前是false,Last Schedule是执行的时间,多次刷新后,可看到执行了多次
//获取当前的任务
kubectl get job
NAME COMPLETIONS DURATION AGE
hello-28033159 1/1 5s 2m17s
hello-28033160 1/1 5s 77s
hello-28033161 1/1 5s 17s
//获取当前pod
[root@scms01 day6]# kubectl get pod |grep hello
hello-28033163-hbrcq 0/1 Completed 0 2m6s
hello-28033164-vcqmh 0/1 Completed 0 66s
hello-28033165-pdpdx 0/1 Completed 0 6s
查看pod hello-28033163-hbrcq的描述
[root@scms01 day6]# kubectl describe pod hello-28033163-hbrcq
Error from server (NotFound): pods "hello-28033163-hbrcq" not found
发现没有这个资源,这是因为对应的pod执行完定时任务小时了,我们需要在执行下 get pod
//再次获取
[root@scms01 day6]# kubectl get pod |grep hello
hello-28033167-mtbfc 0/1 Completed 0 2m30s
hello-28033168-rcj9l 0/1 Completed 0 90s
hello-28033169-89lq8 0/1 Completed 0 30s
//查看
[root@scms01 day6]# kubectl describe pod hello-28033167-mtbfc
Name: hello-28033167-mtbfc
Namespace: default
Priority: 0
Service Account: default
Node: scms01/172.16.2.220
..........
.........
.........
//查看日志信息
[root@scms01 day6]# kubectl logs hello-28033169-89lq8
Thu Apr 20 11:29:02 UTC 2023
Hello from the Kubernetes cluster
一直监控job的执行情况
kubectl get jobs --watch
NAME COMPLETIONS DURATION AGE
hello-28033171 1/1 5s 2m30s
hello-28033172 1/1 5s 90s
hello-28033173 1/1 5s 30s
hello-28033174 0/1 0s
hello-28033174 0/1 0s 0s
删除job
kubectl delete cronjob hello
cronjob.batch "hello" deleted