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

 

posted @ 2023-11-28 21:15  しみずよしだ  阅读(11)  评论(0)    收藏  举报