使用cronjob备份etcd

创建pvc

在kube-system项目中手动,选择storage class,创建名称etcd-backup 的pvc

发布备份cronjob

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  namespace: kube-system
  name: etcd-backup
spec:
  schedule: "0 */12 * * *"
  jobTemplate:
    spec:
      template:
        metadata:
          labels:          
            backup: "etcd"
        spec:
          containers:
          - name: etcd-backup
            image: quay.io/coreos/etcd:v3.2.22
            args:
              - |
                #!/bin/sh
                set -ex
                source /etc/etcd/etcd.conf
                mkdir /backup/etcd-$(date +%d%H)
                ETCDCTL_API=3 etcdctl --cert="/etc/etcd/peer.crt" --key=/etc/etcd/peer.key --cacert="/etc/etcd/ca.crt" --endpoints=$ETCD_ADVERTISE_CLIENT_URLS snapshot save /backup/etcd-$(date +%d%H)/db
                tar -zcvf /backup/etcd-$(date +%d%H).tar.gz /backup/etcd-$(date +%d%H)/db
                rm -Rf /backup/etcd-$(date +%d%H)
            command:
              - /bin/sh
              - '-c'
            securityContext:
              privileged: true
            volumeMounts:
              - mountPath: /etc/etcd/
                name: master-config
                readOnly: true
              - name: backup
                mountPath: /backup
          restartPolicy: OnFailure
          nodeSelector:
            node-role.kubernetes.io/master: 'true'
          volumes:
            - hostPath:
                path: /etc/etcd/
                type: ''
              name: master-config
            - name: backup
              persistentVolumeClaim:
                claimName: etcd-backup

检查备份数据

找到pvc etcd-backup 对应的网盘目录

oc get pvc|awk '{print $3}'|tail -1|xargs oc describe pv
Name:            pvc-7b9ad3fd-3bf5-11e9-84bc-00163e026866
Labels:          <none>
Annotations:     pv.kubernetes.io/provisioned-by=alicloud/nas
Finalizers:      [kubernetes.io/pv-protection]
StorageClass:    alicloud-nas
Status:          Bound
Claim:           kube-system/etcd-backup
Reclaim Policy:  Delete
Access Modes:    RWX
Capacity:        50Gi
Node Affinity:   <none>
Message:
Source:
    Type:      NFS (an NFS mount that lasts the lifetime of a pod)
    Server:    12318f4b8e1-aot76.cn-hongkong.nas.aliyuncs.com
    Path:      /kube-system-etcd-backup-pvc-7b9ad3fd-3bf5-11e9-84bc-00163e026866
    ReadOnly:  false
Events:        <none>

挂载到临时目录

mount 12318f4b8e1-aot76.cn-hongkong.nas.aliyuncs.com:/kube-system-etcd-backup-pvc-7b9ad3fd-3bf5-11e9-84bc-00163e026866 /mnt/pvc
ll /mnt/pvc
total 84388
-rw-r--r--. 1 root root 12417398 Mar  1 15:57 etcd-0107.tar.gz
-rw-r--r--. 1 root root 12306442 Mar  1 20:00 etcd-0112.tar.gz
-rw-r--r--. 1 root root 12375795 Mar  2 08:00 etcd-0200.tar.gz
-rw-r--r--. 1 root root 12306346 Mar  2 20:00 etcd-0212.tar.gz
-rw-r--r--. 1 root root 12368600 Mar  3 08:00 etcd-0300.tar.gz
-rw-r--r--. 1 root root 12282545 Mar  3 20:00 etcd-0312.tar.gz
-rw-r--r--. 1 root root 12341568 Mar  4 08:00 etcd-0400.tar.gz

卸载目录

umount /mnt/pvc

支持作者

如果文章对您有帮助,欢迎打赏,谢谢

Last updated