k8s-02-etcd备份恢复

本文详细介绍了在Kubernetes集群中如何进行etcd的备份和恢复操作,包括停止etcd及apiserver服务,数据同步,恢复数据等关键步骤,确保集群数据的安全与可用性。

## master安装etcd

cd /usr/local/share
rz

tar -zvxf etcd-v3.4.13-linux-amd64.tar.gz
rm -f etcd-v3.4.13-linux-amd64.tar.gz
vi /etc/profile
export ETCD_HOME=/usr/local/share/etcd-v3.4.13-linux-amd64
export PATH=$ETCD_HOME:$PATH

source /etc/profile

etcd -v

## 编写脚本(脚本内容见最底部)

mkdir -p /var/etcd-sh
cd /var/etcd-sh
rz
# etcd-backup.sh
# etcd-restore.sh

chmod u+x /var/etcd-sh/*.sh
/var/etcd-sh/etcd-backup.sh



## 配置定时任务

crontab -e
*/60 * * * * /var/etcd-sh/etcd-backup.sh

# 验证恢复
## 停止etcd、apiserver服务

mv /etc/kubernetes/manifests/etcd.yaml /tmp/
mv /etc/kubernetes/manifests/kube-apiserver.yaml /tmp/

docker ps |grep etcd
docker ps |grep apiserver

## 数据同步到

Kubernetes 中进行 etcd备份恢复操作是保障集群元数据安全的重要措施。etcdKubernetes 集群的核心组件之一,用于存储集群的状态信息和配置数据。因此,定期备份 etcd 数据可以防止数据丢失,并在发生故障时实现快速恢复。以下是基于 etcd v3.5.9 的备份恢复流程说明。 ### 一、etcd 备份 etcd 提供了内置的快照功能,可用于备份集群状态。以下是一个使用 `etcdctl` 命令行工具进行备份的示例: ```bash ETCDCTL_API=3 etcdctl \ --cacert=/etc/kubernetes/pki/etcd/ca.crt \ --cert=/etc/kubernetes/pki/apiserver-etcd-client.crt \ --key=/etc/kubernetes/pki/apiserver-etcd-client.key \ --endpoints=https://<etcd-host>:2379 \ snapshot save /backup/etcd-snapshot.db ``` 其中 `<etcd-host>` 是 etcd 集群的一个健康节点地址。此命令会将当前 etcd 集群的状态保存为一个快照文件 `etcd-snapshot.db`,并输出快照的哈希值、版本号、键值对数量和文件大小等信息[^2]。 为了实现自动化备份,可以使用 Kubernetes 的 CronJob 资源定期执行上述命令,确保 etcd 数据的持续保护。 ### 二、etcd 恢复 当需要恢复 etcd 数据时,可以通过 `etcdctl` 的快照恢复功能来完成。假设当前 etcd 集群已经无法正常运行,则可以使用如下命令恢复数据: ```bash ETCDCTL_API=3 etcdctl \ --cacert=/etc/kubernetes/pki/etcd/ca.crt \ --cert=/etc/kubernetes/pki/apiserver-etcd-client.crt \ --key=/etc/kubernetes/pki/apiserver-etcd-client.key \ snapshot restore /backup/etcd-snapshot.db \ --data-dir=/var/lib/etcd-from-backup ``` 此命令将快照文件 `etcd-snapshot.db` 恢复到指定的数据目录 `/var/lib/etcd-from-backup` 中。恢复完成后,需要更新 etcd 的配置文件(如 `/etc/kubernetes/manifests/etcd.yaml`),将数据目录指向新的位置,并重启 etcd 服务以应用更改。 ### 三、跨节点迁移与版本一致性 如果需要在不同节点之间迁移 etcd 数据或确保所有节点使用相同的 etcd 版本(如 v3.5.9),可以通过 `scp` 命令复制快照文件和 etcd 二进制文件: ```bash scp /backup/etcd-snapshot.db user@remote-host:/backup/ scp -r /opt/etcd-v3.5.9-linux-amd64/ user@remote-host:/opt/ ``` 此操作确保了目标节点拥有与源节点一致的 etcd 版本和数据快照,从而实现了 etcd 的跨节点迁移和版本一致性维护[^3]。 ### 四、使用 Docker 快速部署 etcd 对于测试环境或快速部署需求,可以使用 Docker 容器化方式快速启动一个带有证书的 etcd 实例。以下是一个简单的 Docker 命令示例: ```bash docker run -d \ --name etcd \ -p 2379:2379 \ -v $(pwd)/certs:/certs \ quay.io/coreos/etcd:v3.5.9 \ etcd \ --name my-etcd \ --data-dir /etcd-data \ --listen-client-urls https://0.0.0.0:2379 \ --advertise-client-urls https://localhost:2379 \ --cert-file /certs/server.crt \ --key-file /certs/server.key \ --trusted-ca-file /certs/ca.crt \ --client-cert-auth ``` 此命令启动了一个带有 TLS 证书的 etcd 容器,并监听 2379 端口。通过这种方式,可以在短时间内快速搭建起一个安全的 etcd 环境用于测试或开发目的[^4]。 ### 五、验证 etcd 快照内容 在执行备份恢复操作后,可以通过以下命令验证快照中的数据是否完整: ```bash ETCDCTL_API=3 etcdctl \ --cacert=./ca.crt \ --cert=./server.crt \ --key=./server.key \ --endpoints=localhost:2389 \ get / --prefix --keys-only ``` 此命令将列出 etcd 中的所有键,有助于确认快照中是否包含了预期的数据[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

多懂一些

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值