gpt4 book ai didi

docker - 如何从 CoreOS 上的 docker 镜像中的快照恢复 etcd 集群?

转载 作者:行者123 更新时间:2023-12-02 11:31:07 27 4
gpt4 key购买 nike

我有一个 Kubernetes 集群(v1.5.6),在 vmware 上有 3 个节点的 etcd 集群(etcd 版本 3.1.5)。
此 etcd 节点在 vmware 上的 coreos 上的三个 docker 容器(在三个主机上)中运行。

我尝试使用以下解决方案备份 etcd:

docker run --rm --net=host -v /tmp:/etcd_backup -e ETCDCTL_API=3 quay.io/coreos/etcd:v3.1.5 etcdctl --endpoints=[1.1.1.1:2379,2.2.2.2:2379,3.3.3.3:2379] snapshot save etcd_backup/snapshot.db

备份已成功完成。

我想在另一个 vmware 环境中从零开始创建这个 kubernetes 集群,但我需要为此从快照恢复 etcd。

到目前为止,我还没有找到适用于 docker 容器中的 etcd 的正确解决方案。

我尝试使用以下方法恢复,但不幸的是我没有成功。

首先,我在运行以下命令后创建了一个新的 etcd 节点:
docker run --rm --net=host -v /tmp/etcd_bak:/etcd_backup -e ETCDCTL_API=3 registry:5000/quay.io/coreos/etcd:v3.1.5 etcdctl snapshot restore etcd_backup/snapshot.db --name etcd0 --initial-cluster etcd0=http://etcd0:2380,etcd1=http://etcd1:2380,etcd2=http://etcd2:2380 --initial-cluster-token etcd-cluster-1 --initial-advertise-peer-urls http://etcd0:2380

结果:
2018-06-04 09:25:52.314747 I | etcdserver/membership: added member 7ff5c9c6942f82e [http://etcd0:2380] to cluster 5d1b637f4b7740d5
2018-06-04 09:25:52.314940 I | etcdserver/membership: added member 91b417e7701c2eeb [http://etcd2:2380] to cluster 5d1b637f4b7740d5
2018-06-04 09:25:52.315096 I | etcdserver/membership: added member faeb78734ee4a93d [http://etcd1:2380] to cluster 5d1b637f4b7740d5

不幸的是,什么也没有发生。

恢复 etcd 备份的好方法是什么?

如何创建空的 etcd 集群/节点以及如何恢复快照?

最佳答案

根据 Etcd Disaster Recovery文档,您需要使用像您这样的命令从快照恢复所有三个 etcd 节点,然后使用如下命令运行三个节点:

etcd \
--name m1 \
--listen-client-urls http://host1:2379 \
--advertise-client-urls http://host1:2379 \
--listen-peer-urls http://host1:2380 &

此外,您可以从图像中提取 etcdctl,如下所示:
docker run --rm -v /opt/bin:/opt/bin registry:5000/quay.io/coreos/etcd:v3.1.5 cp /usr/local/bin/etcdctl /opt/bin

然后使用 etcdctl 恢复快照:
# ETCDCTL_API=3 ./etcdctl snapshot restore snapshot.db \
--name m1 \
--initial-cluster m1=http://host1:2380,m2=http://host2:2380,m3=http://host3:2380 \
--initial-cluster-token etcd-cluster-1 \
--initial-advertise-peer-urls http://host1:2380 \
--data-dir /var/lib/etcd

这会将快照恢复到/var/lib/etcd 目录。然后使用 docker 启动 etcd,不要忘记将/var/lib/etcd 挂载到您的容器中,并为其指定 --data-dir 。

关于docker - 如何从 CoreOS 上的 docker 镜像中的快照恢复 etcd 集群?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50825489/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com