Я немного разбирался в этом вопросе, и мне не повезло, поэтому я решил опубликовать здесь. Короче говоря, я управляю роем Docker на Azure. Все прошло отлично и работало хорошо, пока пару дней назад.
В то время рабочим узлам не удавалось автоматически присоединиться к рою. Я могу подключиться к рабочим узлам и присоединиться "вручную" (т.е. выполнить команду docker swarm join
).
Это мой текущий рой:
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
y71cqwt9emeah5h8xihke7ev0 swarmm-agent-1395761400008N Ready Active 18.09.0
aju31jt00o83bwar9ecib47ai swarmm-agent-1395761400008R Ready Active 18.09.0
822fetitn9ipzkfnk19u1jbl5 * swarmm-master-13957614-0 Ready Active Leader 18.05.0-ce
Извиняюсь за форматирование, но, возможно, обратите внимание на ENGINE VERSION
. Это единственное, что изменилось - раньше рабочие были 18.05-ce
(сейчас они 18.09.0
).
Для фона узел Leader - это подготовленная виртуальная машина (с набором доступности), тогда как рабочие узлы взяты из предоставленной VMSS.
Если я масштабирую VMSS для добавления другой виртуальной машины, тогда VM запускается , но не присоединяется к роду. Мне нужно найти IP-адрес новой виртуальной машины в Azure Resource Explorer, ssh
по этому IP-адресу (из узла Leader) и вручную запустить команду join
(с токеном соединения, который у меня есть).
Так что, как вы можете себе представить, это далеко не идеально. И это как если бы команда соединения больше не выполнялась при запуске виртуальной машины ... но я не могу найти ничего в журналах на этот счет (ни каких ошибок).
Версия докера на ведущем узле:
Docker версия 18.05.0-ce, сборка f150324
Тогда как на узлах это:
Docker версия 18.09.0, сборка 4d60db4
Не уверен, что это как-то связано с этим, но я слышал неподтвержденный комментарий, что разные версии Docker в рое могут вызвать нестабильность.
Наконец, после того, как узел присоединился к рою, он будет периодически переходить в состояние «Вниз», прежде чем вернуться на несколько минут позже. Мне неясно, что делает узел, когда это происходит ... возможно, уйти и снова присоединиться?
Буду очень признателен за любой свет, который может пролить на него любой желающий!
Ура,
Ben
Редактировать: я понял, как просматривать журналы инициализации рабочего докера. Все хорошо (устанавливает Docker и т. Д.), Но когда узел пытается присоединиться к рою, появляется эта ошибка:
parse <ip address>:2375: first path segment in URL cannot contain colon
Выполненная команда:
docker -H <ip address>:2375 swarm join-token -q worker
Я могу присоединиться к рою вручную с помощью этой команды:
docker swarm join --token <token> <ip address>:2377