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

前言:

       备份重要数据,简化重复操作,让一指禅、点点点也能完成运维任务。

       脚本呈现界面如下:

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、下载安装Etcd操作命令etcdctl

#下载etcdctl
root@master:~# wget https://github.com/etcd-io/etcd/releases/download/v3.5.10/etcd-v3.5.10-linux-amd64.tar.gz
root@master:~# 
#解压缩
root@master:~# tar -zxvf etcd-v3.5.10-linux-amd64.tar.gz
root@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:~# etcdctl
NAME:
        etcdctl - A simple command line client for etcd3.

USAGE:
        etcdctl [flags]

VERSION:
        3.5.10

API VERSION:
        3.5
#创建备份目录
root@master:~# mkdir -p /data/backup/file

3、Etcd数据备份/恢复脚本

#!/bin/bash
#AUTHOR       : Created by YaoButing
#PLATFORM     : Ubuntu 20.04.6 LTS (Focal Fossa)
#VERSION      : 1.0
#DATE         : 2024-05-06
#DESCRIPTION  : This script is used to muanual backup/restore etcd data.
###############################################################################
NUMBER=100
while (($NUMBER>0))
do
    echo "                                                                    "
    echo "                         请选择需要执行的操作                         "
    echo "********************************************************************"
    echo "*                                                                  *"
    echo "*        [ 1 ]. Etcd数据备份           [ 2 ]. Etcd数据恢复           *"   
    echo "*                                                                  *"
    echo "********************************************************************"
    echo "*                         按 0 推出脚本                             *"
    read -p "请输入将要执行的动作序号:" NUMBER
    echo "                                                                    "
    echo "                                                                    "
    if (($NUMBER==1))
    then         
        echo "###########--  1  --###########  开始备份Etcd数据  ###############"
        echo " "
        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 /data/backup/etcd-snapshot-`date "+%Y-%m-%d"`.db
	    echo ""
        echo "###########--  1  --############  Etcd数据备份完毕  ##############"
	    echo " "
        echo "###########--  1  --############  验证Etcd快照  ##################"
        echo " "
        ETCDCTL_API=3 etcdctl --write-out=table snapshot status /data/backup/etcd-snapshot-`date "+%Y-%m-%d"`.db
	    echo " "	
    elif (($NUMBER==2))
    then
        echo "###########--  2  --###########  下面是现有的Etcd备份文件  ########"
	    ls /data/backup/ | sort -k 2 | nl 
        ls /data/backup/ | sort -k 2 > /data/backup/file/file.txt
        read -p "#####-----------请输入要恢复的Etcd备份文件行号:" DB
	    etcdfile=$(sed -n "${DB}p" /data/backup/file/file.txt)
        echo ""
        echo "创建恢复目录'/var/lib/etcd-restore'"
        mkdir /opt/backup
        mkdir /var/lib/etcd-restore
        mv /etc/kubernetes/manifests/kube* /opt/backup/

        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=/var/lib/etcd-restore \
	    snapshot restore /data/backup/$etcdfile
        cp /opt/backup/* /etc/kubernetes/manifests/
        mv /etc/kubernetes/manifests/etcd.yaml /etc/kubernetes/manifests/bak.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-restore'
        
        systemctl daemon-reload
        systemctl restart kubelet
	    echo ""
        echo "###########--  2  --###########  Etcd数据恢复结束  ################"
        echo ""
        echo "数据恢复已结束,但仍需等待几分钟再进行查看验证..."
    elif (($NUMBER==0))
    then
        echo "###########---        程序即将退出        ---######################"
    else
        echo "########---     输入错误,请按照指定序号输入     --------############"              
    fi  
done

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/623726.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

视频短信时代来临!发送前必知的四大关键要素

随着移动通信技术的迅猛发展,视频短信作为全新的沟通方式,正逐渐融入我们的日常生活。作为行业的先行者,邦之信已率先推出视频短信业务,并获得了市场的广泛认可。 那么,在发送视频短信时,我们需要注意哪些关…

口碑最好的麦克风品牌有哪些?多款高口碑无线领夹麦克风推荐

从直播、拍摄到采访,音频设备对于我们的生活越来越重要,想要拥有更清晰、真实的录音效果,一款优质的无线领夹麦克风肯定是必不可少的,其轻便小巧的特性,不仅适用于手机和相机的直播、录音需求,同时也能满足…

MATLAB支持向量机:函数或变量 ‘svmtrain‘ 无法识别解决方法

我的MATLAB版本是2020a,在运行程序时出现了一下报错 若在运行程序时出现了以下报错: 支持向量机程序在MATLAB执行代码的时候发现有错误。 试一下help,如下图所示,SVM_L和svmtrain均找不到。 打开matlab帮助文档: 可…

敦煌网(DHgate)商家一定要掌握的店铺流量提升技巧

流量是一个店铺的血液,没有流量的支撑,其他也都将成为浮云。流量能够成为成交量的一定保证,如何让店铺拥有傲人的流量成为我们共同努力的又一方向。 关于店铺的流量我们需要知道几个关键点: 一,主要流量的来源; 二&a…

untiy 为预制体动态加载光照贴图

unity版本为2021.8 预制体不能携带光照贴图信息,只能我们自己准备了 多方查找加自己摸索终于找到了适合新版本的解决方案,直接贴代码 将这个脚本挂到预制体的最上级 using System.Collections; using System.Collections.Generic; using UnityEditor; …

花趣短视频源码淘宝客系统全开源版带直播带货带自营商城流量主小游戏功能介绍

1、首页仿抖音短视频 ,关注 ,我的 本地 直播 可发布短视频 可录制上传 2、商城页面 广告位、淘口令识别、微信登录、淘宝登录、淘宝返佣、拼多多返佣、京东返佣、唯品会返佣、热销榜、聚划算、天猫超市、9.9包邮、品牌特卖、新人攻略 、小米有品、优惠加…

便签字号怎么改 便签字体大小调节方法

在日常工作和生活中,便签是我形影不离的助手。每当灵感闪现或是有待办事项时,我都会随手记录在便签上,它就像我生活中的记事本,帮助我安排生活和工作。 然而,每个人都有不同的视觉需求和阅读习惯,对于便签…

【Jenkins】Pipeline流水线语法解析全集 -- 声明式流水线

👨‍🎓博主简介 🏅CSDN博客专家   🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入&#xff01…

Centos7网卡启动失败(Failed to start LSB: Bring up/down)

好雨知时节 当春乃发生 随风潜入夜 润物细无声 报错内容 启动虚拟机时,Ceotos的虚拟网卡没有一起启动,导致服务无法正常使用 查询网络启动状态 systemctl status network.service报Failed to start LSB: Bring up/down 查看网络启动日志 journalctl…

pypi发布.whl文件

Profile of liguandong PyPIThe Python Package Index (PyPI) is a repository of software for the Python programming language.https://pypi.org/user/liguandong/2024年,将Python项目发布到PyPI保姆级教程 - 知乎前几天我准备上传自己开发的项目到PyPI上的时候…

Spring MVC(五) 文件上传

1 单文件上传 在程序开发中,有时候需要上传一些文件。我们在学习Servlet的时候,也做过文件上传的操作,只不过基于Servlet的文件上传操作起来过于复杂,因此所有的MVC框架都提供了自己的文件上传操作,基本上都是基于File…

从零开始学习Linux(6)----进程控制

1.环境变量 环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数,我们在编写C/C代码时,链接时我们不知道我们链接的动态静态库在哪里,但可以连接成功,原因是环境变量帮助编译器进行查找,环境变量通常具有…

简单粗暴的翻译英文pdf

背景:看书的时候经常遇到英文pdf,没有合适的翻译软件可以快速翻译全书。这里提供一个解决方案。 Step 1 打开英文pdfCTRLA全选文字CTRLC复制打开记事本CTRLV复制保存为data.txt Step 2 写一个C脚本 // ToolPdf2Html.cpp : 此文件包含 "main&quo…

【HMGD】GD32/STM32 DMA接收不定长串口数据

单片机型号:GD32F303系列 CubeMX配置 配置串口参数 开启DMA 开启中断 示例代码 使用到的变量 uint8_t RX_Buff_FLAG 0; uint8_t RX_Buff[300] {0}; uint8_t TX_Buff[300] {0};串口接收空闲函数 // 串口接收空闲函数 void HAL_UARTEx_RxEventCallback(UART_H…

Redisson中分布式锁的实现原理

redisson版本:3.27.2 简介 锁归根结底就是对同一资源的竞争抢夺,不管是在单体的应用亦或者集群的服务中,上锁都是对同一资源进行修改的操作。至于分布式锁,那就是多个服务器或资源,同时抢占某一单体应用的同个资源了。…

基于Springboot+Vue的Java项目-农产品直卖平台系统开发实战(附演示视频+源码+LW)

大家好!我是程序员一帆,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:Java毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计 &am…

AD软件针对分散的元器件归一排列

先框选 然后快捷键TOL 绿色的十字箭头选框选位置 完成

将excel表中的数据导入到navicat中

1.将excel中的表头改成英文 2.在navicat中右键表,选择【导入向导】 3.在弹出的导入向导中选择Excel文件,然后点击【下一步】 4.选择需要导入的excel,选中后,在下方会罗列出excel中的sheet,勾选需要导入的sheet&#xf…

Chromium 调试指南2024 Windows11篇-使用日志来辅助调试(八)

1. 日志:你的第一个调试工具 日志是开发者最简单也是最常用的调试工具之一,它能够提供程序运行时的详细记录。通过合理的日志记录策略,开发者可以快速定位问题发生的上下文,理解程序的运行流程和状态。 2. 如何在Chromium中使用…

QMT如何写代码获取基金数据?方法总结!

此函数被设计为只支持单一基金查询,用于获取详细的股票信息。该函数可以让您接收关于特定基金的深度信息,包括但不限于其涨跌停价格、上市日期、退市日期以及期权到期日等重要数据。这将为您提供详尽的信息,以便更好地理解并分析股票的历史和…