我正在为Kubernetes和Openshift研究一些备份和恢复解决方案,通常使用Velero。因此,我不熟悉ETCD备份,但我想问一下etcd快照恢复的粒度级别。ETCD快照只允许还原整个集群状态吗?或者我们可以恢复一些特定的对象,如名称空间、部署、pod、pvc等等?另一种方式是,ETCD备份是否可以与velero执行相同的任务(除了与卷有关的内容)?
发布于 2022-08-25 21:35:12
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)之类的东西,它应该会为您清除这些问题,如果您需要一些健壮的脚本,比如恢复,.
发布于 2022-10-31 16:27:00
如果您想采用JSON格式的etcd备份,可以轻松地还原到任何集群,可以使用我开发的简单备份和还原实用程序:简单-etcd-备份-恢复
此实用程序使备份和恢复过程更容易和更快。您还可以压缩/解压缩备份文件,并将其上载/下载到/从AWS S3桶中下载。备份文件的大小也会变小。备份文件中的数据也保持可读性。
https://serverfault.com/questions/1109113
复制相似问题