Kubernetes Cronjob & Job
https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/job/
https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/cron-jobs/
Job
[root@k8s-deploy ~]# cat job.yaml
apiVersion: batch/v1
kind: Job
metadata:
name: job-redis-init
spec:
template:
spec:
containers:
- name: job-redis-init-container
image: centos:7.9.2009
command: ["/bin/sh"]
args: ["-c","echo data init job at `date +%Y-%m-%d_%H-%M-%S` >> /cache/data.log"]
volumeMounts:
- mountPath: /cache
name: cache-volume
volumes:
- name: cache-volume
hostPath:
path: /tmp/jobdata
restartPolicy: Never
[root@k8s-deploy ~]# kubectl apply -f job.yaml
#只会执行一次 就推出了 显示Completed
[root@k8s-deploy ~]# kubectl get pods
[root@k8s-deploy tmp]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
job-redis-init-9zmmm 0/1 Completed 0 3m49s 10.200.85.197 192.168.40.111 <none> <none>
#在node1上会建立一个文件 /tmp/jobdata
[root@k8s-node01 ~]# ll /tmp/jobdata/data.log
-rw-r--r-- 1 root root 37 Nov 28 07:56 /tmp/jobdata/data.log
[root@k8s-node01 ~]# cat /tmp/jobdata/data.log
data init job at 2023-11-28_12-56-38
CronJob
#每隔1分钟执行 备份操作
[root@k8s-deploy tmp]# cat crontab.yaml
apiVersion: batch/v1
kind: CronJob
metadata:
name: cronjob-mysql-databackup
spec:
schedule: "* * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: crontab-mysql-databackup-pod
image: centos:7.9.2009
command: ["/bin/sh"]
args: ["-c", "echo mysql databackup cronjob at `date +%Y-%m-%d_%H-%M-%S` >> /cache/data.log"]
volumeMounts:
- mountPath: /cache
name: cache-volume
volumes:
- name: cache-volume
hostPath:
path: /tmp/cronjobdata
restartPolicy: OnFailure
[root@k8s-deploy tmp]# kubectl apply -f crontab.yaml
[root@k8s-deploy tmp]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
cronjob-mysql-databackup-28352952-59k5p 0/1 Completed 0 35s 10.200.85.198 192.168.40.111 <none> <none>
#在node1上 查看 创建了目录/tmp/cronjobdata 每隔1分钟在日志中输出日志
[root@k8s-node01 cronjobdata]# ll /tmp/cronjobdata/
total 4
-rw-r--r-- 1 root root 144 Nov 28 08:13 data.log
[root@k8s-node01 cronjobdata]# cat data.log
mysql databackup cronjob at 2023-11-28_13-11-54
mysql databackup cronjob at 2023-11-28_13-12-54
mysql databackup cronjob at 2023-11-28_13-13-54