一、etcd备份与恢复
基本了解:
1、k8s 使用etcd数据库实时存储集群中的数据,安全起见,一定要备份。
2、备份只需要在一个节点上备份就可以了,每个节点上的数据是同步的;但是数据恢复是需要在每个节点上进行。
3、etcd容器是与宿主机网络共享的,采用hostNetwork方式,2379数据端口就可以在宿主机上查看到。
4、kubeadm方式部署的集群,其中etcd是通过静态pod方式部署启动,在/etc/kubernetes/manifests目录下有它的yaml文件,里面记录了启动镜像、版本、证书路劲、数据目录等内容。
注意事项:
使用yum安装的etcd版本比较低,因为etcd现有两个版本,2和3,两个版本之间的api改动较大,现在使用之前都需要先指定到3版本。
1.1 kubeadm部署方式
1.1.1 备份
1.安装etcd。
yum install -y etcd
2、查看当前pod,待会备份后删除它,再数据恢复查看效果
3、备份,导出的数据文件是qingjun.db
ETCDCTL_API=3 etcdctl snapshot save qingjun.db \
--endpoints=https://127.0.0.1:2379 \ ##指定etcd地址端口。
--cacert=/etc/kubernetes/pki/etcd/ca.crt \ ##指定etcd根证书。
--cert=/etc/kubernetes/pki/etcd/server.crt \ ##指定etcd客户端数字证书。
--key=/etc/kubernetes/pki/etcd/server.key ##指定key。
4、删除pod。恢复查看效果。
1.1.2 恢复
先停止 api server 和 etcd服务。因为是静态Pod部署,监控这个目录下的yaml文件,当把目录备份后就直接相当于停服。
[root@k8s-master manifests]# pwd
/etc/kubernetes/manifestsmv /etc/kubernetes/manifests /etc/kubernetes/manifests.bck
mv /var/lib/etcd /var/lib/etcd.bck
6、使用qingjun.db文件,恢复数据到/var/lib/etcd 目录。
ETCDCTL_API=3 etcdctl snapshot restore qingjun.db --data-dir=/var/lib/etcd
7、启动kube-apiserver和etcd容器
mv /etc/kubernetes/manifests.bck /etc/kubernetes/manifests
8、查看结果,数据恢复