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

news2025/2/27 23:00:47

前言:

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

       脚本呈现界面如下:

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

企业运维背后的故事:TASKCTL带你了解日常工作与技术演进

今天,作为一名经验丰富、从业多年经常与运维人员打交道的人,我想与大家聊聊运维的日常工作、部门协调以及未来发展,希望能为即将转行或正在从事运维工作的你,提供一些新的视角和启发。 运维的日常工作:挑战与乐趣并存 …

【密评】 | 商用密码应用安全性评估从业人员考核题库(11)

字母频率分析法对()算法最有效。 A.置换密码 B.单表代换密码 C.多表代换密码 D.序列密码 GM/Z4001《密码术语》中,保证信息不被泄露给非授权的个人、进程等实体的性质称为密码的()。 A.真实性 B.完整性 C.机密性 D.不…

LCD和OLED的区别

这里写目录标题 什么是LCD?什么是LED/OLEDLED和OLED的发光原理LCD的缺陷OLED屏幕的优势OLED屏幕的劣势 什么是LCD? LCD 英文全称 Liquid Crystal Display ,中文翻译为液晶显示器。LCD 的构造是在两片平行的玻璃基板当中放置液晶盒&#xff0…

Visual Studio Community : The prerelease has expired

最近使用旧版的离线安装包安装社区版Visual Studio2022(Visual Studio Community 2022),安装完成后显示:The prerelease has expired。使用自己的微软账号登录还是一样的情况,只能强制退出。经过摸索后发现了一个解决方…

tab 滑动小案例

效果&#xff1a; 代码&#xff1a; <template><view class"content"><view class"tab"><view v-for"(item,index) in dataList" :key"index" class"tab_item" click"slideTab(index)">…

爱普生MCU系列语音芯片S1C31D41

随着科技的发展和产品的集成化&#xff0c;语音芯片已经逐渐替代了多种语音设备应用在各场合。语音芯片主要特性是功耗低&#xff0c;抗干扰能力强&#xff0c;外围器件少&#xff0c;控制简单&#xff0c;语音保存时间久(某些语音芯片可以保存内容100年)&#xff0c;掉电不丢失…

java 解决跨域时遇到问题,怎么来做一个跨域环境

今天遇到一个问题&#xff1a; 关于#java#的问题&#xff1a;java 解决跨域时遇到问题&#xff1a;为什么跨域访问时配置的CorsFilter没有进入&#xff1f;直接访问请求地址时进入了配置的CorsFilter 由于没有实际的跨域环境&#xff0c;因此打算在本机建一个跨域环境&#xff…

钉钉对接打通金蝶云星空获取流程实例(宜搭)接口与付款单新增接口

钉钉对接打通金蝶云星空获取流程实例&#xff08;宜搭&#xff09;接口与付款单新增接口 对接系统钉钉 钉钉&#xff08;DingTalk&#xff09;是阿里巴巴集团专为中国企业打造的免费沟通和协同的多端平台&#xff0c;提供PC版&#xff0c;Web版和手机版&#xff0c;有考勤打卡、…

如何安全高效地进行4S店文件分发,保护核心资产?

4S店与总部之间的文件分发是确保双方沟通顺畅、信息共享和决策支持的重要环节。4S店文件分发涉及到以下文件类型&#xff1a; 销售报告&#xff1a;4S店需要定期向总部提交销售报告&#xff0c;包括销售数量、销售额、市场份额等关键指标。 库存管理文件&#xff1a;包括车辆库…

HTML满屏漂浮爱心

目录 写在前面 满屏爱心 代码分析 系列推荐 写在最后 写在前面 小编给大家准备了满屏漂浮爱心代码&#xff0c;一起来看看吧~ 满屏爱心 文件heart.svg <svg xmlns"http://www.w3.org/2000/svg" width"473.8px" height"408.6px" view…

SpringBoot设置默认文件大小

