傻瓜化备份/恢复K8S集群Etcd数据

打印 上一主题 下一主题

主题 538|帖子 538|积分 1614

媒介:

       备份告急数据,简化重复操纵,让一指禅、点点点也能完成运维使命。
       脚本呈现界面如下:

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、下载安装Etcd操纵命令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
  21. #创建备份目录
  22. root@master:~# mkdir -p /data/backup/file
复制代码
3、Etcd数据备份/恢复脚本

  1. #!/bin/bash
  2. #AUTHOR       : Created by YaoButing
  3. #PLATFORM     : Ubuntu 20.04.6 LTS (Focal Fossa)
  4. #VERSION      : 1.0
  5. #DATE         : 2024-05-06
  6. #DESCRIPTION  : This script is used to muanual backup/restore etcd data.
  7. ###############################################################################
  8. NUMBER=100
  9. while (($NUMBER>0))
  10. do
  11.     echo "                                                                    "
  12.     echo "                         请选择需要执行的操作                         "
  13.     echo "********************************************************************"
  14.     echo "*                                                                  *"
  15.     echo "*        [ 1 ]. Etcd数据备份           [ 2 ]. Etcd数据恢复           *"   
  16.     echo "*                                                                  *"
  17.     echo "********************************************************************"
  18.     echo "*                         按 0 推出脚本                             *"
  19.     read -p "请输入将要执行的动作序号:" NUMBER
  20.     echo "                                                                    "
  21.     echo "                                                                    "
  22.     if (($NUMBER==1))
  23.     then         
  24.         echo "###########--  1  --###########  开始备份Etcd数据  ###############"
  25.         echo " "
  26.         ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \
  27.         --cacert=/etc/kubernetes/pki/etcd/ca.crt \
  28.         --cert=/etc/kubernetes/pki/etcd/server.crt \
  29.         --key=/etc/kubernetes/pki/etcd/server.key \
  30.         snapshot save /data/backup/etcd-snapshot-`date "+%Y-%m-%d"`.db
  31.             echo ""
  32.         echo "###########--  1  --############  Etcd数据备份完毕  ##############"
  33.             echo " "
  34.         echo "###########--  1  --############  验证Etcd快照  ##################"
  35.         echo " "
  36.         ETCDCTL_API=3 etcdctl --write-out=table snapshot status /data/backup/etcd-snapshot-`date "+%Y-%m-%d"`.db
  37.             echo " "       
  38.     elif (($NUMBER==2))
  39.     then
  40.         echo "###########--  2  --###########  下面是现有的Etcd备份文件  ########"
  41.             ls /data/backup/ | sort -k 2 | nl
  42.         ls /data/backup/ | sort -k 2 > /data/backup/file/file.txt
  43.         read -p "#####-----------请输入要恢复的Etcd备份文件行号:" DB
  44.             etcdfile=$(sed -n "${DB}p" /data/backup/file/file.txt)
  45.         echo ""
  46.         echo "创建恢复目录'/var/lib/etcd-restore'"
  47.         mkdir /opt/backup
  48.         mkdir /var/lib/etcd-restore
  49.         mv /etc/kubernetes/manifests/kube* /opt/backup/
  50.         ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \
  51.         --cacert=/etc/kubernetes/pki/etcd/ca.crt \
  52.         --cert=/etc/kubernetes/pki/etcd/server.crt \
  53.         --key=/etc/kubernetes/pki/etcd/server.key \
  54.         --data-dir=/var/lib/etcd-restore \
  55.             snapshot restore /data/backup/$etcdfile
  56.         cp /opt/backup/* /etc/kubernetes/manifests/
  57.         mv /etc/kubernetes/manifests/etcd.yaml /etc/kubernetes/manifests/bak.etcd.yaml
  58.         sed 's!/var/lib/etcd!/var/lib/etcd-restore!'  /etc/kubernetes/manifests/bak.etcd.yaml > /etc/kubernetes/manifests/etcd.yaml
  59.         cat /etc/kubernetes/manifests/etcd.yaml | grep '/var/lib/etcd-restore'
  60.         
  61.         systemctl daemon-reload
  62.         systemctl restart kubelet
  63.             echo ""
  64.         echo "###########--  2  --###########  Etcd数据恢复结束  ################"
  65.         echo ""
  66.         echo "数据恢复已结束,但仍需等待几分钟再进行查看验证..."
  67.     elif (($NUMBER==0))
  68.     then
  69.         echo "###########---        程序即将退出        ---######################"
  70.     else
  71.         echo "########---     输入错误,请按照指定序号输入     --------############"              
  72.     fi  
  73. done
复制代码




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

使用道具 举报

0 个回复

正序浏览

快速回复

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

本版积分规则

民工心事

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

标签云

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