etcd备份与恢复测试
第1步:master-1上备份etcd(这边三个master节点上对应部署了三个etcd节点)
三个master节点上创建备份目录:/opt/etcd/bak
master-1上操作备份:
ETCDCTL_API=3 /usr/local/bin/etcdctl snapshot save /opt/etcd/bak/backup_$(date "+%Y%m%d%H%M%S").db \
--endpoints=https://192.168.52.38:2379 \
--cacert=/etc/etcd/ssl/ca.pem \
--cert=/etc/etcd/ssl/server.pem \
--key=/etc/etcd/ssl/server-key.pem
把备份的内容分发到其他两个节点:
for i in master-2 master-3;do scp backup_20210928102547.db $i:/opt/etcd/bak/ ;done
##########自己删除一个deployment,以验证恢复是否成功###########
第2步:恢复
先关闭服务(三节点都操作):
systemctl stop kube-apiserver
systemctl stop etcd
mv /var/lib/etcd/default.etcd /var/lib/etcd/default.etcd.bak
节点1:ETCDCTL_API=3 /usr/local/bin/etcdctl snapshot restore /opt/etcd/bak/backup_20210928102547.db \
--name master-1 \
--initial-cluster="master-1=https://192.168.52.38:2380,master-2=https://192.168.52.39:2380,master-3=https://192.168.52.40:2380" \
--initial-cluster-token=etcd-cluster \
--initial-advertise-peer-urls=https://192.168.52.38:2380 \
--data-dir=/var/lib/etcd/default.etcd
节点2和3命令类似,注意修改--name和--initial-advertise-peer-urls
节点2:
节点3:
重启服务(三节点):
systemctl start kube-apiserver
systemctl start etcd
查看恢复之后,之前删除的deployment有没有恢复: