如何启动 ETCD docker 容器并恢复从 kubernetes ETCD 集群节点获取的备份?

如何启动 ETCD docker 容器并恢复从 kubernetes ETCD 集群节点获取的备份?

我正在尝试在 docker 中启动 ETCD 节点并恢复从 Kubernetes 集群节点获取的备份。

ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379  --user=root:'root' snapshot save snapshot.db

我已获取快照并将其下载到本地。如何恢复到已启动的 etcd 节点?

以下命令用于启动容器。我已经安装了数据卷。

docker run -d --restart always \
  -p 2379:2379 \
  -p 2380:2380 \
  --volume=etcd-volume:/etcd-data \
  --name etcd gcr.io/etcd-development/etcd:latest \
  /usr/local/bin/etcd \
  --data-dir=/etcd-data --name etcd \
  --initial-advertise-peer-urls http://127.0.0.1:2380 --listen-peer-urls 
  http://0.0.0.0:2380 \
  --advertise-client-urls http://127.0.0.1:2379 --listen-client-urls http://0.0.0.0:2379 \
  --initial-cluster etcd=http://127.0.0.1:2380

然后我尝试使用以下方法恢复它。

ETCDCTL_API=3 etcdctl snapshot restore snapshot.db \
  --name m1 \
  --initial-cluster m1=http://127.0.0.1:2379 \
  --initial-cluster-token etcd-cluster \
  --initial-advertise-peer-urls http://127.0.0.1:2379 \
  --data-dir /var/lib/docker/volumes/etcd-volume

ETCD 集群和 docker 都在两个不同的虚拟机上。我尝试从本地机器执行上述命令,因为必须在 docker 中安装 etcdctl 工具才能执行该命令。恢复尚未发生。我只需要将密钥复制到新机器上。有什么建议吗?

相关内容