Вопрос или проблема
В моем кластере Kubernetes есть около 15 серверов, расположенных в 4 разных подсетях:
- Подсеть 1: worker-node1-3 и ingress-node1-3
- Подсеть 2: worker-node4-6
- Подсеть 3: worker-node7-9
- Подсеть 4: master-node4-6
Версия Kubernetes 1.26.6.
Операционная система: RHEL 8 Вопрос:
Как настроить компоненты Kubernetes, чтобы с IP-адреса пода на worker-node7 я мог достичь пода на worker-node2?
Например:
telnet -b 10.244.15.5 10.244.13.31 9090
Где:
10.244.15.5 — это IP-адрес пода busybox (на узле worker-node7 – Подсеть 3).
10.244.13.31 — это IP-адрес пода (на узле worker-node2 – Подсеть 1) с открытым портом 9090 (используется для метрик). Дополнительная информация:
Доступ к сети: Доступ к сети открыт между подсетями. Например, трафик Geneve разрешен (nc -uzvw5 worker-node2 6081 успешно).
Плагин CNI: как плагин CNI используется Antrea с следующими измененными базовыми настройками в конфигурационном файле:
tunnelType: geneve
trafficEncapMode: “hybrid”
Переадресация IP: Переадресация IP включена на обоих узлах:
net.ipv4.ip_forward = 1
Конфигурация kube-proxy: Маскарад включен в конфигурации kube-proxy:
iptables: masqueradeAll: true
Наблюдение:
Если под busybox размещен на worker-node1 (в той же подсети, что и worker-node2), тогда соответствующее подключение telnet оказывается успешным.
Запрос о помощи:
Пожалуйста, помогите, что еще можно настроить в конфигурации?
Ответ или решение
Вопрос о межпoдовом взаимодействии в Kubernetes-кластере с рабочими узлами, расположенными в разных подсетях, требует детального рассмотрения, поскольку затрагивает особенности настройки сетевой конфигурации, особенно с учётом CNI плагина Antrea. Версия Kubernetes v1.26.6, используемая операционная система RHEL 8 и обстоятельства с открытым сетевым доступом между подсетями создают специфические условия, которые требуют определенной настройки для обеспечения надлежащего взаимодействия.
Теория
Kubernetes подразумевает, что все поды в кластере должны иметь возможность взаимной связи, независимо от того, на каких узлах они развернуты. Это достигается за счёт сетевого интерфейса (CNI), который управляет сетевыми коммуникациями между подами. В вашей конфигурации используется Antrea с tunnelType: geneve
и trafficEncapMode: "hybrid"
. Эти параметры предполагают гибридную модель инкапсуляции, где пакеты инкапсулируются только в случае необходимости.
Пример
Ваш пример касается неспособности пода на worker-node7
установить соединение с подом на worker-node2
. Примечательно, что сетевое соединение работает корректно, если оба пода находятся в одной подсети.
Применение
-
Проверка и настройка CNI:
- Убедитесь, что все рабочие узлы правильно настроены для взаимодействия с Antrea. Проверьте логи подов, связанных с Антреей, на предмет ошибок или предупреждений, которые могут указать проблемы в конфигурации сетевой инкапсуляции.
-
Поддержка IP-адресации:
- Подтвердите, что CIDR бог подов одинаков и корректно объявлен в Antrea и является доступным с обоих узлов.
- Поскольку сетевая инкапсуляция типа
geneve
поддерживается, убедитесь в наличии правил маршрутизации, необходимых для общения между подами, находящимися в разных подсетях.
-
Маршрутизация и правила iptables:
- Проверьте правила iptables на каждом узле, они должны позволять проход трафика между подсетями. Убедитесь, что между Geneve-туннелями существуют необходимые правила и политики безопасности, позволяющие трафик к и от целевых IP адрессов.
-
Маскарад и kube-proxy:
- Хотя masqueradeAll включен, проверьте, действительно ли NAT применяется и нет ли необходимости в дополнительных конфигурациях.
-
Диагностика с использованием инструментов:
- Использовать команду
tcpdump
для исследования сетевого трафика между подами. Это поможет определить, где именно пакет "теряется". - Используйте
traceroute
для отслеживания маршрута, по которому проходят пакеты.
- Использовать команду
Проведение детальной проверки сетевых настроек и конфигурации может позволить выявить недостающие элементы или неверно настроенные параметры, которые препятствуют корректному взаимодействию между подами во всех подсетях. Надеемся, данные рекомендации помогут вам в решении возникшей проблемы.