Внешний вид порта TCP / UDP с входом / выходом через тот же IP-адрес

У меня есть рабочая нагрузка в кластере GKE, и мне нужно открыть один порт с протоколами TCP и UDP извне. Сложность заключается в том, что исходящий и входящий трафик должны проходить через один и тот же внешний IP-адрес, чтобы протокол P2P работал.

В настоящее время мой кластер является общедоступным, и я использую описанный здесь трюк с hostNetwork: true https://stackoverflow.com/a/47887571/803403, но с учетом перехода на частный кластер и использования Cloud NAT. Однако я не нашел способа, как открыть этот порт в этом случае. Я попытался открыть его через ClusterIP, но в правилах брандмауэра не удалось сопоставить внешний порт с этим портом ClusterIP, так как последний не имеет сетевых тегов. И также я не уверен, могут ли правила брандмауэра применяться к облачному маршрутизатору, связанному с Cloud NAT.

У кого-нибудь есть идея?

Спасибо!


person azhurb    schedule 04.02.2021    source источник
comment
Почему вы не выставляете его с помощью LoadBalancer?   -  person guillaume blaquiere    schedule 05.02.2021
comment
Проверяя эту статью, вам нужно будет вместо этого использовать nodeport. Посмотрите, подходит ли это вашему варианту использования.   -  person Alex G    schedule 05.02.2021
comment
@guillaumeblaquiere LoadBalancer не поддерживает несколько протоколов на одном порту.   -  person azhurb    schedule 05.02.2021
comment
@AlexG, к сожалению, основным условием для nodeport является it is needed to have external IP address assigned to one of the nodes in cluster, что не относится к частному кластеру.   -  person azhurb    schedule 05.02.2021


Ответы (1)


Вы в тупике! Сегодня вы предоставляете свою службу через общедоступный IP-адрес одного из ваших узлов. Если вы перейдете в частный, у вас больше не будет публичного IP, только частный IP. Таким образом, вам нужно что-то, соединяющее частный мир и общедоступный Интернет: балансировщик нагрузки.

Однако многопротокол на одном IP (здесь TCP и UDP) изначально не поддерживается балансировщиком нагрузки Google, и вы не можете использовать балансировщик нагрузки.

Не повезло...

Примечание. Я знаю, что во внутренней сети Google Cloud ведутся обновления, но это все. Я точно не знаю, будет ли выпущен новый тип балансировщика нагрузки и нет. Может быть ... оставайтесь на связи, но этого не будет в ближайшие недели

person guillaume blaquiere    schedule 05.02.2021
comment
Я надеялся, что Cloud NAT и Cloud Router вместе с правилами брандмауэра помогут, но, видимо, это невозможно Firewall rules are applied directly to the network interfaces of Compute Engine VMs, not Cloud NAT gateways. - person azhurb; 05.02.2021
comment
Да, и NAT работает только для исходящего трафика, вы не можете добраться до своего кластера GKE с входящим запросом на IP Cloud NAT - person guillaume blaquiere; 05.02.2021