Добавляя статическую таблицу маршрутов на каждый узел с соответствующими правилами, контейнерная сеть также работает нормально. Например, для трех узлов с тремя разными подсетями моста докеров:
node-1(192.168.0.1):
10.0.1.1/24
node-2(192.168.0.2):
10.0.2.1/24
node-3(192.168.0.3):
10.0.3.1/24
На каждом узле добавьте следующие маршруты:
ip route add 10.0.1.0/24 via 192.168.0.1 dev eth0
ip route add 10.0.2.0/24 via 192.168.0.2 dev eth0
ip route add 10.0.3.0/24 via 192.168.0.3 dev eth0
Когда kube-proxy работает в режиме iptables, cluster-service-ip преобразуется в IP-адрес модуля и, наконец, направляется на связанный узел с помощью таблицы маршрутов.
Итак, в чем преимущество использования плагина cni по сравнению с таблицей маршрутов? Есть ли проблема с производительностью при использовании метода таблицы маршрутов?
По дизайну Kubernetes имеет плавную структуру. Поды, сервисы, узлы могут появляться и исчезать в зависимости от потребностей либо путем ручных изменений (последовательные обновления, новые развертывания), либо путем автоматического масштабирования (HPA, автоматическое масштабирование узлов). Ручная настройка жесткой сетевой структуры сводит на нет преимущества динамической среды Kubernetes.
Overlay networks are not required by default, however, they help in specific situations. Like when we don’t have enough IP space, or network can’t handle the extra routes. Or maybe when we want some extra management features the overlays provide. One commonly seen case is when there’s a limit of how many routes the cloud provider route tables can handle. For example, AWS route tables support up to 50 routes without impacting network performance. So if we have more than 50 Kubernetes nodes, AWS route table won’t be enough. In such cases, using an overlay network helps.
It is essentially encapsulating a packet-in-packet which traverses the native network across nodes. You may not want to use an overlay network since it may cause some latency and complexity overhead due to encapsulation-decapsulation of all the packets. It’s often not needed, so we should use it only when we know why we need it.
https://itnext.io/an-illustrated-guide-to-kubernetes-networking-part-2-13fdc6c4e24c
Если вы обеспокоены задержкой и накладными расходами, вызванными плагинами CNI, вот удобный Сравнительные результаты сетевых плагинов Kubernetes