kubeneters發生故障時候對etcd進行災難備份恢復

參考文章 The Ultimate Guide to Disaster Recovery for Your Kubernetes Clusters https://medium.com/velotio-perspectives/the-ultimate-guide-to-disaster-recovery-for-your-kubernetes-clusters-94143fcc8c1e

定時任務格式參考 https://kubernetes.io/zh/docs/concepts/workloads/controllers/cron-jobs/

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: backup
  namespace: kube-system
spec:
# activeDeadlineSeconds: 100
 schedule: "* * */1 * *"
 jobTemplate:
  spec:
   template:
    spec:
     containers:
     - name: backup
      # Same image as in /etc/kubernetes/manifests/etcd.yaml
       image: docker.io/bitnami/etcd:3.4.7
       env:
       - name: ETCDCTL_API
         value: "3"
       command: ["/bin/sh"]
       args: ["-c", "etcdctl --endpoints=https://127.0.0.1:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/healthcheck-client.crt --key=/etc/kubernetes/pki/etcd/healthcheck-client.key snapshot save /backup/etcd-snapshot-$(date +%Y-%m-%d_%H:%M:%S_%Z).db"]
       volumeMounts:
       - name: etcd-certs
         mountPath: /etc/kubernetes/pki/etcd
         readOnly: true
       - name: backup
         mountPath: /backup
       restartPolicy: OnFailure
       hostNetwork: true
       # run only in the master onde.
       nodeSelector:
        node-role.kubernetes.io/master: ""
       tolerations:
       - key: "node-role.kubernetes.io/master"
         effect: "NoSchedule"
       volumes:
       - name: etcd-certs
         hostPath:
          path: /etc/kubernetes/pki/etcd
          type: DirectoryOrCreate
       - name: backup
         hostPath:
          path: /data/backup
          type: DirectoryOrCreate

當前使用會遇到open /etc/kubernetes/ permission denied,這是因爲文件權限的。當前是root,而使用的bitnami鏡像是用1001賬戶權限,所以這裏要處理使宿主機所屬用戶組和容器一樣。在yaml文件裏面添加

       securityContext:
        runAsUser: 0 (root)
        runAsGroup: 0 (root)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章