ETCD 恢复粒度

ETCD 恢复粒度

我正在研究一些针对 Kubernetes 和 Openshift 的备份和恢复解决方案,通常使用 Velero。因此,我不熟悉 ETCD 备份,但我想询问有关 etcd 快照恢复的粒度级别。ETCD 快照是否仅允许恢复整个集群状态?或者我们可以恢复一些特定对象,如命名空间、部署、pod、pvc 等?换句话说,ETCD 备份是否可以执行与 velero 相同的工作(除了涉及卷的内容)?

答案1

Etcd 快照和恢复不是为了部分恢复,而是全部或全部。

但是,您可以使用 etcd 快照来检索丢失的数据并在集群中重新创建它们,而无需重置 etcd。

一种方法是将 etcd 数据库恢复到工作站上的容器中。启动一个容器,例如:

docker -v $(pwd)/restore-path:/restore run --entrypoint /bin/sh -it quay.io/coreos/etcd:vX.Y.Z 

恢复快照,启动 etcd,然后查询它:

etcdctl snapshot restore /restore/snapshot.db 
etcd --name default --listen-client-urls http://localhost:2379  --advertise-client-urls http://localhost:2379 --listen-peer-urls http://localhost:2380 &
etcdctl get / --prefix --keys-only

您应该会取回存储在 etcd 中的对象列表。现在尝试找到要恢复的对象:

etcdctl get / --prefix --keys-only | grep my-object-name

etcdctl get /kubernetes.io/configmaps/my-namespace/lost-config  --print-value-only | tee -a /restore/my-lost-config.out

此输出有点混乱,因为它会随 YAML 返回一些不可打印的字符。不过,它应该足以恢复一些对象。否则,您可以查看类似 Augher (https://github.com/jpbetz/auger),它应该可以帮您清理这些问题,如果您需要一些强大的脚本来执行此类恢复,...

答案2

如果您想要以 JSON 格式备份 etcd,以便轻松恢复到任何集群,则可以使用我开发的这个简单的备份和恢复实用程序:简单-etcd-备份-恢复

此实用程序使备份和恢复过程更轻松、更快捷。您还可以压缩/解压缩备份文件并将其上传/下载到 AWS S3 存储桶。备份文件的大小也会变小。备份文件中的数据也保持可读性。

相关内容