Многоадресный трафик в Кубернетес
Я хочу, чтобы мои модули получали сетевой многоадресный трафик, поступающий из-за пределов моего кластера kubernetes на определенные порты в моих узлах.
Я рассматриваю два решения:
- Добавление
hostNetwork: true
флаг ихyaml
файл вместе сhostPort
Конфигурация для того, чтобы получать трафик непосредственно на модуль. - Пересылка трафика локально на узлы из
eth0
интерфейс кdocker0
использование интерфейсаiptables
команда.
Метод 1 является официальной функцией в Kubernetes, но похоже на то, что он нарушает защитную стену, изначально установленную докером, и может вызвать конфликты портов с процессами хоста и т. Д.
Метод 2, с другой стороны, прозрачно перенаправляет многоадресный сетевой трафик в модули.
Несмотря на то, что я могу использовать инструмент автоматизации для распространения этой конфигурации (ansible/salt и т. Д.), Все, что настроено "вне области" Kubernetes, кажется мне немного хакерским.
Хотелось бы услышать ваши плюсы и минусы, комментарии и, возможно, другие решения проблемы многоадресной рассылки в кластер kubernetes.
1 ответ
В конце мы выбрали метод 1, так как это документированный способ достижения того, чего мы хотели, и я могу сообщить, что он работает нормально.
Более чистый способ поддержки многоадресной рассылки - добавить дополнительный интерфейс к вашим POD через multus-cni
. Затем вы можете связать этот новыйmultus
интерфейс к сетевому интерфейсу вашего хоста, который будет получать многоадресный трафик на хосте. Подводя итог, у вас будет два интерфейса на вашем POD, то есть:
net1
(по умолчанию) для обмена данными между модулями и другого одноадресного трафика.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 есть несколько слов о поддержке многоадресной рассылки