Rancher HA 备份和恢复
实例介绍如何创建Rancher数据备份以及如何在灾难情况下进行数据恢复以RKE构建k8s集群 和 RKE0.2.1版本为例:k8s集群:hostrole10.10.110.155nginx前端负载10.10.110.156controlplane,etcd,worker...
实例
介绍如何创建Rancher数据备份以及如何在灾难情况下进行数据恢复
以RKE构建k8s集群 和 RKE 0.2.1版本为例:
k8s集群:
host | role |
|
---|---|---|
10.10.110.155 | nginx | 前端负载 |
10.10.110.156 | controlplane,etcd,worker | |
10.10.110.157 | controlplane,etcd,worker | |
controlplane,etcd,worker | 故障节点、恢复节点 |
注:由于资源不足,模拟 10.10.110.158 节点故障,同时对10.10.110.158节点进行初始化,再对此节点进行恢复
首先需要在k8s集群创建应用,对比恢复后应用是否存在.
1、创建快照
rke etcd snapshot-save --name snapshot.db --config rancher-cluster.yml
RKE会获取每个etcd
节点的快照,并保存在每个etcd节点的/opt/rke/etcd-snapshots
目录下
2、备份快照到安全位置
包括 rancher-cluster.yml ,rancher-cluster.rkestate 还有 snapshot.db
3、模拟 10.10.110.158 故障
对 此节点进行初始化操作:
# 删除所有容器
docker rm -f $(docker ps -qa)
# 删除所有容器卷
docker volume rm $(docker volume ls -q)
# 删除残留路径
sudo rm -rf /etc/ceph /etc/cni /opt/cni /run/secrets/kubernetes.io /run/calico /run/flannel /var/lib/calico /var/lib/cni /var/lib/kubelet /var/log/containers /var/log/pods /var/run/calico
# 清理残留进程
port_list=`80 443 6443 2376 2379 2380 8472 9099 10250 10254`
for port in $port_list
do
pid=`netstat -atlnup|grep $port |awk '{print $7}'|awk -F '/' '{print $1}'|grep -v -|sort -rnk2|uniq`
if [[ -n $pid ]];then
kill -9 $pid
fi
done
pro_pid=`ps -ef |grep -v grep |grep kube|awk '{print $2}'`
if [[ -n $pro_pid ]];then
kill -9 $pro_pid
fi
节点k8s容器删除之后,此节点变为故障节点,同时此节点经过初始化可以作为新节点进行恢复
4、复制快照到恢复节点
恢复节点
可以是全新的节点,或者是之前集群中经过初始化的某个节点
10.10.110.158已经初始化,可以作为恢复节点
在此节点,创建快照目录:
mkdir -p /opt/rke/etcd-snapshots/
复制快照备份到此目录下
5、设置rke配置文件
nodes:
- address: 10.10.110.158 #恢复节点
user: jyapp
role: [controlplane,worker,etcd]
- address: 10.10.110.156
user: jyapp
role: [controlplane,worker,etcd]
- address: 10.10.110.157
user: jyapp
role: [controlplane,worker,etcd]
注:所有etcd节点都要有,其它配置全部注释(Rancher部署和设置配置已在etcd数据库中,恢复不再需要)
6、恢复ETCD数据
rke etcd snapshot-restore --name snapshot.db --config rancher-cluster.yml
7、恢复集群
rke up --config rancher-cluster.yml
至此,集群数据已恢复,rancher HA 可正常使用,可对比 故障前应用是否存在。
更多推荐
所有评论(0)