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

Модуль 9 / 24

Overlay networking

DOCKER SWARM

Зміст
01

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

Після модуля ви зможете створити ізольовану overlay-мережу, пояснити VXLAN transport і encrypted mode, перевірити міжвузловий шлях та діагностувати MTU, IPAM і firewall.

  • розрізняти underlay і overlay
  • читати subnet, peers і VNI
  • перевіряти task-to-task connectivity
  • обґрунтовувати MTU та шифрування
02

2. Теорія: underlay і overlay

Underlay лабораторії — cluster0 з адресами 10.77.0.11–13. Overlay створює віртуальну L2-мережу для tasks поверх IP-зв’язності nodes. Docker інкапсулює кадри через VXLAN/UDP 4789; TCP/UDP 7946 обслуговує discovery і gossip.

Overlay subnet не має перетинатися з LAN, VPN, Docker bridge та іншими мережами. Docker виділив 10.88.1.0/24 і 10.88.2.0/24 із заданого address pool.

03

3. Теорія: control plane і network data plane

Manager зберігає network spec та IPAM allocation. На nodes локальні sandboxes і endpoints створюються, коли там є підключені tasks. Peers використовують data-path addresses 10.77.0.x.

Running task не доводить міжвузловий шлях: UDP 4789 може блокуватися окремо. Перевіряйте передачу між task IP різних nodes.

04

4. Теорія: encrypted overlay і MTU

Опція encrypted захищає VXLAN data plane між Linux nodes. Вона додає накладні витрати та зменшує доступний MTU. У лабораторії eth0 task мав MTU 1424 на всіх nodes.

Шифрування потребує CPU та вимірювання продуктивності. Воно не шифрує клієнтський HTTP і не замінює TLS застосунку.

05

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

  • Спочатку підтвердьте underlay ping і дозволені 7946/4789
  • Створюйте мережі з унікальним префіксом
  • Порівняйте Options plain та encrypted
  • Розміщуйте tasks на різних nodes
  • Вимірюйте MTU всередині task namespace
  • Видаляйте service до network
06

6. Лабораторна робота: дві overlay-мережі

Створіть attachable plain і encrypted networks, потім три tasks в encrypted мережі. Attachable дозволяє діагностичні containers, але не робить мережу публічною.

terminal
ssh swarm-manager-2 docker network create --driver overlay --attachable swarm-m09-plain
ssh swarm-manager-2 docker network create --driver overlay --attachable --opt encrypted swarm-m09-encrypted
ssh swarm-manager-2 docker service create --detach=true --name swarm-m09-agents --replicas 3 --network swarm-m09-encrypted alpine:3.22 sleep 3600
ssh swarm-manager-2 docker service ps swarm-m09-agents
07

7. Лабораторна робота: IPAM, peers і VNI

Порівняйте Options: encrypted мережа містить encrypted і vxlanid_list. Зафіксуйте subnet, gateway та peers із data-path addresses.

terminal
ssh swarm-manager-2 docker network inspect swarm-m09-plain
ssh swarm-manager-2 docker network inspect swarm-m09-encrypted
ssh swarm-manager-1 docker network inspect swarm-m09-encrypted --format '{{.Name}} {{.Driver}} {{.Scope}} {{json .Options}} {{json .IPAM.Config}}'
08

8. Лабораторна робота: міжвузловий шлях і MTU

Отримайте task IP на manager-3 і надішліть ICMP із task manager-1. Потім порівняйте task MTU. Перевірений результат: 3/3 відповідей і MTU 1424.

terminal
target_ip=$(ssh swarm-manager-3 'docker inspect --format "{{(index .NetworkSettings.Networks \"swarm-m09-encrypted\").IPAddress}}" $(docker ps -q --filter label=com.docker.swarm.service.name=swarm-m09-agents)')
source_id=$(ssh swarm-manager-1 docker ps -q --filter label=com.docker.swarm.service.name=swarm-m09-agents)
ssh swarm-manager-1 docker exec "$source_id" ping -c 3 "$target_ip"
terminal
for node in swarm-manager-1 swarm-manager-2 swarm-manager-3; do
  ssh "$node" 'id=$(docker ps -q --filter label=com.docker.swarm.service.name=swarm-m09-agents); docker exec "$id" ip link show eth0'
done
09

9. Діагностика

Розділяйте відсутність endpoint, конфлікт subnet, underlay firewall і MTU black hole. Малий ping може проходити за відмови великих пакетів.

terminal
ssh swarm-manager-2 docker network inspect swarm-m09-encrypted
ssh swarm-manager-2 docker service ps swarm-m09-agents --no-trunc
ssh swarm-manager-1 ip route
ssh swarm-manager-1 ss -lunp
ssh swarm-manager-1 journalctl -u docker --since today
  • Peers відсутні — на node може не бути endpoint
  • timeout — перевіряйте UDP 4789 і data-path address
  • часткова передача — вимірюйте path MTU
  • network in use — дочекайтеся видалення tasks
10

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

  • Чим overlay відрізняється від underlay?
  • Навіщо потрібен VXLAN VNI?
  • Чому endpoint створюється не всюди?
  • Що шифрує encrypted option?
  • Чому task MTU менший?
  • Чому service видаляють раніше network?

Модуль засвоєно, якщо ви пов’язуєте peers із cluster0, підтверджуєте міжвузловий обмін і пояснюєте MTU 1424.

terminal
ssh swarm-manager-2 docker service rm swarm-m09-agents
ssh swarm-manager-2 docker network rm swarm-m09-plain swarm-m09-encrypted
ssh swarm-manager-2 docker service ls
ssh swarm-manager-2 docker network ls --filter name=swarm-m09