Использование Weave Net Docker Swarm Adapter, чтобы сервисы могли общаться - PullRequest
1 голос
/ 31 января 2020

У меня есть Docker Swarm настройки кластера следующим образом:

Настройка на узле 1

docker swarm init --advertise-addr ${NODE_1_IP} --data-path-port=7789

Настройка на узле 2

docker swarm join --advertise-addr ${NODE_2_IP} --token XXX ${NODE_1_IP}:2377

У меня есть тогда установил переплетение на обоих узлах следующим образом.

sudo curl -L git.io/weave -o /usr/local/bin/weave
sudo chmod a+x /usr/local/bin/weave

docker plugin install weaveworks/net-plugin:latest_release
docker plugin disable weaveworks/net-plugin:latest_release

docker plugin set weaveworks/net-plugin:latest_release WEAVE_PASSWORD=XXX
docker plugin enable weaveworks/net-plugin:latest_release

Я хотел установить пароль, потому что мне нужно, чтобы сеть была зашифрована. Затем я настроил сеть и сервис. Из-за этого ограничения служба состоит из одного контейнера, работающего на узле 2.

docker network create --driver=weaveworks/net-plugin:latest_release --attachable testnet_weave_encrypted

docker service create --network=testnet_weave_encrypted --name web_encrypted --publish 80 --replicas=1  --constraint 'node.labels.datastore001 == true' nginx:latest

Наконец, я проверяю его в другом контейнере, работающем на узле 1:

docker run --rm --name alpine --net=testnet_weave_encrypted -ti alpine:latest sh
apk add --no-cache curl
curl web_encrypted

Это происходит с сообщением:

curl: (7) Failed to connect to web_encrypted port 80: Host is unreachable

Я знаю, что web_encrypted не является неправильным, потому что, когда я пытаюсь использовать другое значение, я получаю другую ошибку.

После нескольких часов ударов головой об эту стену я обнаружил, что могу выполните следующие действия на узле 1:

curl web_encrypted.1.lsrdyz8n66jdotaqgdzk9u1uo

И это работает!

Но, конечно, это бесполезно для меня, поскольку точное имя контейнера будет меняться каждый раз, когда служба его воссоздает.

Это ошибка в плагине weave или я пропустил шаг в настройке?

...