Модуль 9 / 24
Overlay networking
Содержание
1. Цели и результат модуля
После модуля вы сможете создать изолированную overlay-сеть, объяснить VXLAN transport и encrypted mode, проверить межузловой путь и диагностировать MTU, IPAM и firewall.
- различать underlay и overlay
- читать subnet, peers и VNI
- проверять task-to-task connectivity
- обосновывать MTU и шифрование
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.
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.
4. Теория: encrypted overlay и MTU
Опция encrypted включает защиту VXLAN data plane между Linux nodes. Она добавляет накладные расходы и снижает доступный MTU. В лаборатории eth0 task имел MTU 1424 на всех nodes.
Шифрование требует CPU и измерений производительности. Оно не шифрует опубликованный клиентский HTTP и не заменяет TLS приложения.
5. Методические указания
- Сначала подтвердите underlay ping и разрешённые 7946/4789
- Создавайте сети с уникальным префиксом
- Сравните Options plain и encrypted
- Размещайте минимум по одному task на разных nodes
- Измеряйте MTU внутри task namespace
- Удаляйте service до network и учитывайте асинхронный cleanup
6. Лабораторная работа: две overlay-сети
Создайте attachable plain и encrypted networks, затем три tasks в encrypted сети. Attachable разрешает диагностические containers, но не делает сеть публичной.
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-agents7. Лабораторная работа: IPAM, peers и VNI
Сравните Options: encrypted сеть содержит encrypted и vxlanid_list. Зафиксируйте subnet, gateway и peers с data-path addresses.
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}}'8. Лабораторная работа: межузловой путь и MTU
Получите task IP на manager-3 и отправьте ICMP из task manager-1. Затем сравните task MTU на всех nodes. Проверенный результат: 3/3 ответов и MTU 1424.
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"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'
done9. Диагностика
Разделяйте отсутствие endpoint, конфликт subnet, underlay firewall и MTU black hole. Малый ping может проходить при отказе крупных пакетов.
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 между nodes — проверяйте UDP 4789 и data-path address
- частичная передача — измеряйте path MTU
- network in use — дождитесь удаления tasks
10. Контроль, критерии освоения и cleanup
- Чем overlay отличается от underlay?
- Зачем нужен VXLAN VNI?
- Почему endpoint создаётся не везде?
- Что шифрует encrypted option?
- Почему task MTU меньше underlay MTU?
- Почему service удаляют раньше network?
Модуль освоен, если вы связываете peers с cluster0, подтверждаете межузловой обмен и объясняете MTU 1424.
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