1、备份操作
1.1、环境说明
etcd备份和恢复脚本清单:
etcdbak.sh //用于对etcd各节点进行备份,需要将该脚本拷贝至各节点统一目录。
etcdret.sh //用于进行还原操作。
1.2、备份修改脚本
打开修改脚本修改如下配置信息
#具体节点地址
#群各节点地址
#EtcdEndpoints="http://10.143.55.118:1159,http://10.143.55.119:1159,http://10.143.55.121:1159"
EtcdEndpoints=http://10.143.55.119:1159
#etcd客户端
EtcdCmd="/usr/bin/etcdctl"
#备份主机地址
BackupHost="10.143.55.118"
#备份数据目录
BackupDir="/data/backup/etcd/"
#备份文件名
BackupFile="snapshot"(date +%Y%m%d)_(date +%H%M%S)".db"
#ca证书
CertFile="/etc/kubernetes/ssl/etcd/ca.crt"
#/etcd证书
ServerFile="/etc/kubernetes/ssl/etcd/server.crt"
#etcd证书key
KeyFile="/etc/kubernetes/ssl/etcd/server.key"
#集群名称
EtcdToken="cc34c326-4694-48c6-afdf-c317f40c1847"
是否启动etcd证书
CertBoolen="false"
#etcd名称
EtcdName="etcd55_118"
etcd集群是否健康
Ishealth="false"
1.3、手动执行脚本测试
chmod +x etcdbak.sh
sh ectdbak.sh

1.4、检查备份文件是否存在
切换到备份数据目录下,查找以当前日期结尾的备份文件如

1.5、注意事项
(1)如果在脚本执行过程中,出现etcd集群节点错误,则需要首先修复etcd正常运行,否则长时间备份连线etcd 会增加etcd集群崩溃风险,脚本在执行前进行检查,若集群状态不健康,不进行备份。

(2)备份为周期为每天,所以注意检查磁盘容量并及时删除多余备份数据。
1.6、设置备份周期
向 vi /etc/crontab 追加记录 【注意按实际脚本存放位置和自定义周期修改追加信息,默认为每天凌晨三点备份】
0 3 * * * root /data/backup/ etcdbak.sh
保存生效
加载任务,使之生效:crontab /etc/crontab
查看任务:crontab -l

1.7、日志调取
各节点在etcd备份文件同级目录下查看etcdbak.log

2、还原操作
2.1、停止etcd
ansible etcd -m shell -a "systemctl stop etcd" -i hosts
2.2 、清空
ansible etcd -m shell -a "rm -rf /apps/etcd_data/*" -i hosts
2.3、分发还原数据到各节点
分发同一份数据至各etcd节点同一目录下
ansible etcd copy -a -m "src= /data/backup/etcd/snapshot.db20211112_200249.db dest= /data/backup/etcd/ owner=root group=root mode=0644 " -i hosts
2.4、修改各节点脚本配置

2.5、导入操作
chomd +x etcdrest.sh
sh etcdrest.sh

2.6、启动etcd
ansible etcd -m shell -a "systemctl start etcd" -i hosts
2.7、恢复后检查
Kubectl get pod -A
