docker swarm - etcd 集群不可用或配置错误

docker swarm - etcd cluster is unavailable or misconfigured

我正在尝试开始使用 docker swarm,将 etcd 用于 discovery backend。我的 etcd 服务器位于 etcd.programster.org (10.1.0.44),而我的 docker 节点位于 swarm1.programster.org (10.1.0.47)。所有机器都在我本地网络 (10.1.0.x) 上的 Virtualbox 实例上 运行ning。

我设法让我的 etcd 服务器 运行 如下:

MY_IP="10.1.0.44"

./etcd \
-name infra0 \
-initial-advertise-peer-urls http://$MY_IP:2380 \
-listen-peer-urls="http://0.0.0.0:2380,http://0.0.0.0:7001" \
-listen-client-urls="http://0.0.0.0:2379,http://0.0.0.0:4001" \
-advertise-client-urls="http://$MY_IP:2379" \
-initial-cluster-token etcd-cluster-1 \
-initial-cluster infra0=http://$MY_IP:2380 \
-initial-cluster-state new

我可以使用 curl 和 etcd 从 swarm1.programster.org 设置和检索键值。

# setting key with etcdctl
./etcdctl --peers http://etcd.programster.org:4001 set etc://etcd.programster.org/mykey "test"

# setting key with curl
curl -L \
http://etcd.programster.org:4001/v2/keys/mykey \
-XPUT -d value="test"

# retrieving key with etcdctl
./etcdctl --peers http://etcd.programster.org:4001 get etc://etcd.programster.org/mykey

# retrieving key with curl
curl -L http://etcd.programster.org:4001/v2/keys/mykey

但是,每当我 运行 基于群的命令时,例如:

docker run swarm list etcd://10.1.0.44/

docker run swarm join --advertise=10.1.0.47:2375 etcd://10.1.0.44/

我总是收到以下错误消息:

[timestamp] client: etcd cluster is unavailable or misconfigured

我是否错误地配置了我的 etcd 服务器,或者我可能需要先在 docker 节点上执行网络配置?为了简单起见,我还没有执行任何 TLS 身份验证,但如果没有这个,swarm 可能无法工作?

上下文

尝试像这样包含端口号:

docker run swarm join --advertise=10.1.0.47:2375 etcd://10.1.0.44:2379/swarm

我有同样的问题,我假设 docker 会智能地从 "etcd://" 推断端口号 - 我错了。