当前位置:首页 » 《随便一记》 » 正文

K8S集群Etcd数据备份/恢复

11 人参与  2024年05月15日 17:35  分类 : 《随便一记》  评论

点击全文阅读


前言:

kubernetes使用etcd数据库实时存储集群中的数据,安全起见,一定要备份。

一、安装etcdctl

1、查看使用Etcd版本
root@master:~# cat /etc/kubernetes/manifests/etcd.yaml | grep image: | awk '{print $2}'registry.aliyuncs.com/google_containers/etcd:3.5.10-0
 2、下载安装etcdctl
#下载etcdctlroot@master:~# wget https://github.com/etcd-io/etcd/releases/download/v3.5.10/etcd-v3.5.10-linux-amd64.tar.gzroot@master:~# #解压缩root@master:~# tar -zxvf etcd-v3.5.10-linux-amd64.tar.gzroot@master:~# #移进可执行程序目录root@master:~# sudo mv etcd-v3.5.10-linux-amd64/etcdctl /usr/bin/root@master:~# sudo mv etcd-v3.5.10-linux-amd64/etcdutl /usr/bin/root@master:~# #查看一下etcdctl版本root@master:~# etcdctlNAME:        etcdctl - A simple command line client for etcd3.USAGE:        etcdctl [flags]VERSION:        3.5.10API VERSION:        3.5

二、Etcd数据备份 

1、创建备份目录
#备份数据的存放目录mkdir /var/lib/etcd-backup
2、执行备份
ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \--cacert=/etc/kubernetes/pki/etcd/ca.crt \--cert=/etc/kubernetes/pki/etcd/server.crt \--key=/etc/kubernetes/pki/etcd/server.key \snapshot save /var/lib/etcd-backup/etcd-snapshot-`date "+%Y-%m-%d"`.db
3、验证快照
ETCDCTL_API=3 etcdctl --write-out=table snapshot status /var/lib/etcd-backup/etcd-snapshot-`date "+%Y-%m-%d"`.db

 三、Etcd数据恢复 

 1、创建目录并停止所有API实例
#kube*配置文件临时备份目录mkdir /opt/backup#存放备份恢复后的数据工作目录mkdir /var/lib/etcd-restore#将kube*配置文件临时移到备份目录mv /etc/kubernetes/manifests/kube* /opt/backup/
2、数据恢复
ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \--cacert=/etc/kubernetes/pki/etcd/ca.crt \--cert=/etc/kubernetes/pki/etcd/server.crt \--key=/etc/kubernetes/pki/etcd/server.key \#--data-dir指定数据恢复后的存放目录,如果不指定,会在执行命令的同级目录自动创建一个default.etcd目录来存放恢复的数据--data-dir=/var/lib/etcd-restore \#恢复的数据文件也可以别的目录的文件,本文为保持上下文一直,直接恢复以前备份数据snapshot restore /var/lib/etcd-backup/etcd-snapshot-`date "+%Y-%m-%d"`.db
 3、查看验证恢复数据并将配置文件复制回原目录
#查看数据是否恢复到此目录ls /var/lib/etcd-restore#将之前备份的kube*配置文件移回之前目录cp /opt/backup/* /etc/kubernetes/manifests/
4、更改Etcd配置文件并重新启动API实例
#将Etcd.yaml配置文件进行备份#实际测试发现bak放在后面,恢复完成后系统有时还是识别源配置文件,所以直接将bak放在前面,让系统好区分mv /etc/kubernetes/manifests/etcd.yaml /etc/kubernetes/manifests/bak.etcd.yaml#将恢复前的数据目录替换成恢复后的数据目录配置并生成新的etcd.yaml配置文件sed 's!/var/lib/etcd!/var/lib/etcd-restore!'  /etc/kubernetes/manifests/bak.etcd.yaml > /etc/kubernetes/manifests/etcd.yaml#验证之前数据目录是否全部替换完成cat /etc/kubernetes/manifests/etcd.yaml | grep '/var/lib/etcd'#查看新目录都替换那些配置cat /etc/kubernetes/manifests/etcd.yaml | grep '/var/lib/etcd-restore'#重启kubeletsystemctl daemon-reloadsystemctl restart kubelet#等待重启后验证节点和pod状态kubectl get nodekubectl get pod -A
5、检查数据恢复成功,结束

点击全文阅读


本文链接:http://zhangshiyu.com/post/109126.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1