K8S集群Etcd数据备份/规复

打印 上一主题 下一主题

主题 682|帖子 682|积分 2046

前言:

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

1、查看使用Etcd版本

  1. root@master:~# cat /etc/kubernetes/manifests/etcd.yaml | grep image: | awk '{print $2}'
  2. registry.aliyuncs.com/google_containers/etcd:3.5.10-0
复制代码
 2、下载安装etcdctl

  1. #下载etcdctl
  2. root@master:~# wget https://github.com/etcd-io/etcd/releases/download/v3.5.10/etcd-v3.5.10-linux-amd64.tar.gz
  3. root@master:~#
  4. #解压缩
  5. root@master:~# tar -zxvf etcd-v3.5.10-linux-amd64.tar.gz
  6. root@master:~#
  7. #移进可执行程序目录
  8. root@master:~# sudo mv etcd-v3.5.10-linux-amd64/etcdctl /usr/bin/
  9. root@master:~# sudo mv etcd-v3.5.10-linux-amd64/etcdutl /usr/bin/
  10. root@master:~#
  11. #查看一下etcdctl版本
  12. root@master:~# etcdctl
  13. NAME:
  14.         etcdctl - A simple command line client for etcd3.
  15. USAGE:
  16.         etcdctl [flags]
  17. VERSION:
  18.         3.5.10
  19. API VERSION:
  20.         3.5
复制代码
二、Etcd数据备份 

1、创建备份目次

  1. #备份数据的存放目录
  2. mkdir /var/lib/etcd-backup
复制代码
2、执行备份

  1. ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \
  2. --cacert=/etc/kubernetes/pki/etcd/ca.crt \
  3. --cert=/etc/kubernetes/pki/etcd/server.crt \
  4. --key=/etc/kubernetes/pki/etcd/server.key \
  5. snapshot save /var/lib/etcd-backup/etcd-snapshot-`date "+%Y-%m-%d"`.db
复制代码
3、验证快照

  1. ETCDCTL_API=3 etcdctl --write-out=table snapshot status /var/lib/etcd-backup/etcd-snapshot-`date "+%Y-%m-%d"`.db
复制代码
 三、Etcd数据规复 

 1、创建目次并制止所有API实例

  1. #kube*配置文件临时备份目录
  2. mkdir /opt/backup
  3. #存放备份恢复后的数据工作目录
  4. mkdir /var/lib/etcd-restore
  5. #将kube*配置文件临时移到备份目录
  6. mv /etc/kubernetes/manifests/kube* /opt/backup/
复制代码
2、数据规复

  1. ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \
  2. --cacert=/etc/kubernetes/pki/etcd/ca.crt \
  3. --cert=/etc/kubernetes/pki/etcd/server.crt \
  4. --key=/etc/kubernetes/pki/etcd/server.key \
  5. #--data-dir指定数据恢复后的存放目录,如果不指定,会在执行命令的同级目录自动创建一个default.etcd目录来存放恢复的数据
  6. --data-dir=/var/lib/etcd-restore \
  7. #恢复的数据文件也可以别的目录的文件,本文为保持上下文一直,直接恢复以前备份数据
  8. snapshot restore /var/lib/etcd-backup/etcd-snapshot-`date "+%Y-%m-%d"`.db
复制代码
 3、查看验证规复数据并将配置文件复制回原目次

  1. #查看数据是否恢复到此目录
  2. ls /var/lib/etcd-restore
  3. #将之前备份的kube*配置文件移回之前目录
  4. cp /opt/backup/* /etc/kubernetes/manifests/
复制代码
4、更改Etcd配置文件并重新启动API实例

  1. #将Etcd.yaml配置文件进行备份
  2. #实际测试发现bak放在后面,恢复完成后系统有时还是识别源配置文件,所以直接将bak放在前面,让系统好区分
  3. mv /etc/kubernetes/manifests/etcd.yaml /etc/kubernetes/manifests/bak.etcd.yaml
  4. #将恢复前的数据目录替换成恢复后的数据目录配置并生成新的etcd.yaml配置文件
  5. sed 's!/var/lib/etcd!/var/lib/etcd-restore!'  /etc/kubernetes/manifests/bak.etcd.yaml > /etc/kubernetes/manifests/etcd.yaml
  6. #验证之前数据目录是否全部替换完成
  7. cat /etc/kubernetes/manifests/etcd.yaml | grep '/var/lib/etcd'
  8. #查看新目录都替换那些配置
  9. cat /etc/kubernetes/manifests/etcd.yaml | grep '/var/lib/etcd-restore'
  10. #重启kubelet
  11. systemctl daemon-reload
  12. systemctl restart kubelet
  13. #等待重启后验证节点和pod状态
  14. kubectl get node
  15. kubectl get pod -A
复制代码
5、查抄数据规复乐成,结束


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

商道如狼道

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表