关于保存/恢复快照,我通常执行以下操作(在我的本地节点上,而不是主节点上):
ETCDCTL_API=3 etcdctl --endpoints="https://127.0.0.1:2379" --cacert=/opt/local/ca.crt --cert=/opt/local/etcd-client.crt --key= /opt/local/etcd-client.key 快照保存 /etc/data/etcd-snapshot.db
在文档中,有两个恢复选项。
https://kubernetes.io/docs/tasks/administer-cluster/configure-upgrade-etcd/#built-in-snapshot
第一个是这样的:
ETCDCTL_API=3 etcdctl --data-dir <data-dir-location> snapshot restore snapshotdb
...如果 etcd 在您的 master 上,那么您可以将快照恢复目录复制到 master 并使用新路径更新 etcd.yaml,以便它开始使用新备份。
第二个选项是这样的:
ETCDCTL_API=3 etcdctl --endpoints="https://127.0.0.1:2379" --cacert=/opt/local/ca.crt --cert=/opt/local/etcd-client.crt --key= /opt/local/etcd-client.key 快照恢复 /etc/data/etcd-snapshot.db
我假设如果我们使用 --endpoints 和 URL 并包含证书,它将直接更新 ETCD DB,但情况似乎并非如此,因为命令运行正常,但 ETCD 不会使用以前的数据恢复。
非常感谢任何指导,似乎无法在网上找到答案,因为有关该主题的内容太多,而且有很多不同的选择。
问候,
我偶然发现了同样的困境:在 k8s 文档 中出现的内容表明可以通过网络执行恢复。至少对于
etcdctl snapshot restore
样式命令(在 etcd 3.5
之前,它们似乎已 switched 到 etcdutl
进行恢复),--endpoint
参数似乎具有零效果。
ETCDCTL_API=3 etcdctl --debug
--endpoints=https://127.0.0.1:2378
--cert=servertypo.crt
--key=servertypo.key
--cacert=catypo.crt
snapshot restore /tmp/a.db
snapshot restore
选项会在当前目录中创建一个名为default.etcd
的新目录,其中创建恢复的etcd datadir(member/
a.s.o.)。
--datadir
参数确实会更改此位置(因此,default.etd
是 --datadir
的默认值)。
--cacert
、--cert
和 --key
参数也是如此,它们似乎被完全忽略 - 如果您注意到上面,我为这三个参数添加了“typos” - 它们不存在。
所以,从我收集的情况来看,没有“在线恢复/网络恢复”选项(即通过网络 - 或者至少我无法找到它。