Разное поведение при остановке контейнера (остановка докера и слив) - PullRequest
0 голосов
/ 28 мая 2018

Я испытываю странное поведение с докером.

По какой-то причине службе требуется две попытки запуска на другом узле, когда я использую docker service update --availability drain myHost на хосте, на котором эта служба работала ранее.

Когда вы делаете то же самое с docker stop containerId, служба запускается с первой попытки.

Я не думаю, что докер отвечает за нашу службу, требующую нескольких попыток запуска, но она должна бытьиное поведение при остановке контейнеров, когда узел находится в режиме «слив» по ​​сравнению с остановкой докера, и я надеюсь, что обнаружение этой разницы укажет мне правильное направление, чтобы найти проблему с нашими службами.

Чтобы было яснее, чем я занимаюсьЯ приведу короткий пример здесь:

  1. Исходная ситуация

Узел 1 (активный):

  • Служба 1 работает

Узел 2 (активный):

  • Сервис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 (активный):

  • Service1 Работает

Node2 (активный):

  • Служба 2 запущена (после первой попытки)

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

  1. Исходная ситуация

Узел 1 (активный):

  • Служба 1 работает

Узел 2 (активный):

  • Service2 работает
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 (активный):

  • Service1 Работает

Node2 (сток):

  • Запуск Service2 (после двух попыток запуска)

Я не могу найти никаких документированных различий, поэтому я надеюсь, что здесь есть кто-то на stackoverflow, у которого есть идеячто делает докер по-другому.

...