Docker роя оставляют --force - крайний срок контекста превышен - PullRequest
0 голосов
/ 07 ноября 2018

Я следую инструкциям по Docker здесь https://docs.docker.com/get-started/part3/

Когда я получаю команду docker swarm leave --force ближе к концу учебника, я получаю Error response from daemon: context deadline exceeded

Каждый раз, когда я выполняю команду docker swarm leave --force, терминал, кажется, просто зависает, он больше не выдает сообщение об ошибке, но не возвращает к приглашению ввести какие-либо команды, если я не выполню CTRL + C.

Команда docker swarm init в начале связанного руководства также не отвечает, когда она находится в этом состоянии.

Единственный раз, когда команды docker swarm снова работают, это когда я закрываю свой экземпляр VM и перезапускаю его. Но когда я повторяю шаги по ссылке, я получаю ту же ошибку в команде docker swarm leave --force

Есть идеи, зачем это делать?

Я использую Ubuntu 18.04.1 LTS в Virtual Box, с версией докера 18.09.0-rc1, сборка 6e632f7 .

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

1 Ответ

0 голосов
/ 09 ноября 2018

Ну, у меня для вас есть хорошие и плохие новости.

Я столкнулся с той же проблемой в 2016-2017 гг. При создании большой экспериментальной среды с док-роем. Мы строили многорегиональный док-рой кластер с балансировкой нагрузки DNS. Это был кластер из 50+ узлов.
Однажды наш кластер хранения ceph потерпел крах и унес с собой множество узлов роя. Когда все узлы вернулись в рабочее состояние, у меня возникли те же проблемы, которые вы описали.

Хорошие новости:
Для меня работало остановка службы докеров, перезагрузка, перезапуск докера. Все сервисы, работающие в кластере, волшебным образом появились снова, как будто ничего не произошло.

Плохие новости:
Это работало на большинстве узлов. Некоторые мастера роя так и не оправились. Эти узлы я просто уничтожил, и я просто раскрутил новые узлы, чтобы добавить в рой.

РЕДАКТИРОВАТЬ: Я выкопал несколько старых сценариев, которые я использовал для восстановления роя.

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

 mkdir /root/Backup
 cp -rf /var/lib/docker/swarm /root/Backup
 cp /root/Backup
 tar -czvf swarm.tar.gz swarm/
 scp -r user@new_host:/tmp

На новом хосте восстановить конфигурацию

cp swarm.tar /var/lib/docker
tar -xvf swarm.tar

Слить рабочие узлы

docker node update -availability drain [node]

Обновите все работающие службы

docker service update --force
...