K8S集群Etcd数据备份/恢复

embedded/2024/10/19 5:28:23/

前言:

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
#下载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.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'#重启kubelet
systemctl daemon-reload
systemctl restart kubelet#等待重启后验证节点和pod状态
kubectl get node
kubectl get pod -A
5、检查数据恢复成功,结束

http://www.ppmy.cn/embedded/40931.html

相关文章

Python sqlite3库 实现 数据库基础及应用-数据维护:请编写一个具有新增和查询两种功能的程序

目录 【第12次课】实验十数据库基础及应用2-数据维护 程序代码: 程序运行举例: 【第12次课】实验十数据库基础及应用2-数据维护 数据库文件有两张表,其中“成绩表”有三个字段:学号、课程名、成绩。请编写一个具有 新增和查询两种功能的程序: (1)当输…

M-有效算法

在赛场上,脑子就两个字“二分”,一点思路都没,完全不知道二分谁,怎么二分,从哪入手。隐隐约约也知道要变换公式,可惜没坚持这个想法。脑子里全是把k分离出来,赛后看了题解才知道,应该…

windows 10安装 docker desktop

升级 windows 10 windows 10 升级到 20H2,如 20H2 19045.4291。 注意:需返回更新,重启计算机,确保更新完整。 bios 开启虚拟化 开启cpu虚拟化功能。 windows 启用功能 启用hyper-v 启用 wsl 安装 wsl https://learn.microso…

CSS常用滤镜效果

CSS 提供了多种滤镜效果,可以通过 filter 属性应用于 HTML 元素。以下是一些常用的 CSS 滤镜效果: 一、灰度 (Grayscale) 将图像转换为灰度图像。值在 0%(原始图像)和 100%(完全灰度)之间。 filter: gra…

SpringMVC 中的常用注解和用法

Component:通用的组件注解,标识一个类为 Spring 组件,会被自动扫描并创建 Bean。(工具类)Repository:表示持久层的注解,用于标识数据访问组件。(和数据交互)Service:表示…

(done) Beam search

参考视频1:https://www.bilibili.com/video/BV1Gs421N7S1/?spm_id_from333.337.search-card.all.click&vd_source7a1a0bc74158c6993c7355c5490fc600 (beam search 视频) 参考博客1:https://jasonhhao.github.io/2020/06/19/…

Android13屏幕旋转的基本逻辑

1.问题 1.settings put system user_rotation 1是什么意思 答案:设置用户期望的屏幕转向,0代表:Surface.ROTATION_0竖屏;1代表:Surface.ROTATION_90横屏 2.设置user_rotation和GSensor哪个优先级更高,比…

驱动丹佛斯比例电磁铁放大器

驱动丹佛斯比例电磁铁是一种用于实现对液压系统连续且精确控制的通电带磁性装置。比例阀由直流比例电磁铁和液压阀两部分组成。其中,比例电磁铁是其核心部件,负责将输入的电信号转换成力和位移输出,从而控制液压阀的工作状态。比例电磁铁通过…