0
点赞
收藏
分享

微信扫一扫

k8s cronjob之mysql定时备份

背景

mysql备份是做为运维的一个常规工作,在传统环境中很容易实现,这边记录一下使用k8s cronjob定时备份,代码如下:

创建nfs类型pvc

vi mysql-cronjob-pvc.yml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-cronjob-pv
  labels:
    pv: mysql-cronjob-pv
  namespace: test
spec:
  capacity:
    storage: 10Gi #指定pv的容量为10Gi
     #指定访问模式
  accessModes:
    - ReadWriteOnce   #pv能以readwriteMany模式mount到单个节点
  #指定pv在nfs服务器上对应的目录
  storageClassName: ""
  nfs:
    path: /data/nfs
    server: 10.10.10.236
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: mysql-cronjob-pvc
  namespace: test
  labels:
    app: mysql-cronjob-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: ""
  selector:
    matchLabels:
      pv: mysql-cronjob-pv

创建cronjob

vi mysql-cronjob.yml

apiVersion: batch/v1
kind: CronJob
metadata:
  namespace: test
spec:
  concurrencyPolicy: Allow
  failedJobsHistoryLimit: 1
  jobTemplate:
    metadata:
    spec:
      template:
        metadata:
        spec:
          containers:
          - command:
            - /bin/sh
            - -c
            - mysqldump -uroot -p123456 -h mysql --databases nacos_config >/var/lib/mysql/nacos_config.sql
            image: mysql:8.0.29-debian
            imagePullPolicy: IfNotPresent
            name: mysql-cronjob
            volumeMounts:
            - mountPath: /var/lib/mysql
              name: mysql-cronjob
          volumes:
          - name: mysql-cronjob
            persistentVolumeClaim:
              claimName: mysql-cronjob-pvc

查看cronjob

kubectl create -f mysql-cronjob-pvc.yml
kubectl create -f mysql-cronjob.yml
[root@k8s-master-10 mysql]# kubectl -n test get cronjobs.batch 
NAME    SCHEDULE      SUSPEND   ACTIVE   LAST SCHEDULE   AGE
hello   */1 * * * *   False     18       37s             4h12m

查看Job日志

kubectl -n test get jobs.batch

image.png

pods=$(kubectl -n test get pods --selector=job-name=hello-27559124 --output=jsonpath={.items..metadata.name})
kubectl -n test logs $pods

image.png
说明:jobname是上面kubectl -n test get jobs.batch取出来的其中一个,因为是个定时任务,每分钟执行一次,所以随机取一个就可以

验证是否成功

在nfs服务器的相关目录查看是否生成了nacos_config.sql文件
image.png

举报

相关推荐

0 条评论