Многоадресный трафик в Кубернетес

Я хочу, чтобы мои модули получали сетевой многоадресный трафик, поступающий из-за пределов моего кластера kubernetes на определенные порты в моих узлах.

Я рассматриваю два решения:

  1. Добавление hostNetwork: true флаг их yaml файл вместе с hostPort Конфигурация для того, чтобы получать трафик непосредственно на модуль.
  2. Пересылка трафика локально на узлы из eth0 интерфейс к docker0 использование интерфейса iptables команда.

Метод 1 является официальной функцией в Kubernetes, но похоже на то, что он нарушает защитную стену, изначально установленную докером, и может вызвать конфликты портов с процессами хоста и т. Д.

Метод 2, с другой стороны, прозрачно перенаправляет многоадресный сетевой трафик в модули.
Несмотря на то, что я могу использовать инструмент автоматизации для распространения этой конфигурации (ansible/salt и т. Д.), Все, что настроено "вне области" Kubernetes, кажется мне немного хакерским.

Хотелось бы услышать ваши плюсы и минусы, комментарии и, возможно, другие решения проблемы многоадресной рассылки в кластер kubernetes.

1 ответ

Решение

В конце мы выбрали метод 1, так как это документированный способ достижения того, чего мы хотели, и я могу сообщить, что он работает нормально.

Более чистый способ поддержки многоадресной рассылки - добавить дополнительный интерфейс к вашим POD через multus-cni. Затем вы можете связать этот новыйmultusинтерфейс к сетевому интерфейсу вашего хоста, который будет получать многоадресный трафик на хосте. Подводя итог, у вас будет два интерфейса на вашем POD, то есть:

  1. net1 (по умолчанию) для обмена данными между модулями и другого одноадресного трафика.
  2. eth0 (multus) для многоадресного трафика.

Подробнее см. Здесь: https://github.com/intel/multus-cni/blob/master/doc/quickstart.md

Я немного поиграл с hostNetwork и понимаю ваши сомнения. Я вижу, что его включение дает моему модулю тот же IP-адрес, что и хост-узлу. Но тогда он не может связаться ни с одним из узлов (может я что-то не так сделал?).

Изменить: я определенно что-то пропустил

hostNetwork: true
dnsPolicy: ClusterFirstWithHostNet

Я добавил dnsPolicy

Итак, я сейчас пробую что-то альтернативное, работая с CNI. Все еще исследую это. Для меня это ново, поэтому я опубликую обновление, как только смогу.

Я слышал, что WeaveWorks поддерживает многоадресную рассылку: https://www.weave.works/use-cases/multicast-networking/

В выпуске github есть несколько слов о поддержке многоадресной рассылки

Другие вопросы по тегам