Модуль 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
- Розміщуйте tasks на різних nodes
- Вимірюйте MTU всередині task namespace
- Видаляйте service до network
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. Перевірений результат: 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 — перевіряйте UDP 4789 і data-path address
- часткова передача — вимірюйте path MTU
- network in use — дочекайтеся видалення tasks
10. Контроль, критерії засвоєння та cleanup
- Чим overlay відрізняється від underlay?
- Навіщо потрібен VXLAN VNI?
- Чому endpoint створюється не всюди?
- Що шифрує encrypted option?
- Чому task 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