Рабочие узлы Docker не могут автоматически присоединиться к рою (Azure)
Я немного разбирался в этом вопросе, и мне не повезло, поэтому я подумал, что опубликую здесь. Коротко говоря, я управляю роем 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, чтобы добавить другую виртуальную машину, она запускается, но не присоединяется к рою. Я должен посмотреть IP-адрес новой виртуальной машины в Azure Resource Explorer, ssh
на этот IP-адрес (из узла Лидер) и вручную запустите join
команда (с токеном соединения, который у меня есть).
Так что, как вы можете себе представить, это не идеально. И это как если бы команда соединения больше не выполнялась при запуске виртуальной машины... но я не могу найти ничего в журналах на этот счет (ни каких-либо ошибок).
Версия докера на ведущем узле:
Docker версия 18.05.0-ce, сборка f150324
Тогда как на узлах это:
Докер версия 18.09.0, сборка 4d60db4
Не уверен, что это как-то связано с этим, но я слышал неподтвержденный комментарий, что разные версии Docker в рое могут вызвать нестабильность.
Наконец, после того, как узел присоединился к рою, он будет периодически переходить в состояние "Вниз", прежде чем вернуться на несколько минут позже. Мне неясно, что делает узел, когда это происходит... возможно, уйти и снова присоединиться?
Любой свет, который кто-то может пролить на это, был бы очень признателен!
Ура, Бен
Изменить: я выяснил, как просмотреть журналы инициализации рабочего докера. Все хорошо (он устанавливает 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