etcd备份与恢复

etcd介绍
Etcd是 Kubernetes的关键组件,因为它存储了集群的整个状态:其配置,规格以及运行中的工作负载的状态。常见问题etcd数据损坏,Kubernetes组件会不断重启,检查etcd容器日志确认异常无法启动导致。本文介绍使用苍穹安装器部署环境的etcd的备份与恢复。
etcd关乎k8s的正常运行,请谨慎操作
备份与恢复
1.部署etcdctl
备份还原都需要etcd客户端,容器化部署的可以直接从etcd容器中拷贝出来:在k8smaster节点找到etcd容器,使用docker cp执行拷贝到宿主机,或者直接执行以下语句。

docker cp $(docker ps | grep etcd | grep -v pause | head -1 |awk '{print $1}'):/usr/local/bin/etcdctl /usr/local/bin/此处不能使用kubectl cp,官方 etcd 镜像并没有 tar 命令,所以执行会报错
执行后可以使用etcdctl指令,以下备份还原需要使用到,同时也可以查询集群状态等,可以自行查找资料学习。
etcdctl --cluster --cert=/etc/kubernetes/pki/etcd/server.crt --cacert=/etc/kubernetes/pki/etcd/ca.crt --key=/etc/kubernetes/pki/etcd/server.key endpoint status -w table

2.备份etcd
执行命令,备份etcd数据,集群下在某个master节点备份即可
ETCDCTL_API=3 etcdctl --endpoints="https://127.0.0.1:2379" --cert="/etc/kubernetes/pki/etcd/server.crt" --key="/etc/kubernetes/pki/etcd/server.key" --cacert="/etc/kubernetes/pki/etcd/ca.crt" snapshot save /kingdee/etcd_bak/backup.db
ETCDCTL_API=3,使用Etcd的v3版本的API,从k8s 1.13开始,k8s不再支持v2版本的etcd
endponits可以通过命令在etcd容器中查找,一般会有两个IP使用任一即可:kubectl describe pod etcd-centos -n kube-system | grep listen-client-urls
/kingdee/etcd_bak/backup.db #备份完成后的数据,对应路径需要提前建立

3.恢复etcd
1.单机恢复
恢复前,需要先停止kube-apiserver和etcd,否则这2组件会不断重启。
#将manifests和etcd目录先改个名字,apiserver和etcd自然就停止了 mv /etc/kubernetes/manifests /etc/kubernetes/manifests.bak mv /kingdee/k8s/etcd /kingdee/k8s/etcd.bak mkdir /kingdee/k8s/etcd
示例中安装路径选择的是/kingdee,那么etcd路径就是/kingdee/k8s/etcd
执行命令,修改路径为现场正确值
etcd备份与恢复
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



