ETCD 备份和恢复 📦📦

2023年 8月 22日 101.9k 0

etcd 是一个开源的分布式键值存储,用于保存和管理分布式系统保持运行所需的关键信息。最值得注意的是,它管理流行的容器编排平台 Kubernetes 的配置数据、状态数据和元数据。

简单来说:

  • etcd 是一个键 — 值数据存储。
  • 配置数据和有关群集状态的信息位于其中。
  • 容错和分布式
  • etcd 旨在成为有关集群的最终事实来源。
  • 例如→当用户运行 “kubectl get pods” 命令时,他们从存储在 etcd 中的值中得到答案。

现在我们知道什么是 etcd 数据存储。🎇 ✨
现在让我们学习如何从备份中进行备份和还原

  • 安装 etcdctl :
    etcdctl:一个用于与 etcd 服务器交互的命令行工具

    etcdctl version

如果安装了 etcdctl,您将看到如下所示的输出:

controlplane $ etcdctl version
etcdctl version: 3.5.0
API version: 3.5

如果没有,它将给出**“找不到命令”**错误。

您可以按照此 URL 中提供的步骤安装 etcdctl。您可以找到 Linux、MacOS 和 Docker 的安装指南。

  • 获取端点和证书信息:

打开位于 :/etc/kubernetes/manifests 位置的 etcd 文件

我们可以使用以下命令检索有关端点的信息:

controlplane $ cat /etc/kubernetes/manifests/etcd.yaml | grep listen
    - --listen-client-urls=https://127.0.0.1:2379,https://172.30.1.2:2379
    - --listen-metrics-urls=http://127.0.0.1:2381

只需检查“— — 侦听客户端网址”的值。

我们可以使用以下命令获取证书信息。

controlplane $ cat /etc/kubernetes/manifests/etcd.yaml | grep file
    - --cert-file=/etc/kubernetes/pki/etcd/server.crt
    - --key-file=/etc/kubernetes/pki/etcd/server.key
    - --peer-cert-file=/etc/kubernetes/pki/etcd/peer.crt
    - --peer-key-file=/etc/kubernetes/pki/etcd/peer.key
    - --peer-trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt
    - --trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt
    seccompProfile:

只需检查“ — —* 证书**文件”、“— — 密钥文件”和“— — 受信任的文件”的值。*

如何备份 ETCD 数据存储?😈😏

现在我们有了所需的所有信息。我们可以通过使用以下命令来备份 etcd:

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 backup.db

需要把ETCDCTL_API=3** 放在命令的开头

etcdctl 用来与 etcd 对话的 API 版本可以通过 ETCDCTL_API 环境变量设置为版本 2 或 3。但是,我们需要确保它是 v3 API 的默认,以便拍摄快照。

在拍摄 etcd 的快照之前,让我们创建一个 pod 来验证。

使用以下命令:

kubectl run podbeforesnapshot --image=nginx

image.png

现在让我们运行快照保存命令并将快照另存为*“backup.db”*:

image.png

现在成功地备份了 etcd 😄
现在让我们学习恢复 ETCD 数据存储

如何从备份文件恢复 ETCD 数据存储?🤔🤔

  • 在拍摄 etcd 的快照之前,让我们创建一个 pod 来验证。

使用以下命令:

kubectl run podaftersnapshot --image=nginx

image.png

现在,我们可以继续实际恢复 etcd。
想象一下 etcd 不知何故失败了,我们需要将其恢复到上次保存的状态。我们知道我们有一个备份.db我们之前保存了备份。

  • 当我们使用 etcdctl 恢复保存的快照时,我们使用的命令和证书文件几乎与拍摄 etcd 快照时使用的命令和证书文件相同。

但是这一次,我们需要提供一个新的数据目录(“— — data-dir”),我们将在其中从备份.db数据库中复制集群数据。

ETCDCTL_API=3 etcdctl --data-dir="/var/lib/etcd-backup" 
--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 restore backup.db

image.png

  • 现在我们需要将 etcd yaml 文件中的 etcd 目录值替换为我们恢复备份.db数据存储的上述位置

**替换以下文件“/etc/kubernetes/*****manifests/etcd.yaml”***中的值:

image.png
image.png
image.png
现在我们已经成功地记录了所有值。只需给一些时间并通过运行以下命令验证整个集群:

controlplane $ kubectl get pods
NAME                READY   STATUS    RESTARTS   AGE
podbeforesnapshot   1/1     Running   0          14m

万岁!! 🥳🥳
我们已经成功地从备份.db数据存储😎😎中恢复了 etcd

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论