[CKA旅途]K8S五:etcd备份及还原
k8s etcd备份及还原
我写这个文章比较简,我的etcd只在我的master节点上。没集群。但是此文对于你练习备份及回复我想会有很多作用。我踩了不少坑。
因为实验,所以用到的证书我用自己搭建的集群(1master+2worker) master本地的证书
你最好使用切换到root用户,避免一些不必要的权限麻烦,因为开始的时候我用的非root权限,到时一些permission问题,还有出现default.etcd已经存在的各种奇怪问题。
备份:
ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki//etcd/peer.crt --key=/etc/kubernetes/pki/etcd/peer.key snapshot save /data/etcdbackup_bak.db
此文件 /data/etcdbackup_bak.db你自己定义。
恢复,这个就比较重要了,我当时按官doc恢复后我发现我只kubectl get pods的时候是没有问题的但是当我要做delete,create操作的时候就会报Error from server: etcdserver: request timed out。然后使用命令systemctl status kubelet的时候也发现一些错误。在网上找了很多方法都不管用最后我发现下面方面可以。声明:我没有etcd集群。
在master节点上执行
1.mv /etc/kubernetes/manifests /etc/kubernetes/manifests.bak
#作用是删除静态pod,停止etcd api-server,从/etc/kubernetes/manifests下面的目录你可以看到有etcd.yaml kube-apiserver.yaml kube-controller-manager.yaml kube-scheduler.yaml。其实也就符合官doc上面的操作
2.#备份一下 etcd,其实这部操作避免恢复时候重名,但是一般不会有。
mv /var/lib/etcd /var/lib/etcd.bak
3.恢复数据
ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki//etcd/peer.crt --key=/etc/kubernetes/pki/etcd/peer.key snapshot restore etcdbak --data-dir=/var/lib/etcd
这etcdbak是我备份的数据
4.mv /etc/kubernetes/manifests.bak /etc/kubernetes/manifests
5.验证 kubectl get nodes。 kubectl get pods。kubectl delete pods xxx。
更多推荐
所有评论(0)