Ответ на ваш вопрос состоит из двух частей:
- Модули должны иметь индивидуальные, маршрутизируемые в кластере IP-адреса, и следует быть очень осторожным в отношении их утилизации
- Вы можете, если хотите, не использовать какую-либо программно-определяемую сеть (SDN)
Итак, что касается первой части, обычно очень сложно обеспечить достаточно большой CIDR для размещения диапазона адресов, необходимого для поддержки каждого Pod , который проходит через каждое пространство имен, и чтобы пространство было большим. достаточно, чтобы избежать повторного использования адресов в течение очень долгого времени. Таким образом, наличие SDN позволяет использовать «поддельные» адреса, о которых не нужно беспокоить «настоящую» сеть, зная о ней. Нет необходимости обновлять роутеры, нет брандмауэров, нет DHCP, что угодно.
Тем не менее, как и во второй части, вам не нужно использовать SDN: это именно то, для чего предназначен контейнерный сетевой интерфейс (CNI) *1016*. Вы можете использовать поставщика CNI, который сделает вас счастливее, в том числе статические IP-адреса или DHCP-сервер внешней сети .
Но ваш комментарий о коллизиях портов довольно высок по списку причин, по которым нельзя просто захотеть hostNetwork: true
и покончить с этим; На самом деле я не уверен, что планировщик kubernetes по умолчанию знает о hostNetwork: true
и объявленном ports:
на containers:
, чтобы избежать совместного планирования двух контейнеров, которые могут конфликтовать. Я думаю, попробуйте и посмотрите, или, еще лучше, не пытайтесь - используйте CNI, чтобы следующий бедный человек, который пытается взаимодействовать с вашим кластером, не нашел настройки снежинки.