etcd集群备份与恢复
etcd V3 API版本数据备份
root@k8s-etcd1:~# mkdir /data
root@k8s-etcd1:~# cd /data/
root@k8s-etcd1:/data# etcdctl snapshot save snapshot.db
etcd集群恢复
root@k8s-etcd1:/data# etcdutl snapshot status snapshot.db
root@k8s-etcd1:/data# etcdutl snapshot restore ./snapshot.db --data-dir=/var/lib/etcd-data #将数据恢复到一个空的目录中
单机备份数据
root@k8s-etcd1:~# mkdir /data/etcd-backup-dir/ -p
root@k8s-etcd1:~# cat etcd-backup.sh
#!/bin/bash
source /etc/profile
DATE=`date +%Y-%m-%d_%H-%M-%S` #获取时间戳
ETCDCTL_API=3 /usr/local/bin/etcdctl snapshot save /data/etcd-backup-dir/etcd-snapshot-${DATE}.db #生成带时间戳的备份
使用ezctl备份集群
root@k8s-deploy:/etc/kubeasz# ./ezctl backup k8s-cluster1
root@k8s-deploy:/etc/kubeasz# kubectl get deployment -n myserver
#删除myserver-nginx-deployment
root@k8s-deploy:/etc/kubeasz# kubectl delete deployment -n myserver myserver-nginx-deployment
##注意,在恢复数据期间API server不可用,必须在业务低峰期操作或者是在其它紧急场景:
root@k8s-deploy:/etc/kubeasz# grep db_to_restore ./roles/ -R #选择恢复的文件
./roles/cluster-restore/defaults/main.yml:db_to_restore: "snapshot.db"
./roles/cluster-restore/tasks/main.yml: src: "{{ cluster_dir }}/backup/{{ db_to_restore }}
root@k8s-master1:/etc/kubeasz# ./ezctl restore k8s-cluster1 #v3.3.1