Назад | Перейти на главную страницу

Можно ли использовать Cloud NAT с общедоступным кластером GKE?

У меня есть один общедоступный кластер GKE с двумя узлами и двумя общедоступными внешними IP-адресами. Мне нужен только один исходящий IP-адрес.

Я хочу использовать для этого Cloud NAT. Кажется, это возможно.

Псевдоним диапазона IP-адресов, назначенный сетевому интерфейсу виртуальной машины: даже если сетевому интерфейсу назначен внешний IP-адрес, вы можете настроить шлюз Cloud NAT для обеспечения NAT для пакетов, источники которых поступают из псевдонима диапазона IP-адресов интерфейса. Внешний IP-адрес на интерфейсе никогда не выполняет однозначный NAT для псевдонимов IP-адресов.

Я создал Cloud NAT, но он не работает. Я использую следующие команды для получения IP-адреса, и он всегда возвращает один из IP-адресов узлов.

kubectl run -i --tty get-ip-address --image=dwdraju/alpine-curl-jq --restart=Never

и

curl checkip.amazonaws.com

В моем кластере включен собственный VPC.

Публичный кластер GKE предоставит внешний IP-адрес каждому узлу внутри кластера.

Даже если вы создаете конфигурацию NAT и можете использовать внешние IP-адреса для шлюза NAT, узлы по-прежнему будут доступны по его собственному внешнему IP-адресу.

Чтобы обеспечить использование только внешних IP-адресов для шлюза NAT, вам необходимо сделать кластер частным.

У Google есть руководство по настройке образца Cloud NAT с помощью GKE:

Пример настройки GKE

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

Например, служба типа LoadBalancer делает ваше приложение доступным через внешний IP-адрес вашего балансировщика нагрузки, который создается автоматически при применении обслуживание