k8s单master集群通过备份etcd还原集群

准备环境

通过kubeadm 安装的单master kubernetes 1.19+ 集群

容器环境:containerd

客户端工具:kubeadm、kubectl、etcdctl、crictl

备份文件

etcd snap快照 xxx.db

/etc/kubernetes/目录下的所有文件(证书,manifest文件)

用户主目录下 .kube/config文件(kubectl连接认证)

/var/lib/kubelet/目录下所有文件(plugins容器连接认证)

还原操作

1、在master节点执行 kubeadm reset 

2、清理掉flannel相关网络配置

rm -rf /var/lib/cni/
rm -rf /var/lib/kubelet/*
rm -rf /etc/cni/
ifconfig cni0 down
ifconfig flannel.1 down
ip link delete cni0
ip link delete flannel.1

2、在master节点执行 kubeadm  init

3、集群初始化成功后 systemctl stop kubelet.service

4、crictl ps 获取所有运行中的容器,crictl stop 停止kube-system相关的所有容器

5、删除etcd数据库 rm -rf var/lib/etcd 

6、通过etcdctl还原  etcdctl snapshot restore  xxx.db --data-dir=/var/lib/etcd

7、还原kubernetes和kubelet目录 cp -r kubernetes /etc/ && cp -r  kubelet /var/lib/

8、还原kubectl连接认证 cp config $HOME/.kube/config

9、重启kubelet.service   systemctl start kubelet.service

10、等待数秒后执行 kubectl cluster-info 检查集群状态,如果都是running则说明master还原成功

posted @ 2020-12-31 13:33  a1010  阅读(414)  评论(0编辑  收藏  举报