← До програми курсу

Модуль 21 / 24

Drain, обслуговування та оновлення Engine

DOCKER SWARM

Зміст
01

1. Цілі та результат модуля

Після модуля ви переведете node у drain, обслужите Engine і повернете workload зі збереженням manager quorum та HTTP-доступності.

  • виконувати preflight
  • розрізняти availability і manager status
  • обслуговувати managers послідовно
  • перевіряти capacity і rollback
02

2. Теорія: drain та manager role

Drain забороняє нові tasks і переносить service tasks. Він не демонтує manager: node бере участь у Raft, доки Engine працює.

Після stop Engine manager має Unreachable. У кластері з трьох managers обслуговують лише один одночасно, два інші зберігають quorum.

03

3. N−1 capacity та disruption budget

Два nodes мають вмістити replicas з reservations і update headroom. Три replicas тимчасово розміщуються 2+1.

Local volumes, host-mode ports і strict constraints можуть заблокувати evacuation; це перевіряють заздалегідь.

04

4. Оновлення Engine

Порівняйте installed і candidate version, release notes, API compatibility та rollback package. Candidate вже 29.8.0, тому лабораторія виконує restart без перевстановлення.

Порядок: drain, verify, package/restart, verify, active. Leader обслуговують після followers або враховують election.

05

5. Методичні вказівки

  • Зафіксуйте baseline і version
  • Перевірте disk та N−1
  • Drain один manager
  • Дочекайтеся replicas
  • Тримайте start command поруч
  • Active лише після Ready
06

6. Лабораторна робота: preflight

Перевірте quorum, placement, versions, candidate і disk.

terminal
ssh swarm-manager-3 docker node ls
ssh swarm-manager-3 docker service ls
ssh swarm-manager-3 docker service ps swarm-ingress-demo
ssh swarm-manager-1 docker version
ssh swarm-manager-1 apt-cache policy docker-ce
ssh swarm-manager-1 df -h / /var/lib/docker
07

7. Лабораторна робота: evacuation

Переведіть manager-1 у Drain. Service лишається 3/3, двадцять HTTPS-запитів мають пройти.

terminal
ssh swarm-manager-3 docker node update --availability drain swarm-manager-1
sleep 15
ssh swarm-manager-3 docker node ls
ssh swarm-manager-3 docker service ls
ssh swarm-manager-3 docker service ps swarm-ingress-demo
for n in $(seq 1 20); do curl --fail --show-error --output /dev/null https://swarm-demo.goretskiy.pro/; done
08

8. Лабораторна робота: обслуговування Engine

Зупиніть Engine після evacuation. Перевірте Unreachable зі збереженням quorum і replicas, потім запустіть Engine.

terminal
ssh swarm-manager-1 sudo systemctl stop docker
sleep 10
ssh swarm-manager-3 docker node ls
ssh swarm-manager-3 docker service ls
ssh swarm-manager-1 sudo systemctl start docker
sleep 15
09

9. Повернення та діагностика

Поверніть Active. Swarm не rebalance стабільні tasks автоматично, тому force update створює rollout для перевірки всіх nodes.

terminal
ssh swarm-manager-3 docker node update --availability active swarm-manager-1
ssh swarm-manager-3 docker service update --detach=false --force swarm-ingress-demo
ssh swarm-manager-3 docker node ls
ssh swarm-manager-3 docker service ls
ssh swarm-manager-3 docker service ps swarm-ingress-demo
curl --fail --show-error --output /dev/null https://swarm-demo.goretskiy.pro/
  • replicas менше desired — capacity або constraints
  • немає quorum — зупинено більше одного manager
  • node Down — Engine, time або ports
  • HTTP error — ingress capacity і health checks
10

10. Контроль, критерії засвоєння та cleanup

  • Що робить Drain?
  • Чому manager role зберігається?
  • Як розрахувати N−1?
  • Коли volume блокує migration?
  • Чому Active не rebalance tasks?
  • Який порядок update?

Модуль засвоєно, якщо під час Drain і restart service має 3/3, HTTP errors нуль, а всі nodes повернуті Ready/Active. Restore commands є cleanup.