K8S篇之etcd数据备份与恢复

一、etcd备份与恢复

基本了解:
1、k8s 使用etcd数据库实时存储集群中的数据,安全起见,一定要备份。
2、备份只需要在一个节点上备份就可以了,每个节点上的数据是同步的;但是数据恢复是需要在每个节点上进行。
3、etcd容器是与宿主机网络共享的,采用hostNetwork方式,2379数据端口就可以在宿主机上查看到。
在这里插入图片描述
4、kubeadm方式部署的集群,其中etcd是通过静态pod方式部署启动,在/etc/kubernetes/manifests目录下有它的yaml文件,里面记录了启动镜像、版本、证书路劲、数据目录等内容。
K8S篇之etcd数据备份与恢复_第1张图片
K8S篇之etcd数据备份与恢复_第2张图片
注意事项:
使用yum安装的etcd版本比较低,因为etcd现有两个版本,2和3,两个版本之间的api改动较大,现在使用之前都需要先指定到3版本。

1.1 kubeadm部署方式

1.1.1 备份

1.安装etcd。

yum install -y etcd

在这里插入图片描述
2、查看当前pod,待会备份后删除它,再数据恢复查看效果
K8S篇之etcd数据备份与恢复_第3张图片
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。

K8S篇之etcd数据备份与恢复_第4张图片
4、删除pod。恢复查看效果。
K8S篇之etcd数据备份与恢复_第5张图片

1.1.2 恢复

先停止 api server 和 etcd服务。因为是静态Pod部署,监控这个目录下的yaml文件,当把目录备份后就直接相当于停服。

[root@k8s-master manifests]# pwd
/etc/kubernetes/manifests

mv /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、查看结果,数据恢复
K8S篇之etcd数据备份与恢复_第6张图片

你可能感兴趣的:(K8S,kubernetes,etcd,容器)