Взаимодействие между подами в кластере Kubernetes с рабочими узлами, расположенными в разных подсетях

Вопрос или проблема

В моем кластере Kubernetes есть около 15 серверов, расположенных в 4 разных подсетях:

  1. Подсеть 1: worker-node1-3 и ingress-node1-3
  2. Подсеть 2: worker-node4-6
  3. Подсеть 3: worker-node7-9
  4. Подсеть 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. Примечательно, что сетевое соединение работает корректно, если оба пода находятся в одной подсети.

Применение

  1. Проверка и настройка CNI:

    • Убедитесь, что все рабочие узлы правильно настроены для взаимодействия с Antrea. Проверьте логи подов, связанных с Антреей, на предмет ошибок или предупреждений, которые могут указать проблемы в конфигурации сетевой инкапсуляции.
  2. Поддержка IP-адресации:

    • Подтвердите, что CIDR бог подов одинаков и корректно объявлен в Antrea и является доступным с обоих узлов.
    • Поскольку сетевая инкапсуляция типа geneve поддерживается, убедитесь в наличии правил маршрутизации, необходимых для общения между подами, находящимися в разных подсетях.
  3. Маршрутизация и правила iptables:

    • Проверьте правила iptables на каждом узле, они должны позволять проход трафика между подсетями. Убедитесь, что между Geneve-туннелями существуют необходимые правила и политики безопасности, позволяющие трафик к и от целевых IP адрессов.
  4. Маскарад и kube-proxy:

    • Хотя masqueradeAll включен, проверьте, действительно ли NAT применяется и нет ли необходимости в дополнительных конфигурациях.
  5. Диагностика с использованием инструментов:

    • Использовать команду tcpdump для исследования сетевого трафика между подами. Это поможет определить, где именно пакет "теряется".
    • Используйте traceroute для отслеживания маршрута, по которому проходят пакеты.

Проведение детальной проверки сетевых настроек и конфигурации может позволить выявить недостающие элементы или неверно настроенные параметры, которые препятствуют корректному взаимодействию между подами во всех подсетях. Надеемся, данные рекомендации помогут вам в решении возникшей проблемы.

Оцените материал
Добавить комментарий

Капча загружается...