准备环境
通过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还原成功