ETCD备份还原

server/2024/12/25 11:10:38/

环境准备:

master     192.168.8.128

node1      192.168.8.129

k8s版本:

一:安装etcdctl工具

1.1下载安装包:

wget https://github.com/etcd-io/etcd/releases/download/v3.4.13/etcd-v3.4.13-linux-amd64.tar.gz

1.2解压:

tar xf etcd-v3.4.13-linux-amd64.tar.gz

1.3移动到sbin下:

mv etcd-v3.4.13-linux-amd64/etcdctl  /usr/local/sbin/

1.4查看版本:

etcdctl version

二:开始备份

2.1首先查看所需要的认证文件:

kubectl describe pod etcd-k8smaster -n kube-system  #查看etcd pod的详细信息

2.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 /etcd-backup/etcddata_$(date +%F-%T).db

/etcd-backup/etcddata_$(date +%F-%T).db   #指向备份到哪里以及定义名字 

# --cacert= 后面的文件就是上面截图中--trusted-ca-file=后面的文件    

# --cert=后面的文件就是上面截图中--cert-file=后面的文件

#--key=后面的文件就是上面截图中--key-file=后面的文件

  • /etc/kubernetes/pki/ca.crt:CA 证书,用于验证 etcd 服务器的身份。
  • /etc/kubernetes/pki/etcd/server.crtetcd 服务器的客户端证书。
  • /etc/kubernetes/pki/etcd/server.keyetcd 服务器的私钥。

可以看到已经备份成功。

三:恢复

3.1恢复之前先查看一下现有的pod:

kubectl  get  pod

删除这三个pod,模拟意外丢失

kubectl   delete  deploy  test   #这三个pod是由deployment控制器创建的所以直接删除test控制器

已经删除。

3.2开始恢复

恢复之前要停止apiserver controller-manager  scheduler  etcd这些组件

原因:可以防止在恢复操作期间对 etcd 进行的任何写入操作,从而确保恢复过程的准确性和完整性。

由于etcd是通过静态Pod方式部署的,你可以通过重命名/etc/kubernetes/manifests/目录来停止所有由该目录下的YAML文件启动的服务

 mv /etc/kubernetes/manifests/* /opt/backup/    #移动到其他目录

这时显示无法和apiserver建立连接了说明已经停止了。

etcd的数据目录改名备份一下:

[root@k8smaster1 etcd-backup]# mv /var/lib/etcd /var/lib/etcd-bakcup
原因: 一会恢复的话会指定恢复的目录,以防止会冲突

现在我们就可以进行恢复了

ETCDCTL_API=3 etcdctl snapshot restore /etcd-backup/etcddata_2024-12-19-16\:43\:45.db --name etcd-master01 --data-dir /var/lib/etcd --initial-cluster etcd-master01=https://192.168.8.128:2380 --initial-cluster-token etcd-cluster-token --initial-advertise-peer-urls https://192.168.8.128:2380

  • /etcd-backup/etcddata_2024-12-19-16:43:45.db:这是备份文件的路径。

  • --name etcd-master01:指定 etcd 实例的名称。

  • --data-dir /var/lib/etcd:指定 etcd 数据存储的目录,就是我们上面改名的目录。

  • --initial-cluster etcd-master01=https://192.168.8.128:2380:设置 etcd 的初始集群集信息,包括 etcd 服务器的地址。

  • --initial-cluster-token etcd-cluster-token:指定用于加入集群集的令牌(token)。这个令牌用于验证加入集群的 etcd Pod。

  • --initial-advertise-peer-urls https://192.168.8.128:2380:设置 etcd Pod 作为集群集成员时,其他 etcd Pod 如何发现并与之通信的初始对等 URL。

执行完之后需要将之前转移走的yaml文件转移回之前的目录:

mv /opt/backup/*  /etc/kubernetes/manifests/

查看pod

kubectl   get  pod

可以看到已经恢复成功了,原先我们删除的pod也回来了


http://www.ppmy.cn/server/153027.html

相关文章

用于汽车碰撞仿真的 Ansys LS-DYNA

使用 Ansys LS-DYNA 进行汽车碰撞仿真汽车碰撞仿真 简介 汽车碰撞仿真是汽车设计和安全工程的一个关键方面。这些仿真使工程师能够预测车辆在碰撞过程中的行为,从而有助于改进安全功能、增强车辆结构并符合监管标准。Ansys LS-DYNA 是一款广泛用于此类仿真的强大工具…

国自然联合项目|影像组学智能分析理论与关键技术|基金申请·24-12-25

小罗碎碎念 该项目为国自然联合基金项目,执行年限为2019年1月至2022年12月,直接费用为204万元。 项目研究内容包括影像组学分析、智能计算、医疗风险评估等,旨在通过模拟医生诊断过程,推动人工智能在医疗领域的创新。 项目取得了…

命令行音乐库管理工具Beets

什么是 Beets ? Beets 是一个音乐库管理系统和音乐文件元数据标签编辑器。它使用 MusicBrainz 数据库来自动填充音乐文件的元数据信息,并且可以通过插件系统来增加各种额外功能,比如自动下载专辑封面,歌词等。其目的是使您的音乐收…

深度学习解pde,心电图一般的损失。。

在机器学习和深度学习中,损失突然增加可能有多种原因。以下是一些常见的原因以及如何应对它们: 权重初始化不当:如果网络层的权重没有被正确地初始化,可能会导致训练不稳定,甚至发散。常见的解决方案包括使用Xavier/Gl…

【1224】C选填(字符串\0占大小,类大小函数调用,const定义常量,逗号表达式取尾,abs返回值

1.设有数组定义: char array[]"China"; 则数组array所占的存储空间为__________ 6 注意要加上\0的位置 数组中考虑‘\0’,sizeof()判断大小也要考虑‘\0’ 2.初始化数组char[] strArray"kuai-shou",strArray的长度为(&am…

Scala图书管理系统

项目创建并实现基础UI package org.appimport scala.io.StdInobject Main {def main(args: Array[String]): Unit {var running truewhile (running) {println("欢迎来到我的图书管理系统,请选择")println("1.查看所有图书")println("2…

springboot482基于springboot的车辆违章信息管理系统(论文+源码)_kaic

摘 要 使用旧方法对车辆违章信息管理系统的信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在车辆违章信息管理系统的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不能及时纠正等问题。这次…

[Unity Shader]【游戏开发】【图形渲染】 Shader数学基础5-方阵、单位矩阵和转置矩阵

在计算机图形学和Shader编程中,矩阵运算是非常基础的数学工具。本篇文章主要介绍以下内容: 方阵(Square Matrix)单位矩阵(Identity Matrix)转置矩阵(Transpose Matrix)以下将逐一展开讲解。 一、方阵 定义:方阵是指行数与列数相等的矩阵。在三维渲染中,最常用的方阵…