Я испытываю странное поведение с докером.
По какой-то причине службе требуется две попытки запуска на другом узле, когда я использую docker service update --availability drain myHost
на хосте, на котором эта служба работала ранее.
Когда вы делаете то же самое с docker stop containerId
, служба запускается с первой попытки.
Я не думаю, что докер отвечает за нашу службу, требующую нескольких попыток запуска, но она должна бытьиное поведение при остановке контейнеров, когда узел находится в режиме «слив» по сравнению с остановкой докера, и я надеюсь, что обнаружение этой разницы укажет мне правильное направление, чтобы найти проблему с нашими службами.
Чтобы было яснее, чем я занимаюсьЯ приведу короткий пример здесь:
- Исходная ситуация
Узел 1 (активный):
Узел 2 (активный):
docker service update --availability drain Node2
Узел 1 (активный):
- Служба 1 запущена
- Служба 2 запущена (после двух попыток запуска)
Узел 2 (сток):
docker service update --availability active Node2
Узел 1 (активный):
- Служба 1 запущена
- Служба 2 запущена (ничего не меняется, так как нет повторной балансировкибывает)
Node2 (активный):
(onNode1)$: docker stop serivce2
Node1 (активный):
Node2 (активный):
- Служба 2 запущена (после первой попытки)
То же самое происходит, если принудить службу не запускаться на узле путем добавления ограничения.
- Исходная ситуация
Узел 1 (активный):
Узел 2 (активный):
docker service update --constraint-add "node.hostname != Node2" Service2
Узел1 (активный):
- Сервис1 работает
- Сервис2 работает (после двух попыток запуска)
Узел 2 (сток):
docker service update --constraint-rm "node.hostname != Node2" Service2
Узел 1 (активный):
- Служба 1 запущена
- Служба 2 запущена (ничего не меняется, так как нет повторной балансировкибывает)
Node2 (сток):
docker service update --constraint-add "node.hostname != Node1" Service2
Node1 (активный):
Node2 (сток):
- Запуск Service2 (после двух попыток запуска)
Я не могу найти никаких документированных различий, поэтому я надеюсь, что здесь есть кто-то на stackoverflow, у которого есть идеячто делает докер по-другому.