上一篇文章《Kubernetes入门到进阶使用(八)kubernetes集群etcd备份》我们介绍了已经对整个kubernetes的集群的etcd元数据信息进行了备份。然后我们可以看到在default这个namespace里面有一个myapp-pod的应用,示例图如下:
然后我们演示下把kubernetes集群中的某个pod给误删了的情况,这里我们把这个pod给删除掉:
然后我们再看看还有没有这个pod
可以看到已经没有这个myapp-pod这个实例了。下面我们使用刚才备份的文件对etcd进行还原,然后看看具体的效果。
1)首先找到etcd.yaml文件
find / -name etcd.yaml
此时就可以找到服务器上这个etcd.yaml文件的路径了,示例图如下:
2)把etcd.yaml文件移除保存下
这里我们暂时性把etcd.yaml文件从当前目录中移除出去,放到一个其他的目录下,一会还会用到
mv /root/kube-bench/cfg/cis-1.20/etcd.yaml /opt/
这里我们把他暂时的移动到/opt目录下。
3)删除etcd的数据
这里我们把etcd的数据给删除掉,etcd的数据存储地址是/var/lib/etcd
rm -rf /var/lib/etcd/
4)通过命令把数据给恢复了
etcdctl snapshot restore snap-etcd.db --cacert=/etc/ssl/etcd/ssl/ca.pem --cert=/etc/ssl/etcd/ssl/admin-school.pem --key=/etc/ssl/etcd/ssl/admin-school-key.pem --data-dir=/var/lib/etcd/ --endpoints=https://192.168.31.218:2379
恢复过程如下图:
5)还原etcd.yaml
我们把刚才的etcd.yaml文件给还原下:
mv /opt/etcd.yaml /root/kube-bench/cfg/cis-1.20/
6)查看pod是否还原
kubectl get pods -n default
可以看到我们刚才删除的pod已经被还原回来了。
以上就是恢复kubernetes集群中etcd元数据的全过程案例。
备注:
1、我这里演示的是使用kuboard安装的kubernetes集群,这里的etcd是二进制安装的,所以它的etcd.yaml文件的路径是:/root/kube-bench/cfg/cis-${version}/。如果是其他方式安装的etcd,例如直接pod运行的etcd,那么他的路径应该在:/etc/kubernetes/manifests/目录下。
2、除了上诉1的文件路径差异,其他的步骤不管是哪个集群操作和路径都是一样的。
还没有评论,来说两句吧...