Kubernetes:恢复 ETCD 集群的选项

问题描述 投票:0回答:1

关于保存/恢复快照,我通常执行以下操作(在我的本地节点上,而不是主节点上):

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 不会使用以前的数据恢复。

非常感谢任何指导,似乎无法在网上找到答案,因为有关该主题的内容太多,而且有很多不同的选择。

问候,

kubernetes etcd
1个回答
0
投票

我偶然发现了同样的困境:在 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” - 它们不存在。

所以,从我收集的情况来看,没有“在线恢复/网络恢复”选项(即通过网络 - 或者至少我无法找到它。

© www.soinside.com 2019 - 2024. All rights reserved.