1、问题发现 有个需求&#xff0c;上传文件的时候&#xff0c;发现提示了这个错误&#xff0c;看了一下意思是说&#xff0c;文件超过了1M。 看我们文件的大小&#xff1a; 发现确实是&#xff0c;文件超出了1M&#xff0c;查了一下资料&#xff0c;tomcat默认上传文件大小为1M…

什么是工具? 从语言模型视角的综述

24年3月CMU和上海交大的论文“What Are Tools Anyway? A Survey from the Language Model Perspective”。 到底什么是工具&#xff1f; 接下来&#xff0c;工具在哪里以及如何帮助语言模型&#xff1f; 在综述中&#xff0c;对语言模型使用的外部程序工具进行了统一定义&…

天机学堂—项目总览和基建

总览 天机学堂是一个基于微服务架构的生产级在线教育项目。 项目亮点 技术架构 环境搭建 为了模拟真实开发环境&#xff0c;我们准备了一台虚拟机&#xff0c;在其中安装了各种各样的公共服务和组件。 Jenkins 是一个开源的持续集成&#xff08;Continuous Integration&…

【opencv】信用卡号识别实验

实验环境&#xff1a;anaconda、jupyter notebook&#xff08;其它的ide也行&#xff09; 实验用的包&#xff1a;numpy、matplotlib、opencv 实验目标&#xff1a; 识别信用卡的卡号 信用卡图片&#xff1a; 数字模板图片&#xff1a; 一、包引入 import cv2 import matplo…

02-WPF_基础(一)

1、基础 各模块类型 链接&#xff1a;如何&#xff1a;向 Viewbox 的内容应用 Stretch 属性 - WPF .NET Framework | Microsoft Learn WPF基础以及事件绑定与数据绑定的情况&#xff0c;&#xff0c;在学习XAML&#xff0c;数据结构以及一个项目学习平台来练手&#xff0c;网络…

windows10安装WSL2及使用

1、安装 安装步骤见官网&#xff1a;https://learn.microsoft.com/zh-cn/windows/wsl/install-manual 2、调整WSL占用内存和空间 装完WSL后&#xff0c;查看任务管理器时发现vmmem进程占用内存过高。WSL内存默认值是电脑内存的一半&#xff0c;CPU默认值是电脑处理器个数&am…

vue3 中 使用 antd中的select 组件的带搜索框 展开后可对选项进行筛选搜索功能

鼠标进入以后下拉显示&#xff1a; 输入字符串以后&#xff1a; 可以看出对数据进行了筛选。 具体代码&#xff1a; 结构上&#xff1a;<a-selectv-model:value"formState.formFlow"show-searchallowClearplaceholder"输入选择流程":options"op…

生产透明化,交付无烦恼

生产进度总延误 质量把控总失守 计划赶不上变化 沟通不畅易误解 ...... 这些问题可能在一些工厂管理中几乎每天都在上演。 在如今快速变化的市场环境中&#xff0c;企业的生产效率和交付能力成为了衡量其竞争力的关键指标。而要实现高效、准确的生产和交付&#xff0c;透明化的…

无人机的用途

无人机&#xff0c;即无人驾驶飞机&#xff0c;其用途广泛且多样&#xff0c;涉及到多个领域。 在农业领域&#xff0c;无人机通过搭载各种传感器和相机&#xff0c;可以对农田进行空中巡视&#xff0c;收集农田数据&#xff0c;如土壤含水量、气温、湿度等&#xff0c;以及植…

《一》Word文字编辑软件---架构设计分析

1&#xff0c;简单介绍 今天&#xff0c;我们来模拟offic软件中的word文档&#xff0c;运行如图&#xff1a; 运行程序后会出现主界面&#xff0c;顶端的菜单栏包括“文件”“编辑”“格式”“窗口”和“帮助五个主菜单。 菜单栏下面是工具栏&#xff0c;包含了系统常用的功能按…