Я запускаю в кластере GKE (1.15.12-gke.2) некоторые приложения, которым необходимо подключиться к стороннему API. Этот сторонний API имеет обязательную фильтрацию IP. Итак, чтобы получить авторизацию API, мне нужно объявить, какой общедоступный IP-адрес я буду использовать для подключения к API. Моя проблема в том, что общедоступные IP-адреса узлов GKE нестабильны при обновлении, и это предотвратит использование автомасштабирования узлов, и после каждого перезапуска узлов IP-адрес будет меняться.
Есть ли способ получить стабильный исходящий общедоступный IP-адрес на GKE?
Спасибо - Ашок Патидар
Как я сказал в своем комментарии, решение иметь статический исходящий IP-адрес в GKE
использовать Cloud NAT
.
Отказ от ответственности!
А
Cloud NAT
шлюз может выполнять NAT для узлов и модулей в частный кластер, который является типом кластера с собственным VPC.
Вы можете узнать больше о приватном GKE
кластеры по следующей официальной документации:
Также есть официальное руководство, показывающее процесс создания приватного GKE
кластер, а затем подключив его к Cloud NAT
:
Следуя приведенному выше руководству, вы можете выбрать использование ранее зарезервированного статического IP-адреса или создать новый. Это будет IP, который
GKE
узлы и поды будут использоваться при общении с "внешними".
Я запустил тест, в котором я создал приват GKE
кластер с 3 узлами. Создал поды, каждый из которых был запланирован на отдельном узле. Каждый модуль отправил пакет на удаленный сервер. Прослушивание на удаленном сервере показало, что каждый модуль, отправивший сообщение, имел один и тот же исходный IP-адрес:
tcpdump: listening on ens4, link-type EN10MB (Ethernet), capture size 262144 bytes
14:06:11.692832 IP (tos 0x0, ttl 54, id 46751, offset 0, flags [DF], proto TCP (6), length 60)
35.198.XXX.XXX.1027 > 10.168.0.2.9833: # NODE1 (POD1) TO SERVER
10.168.0.2.9833 > 35.198.154.155.1027: # REPLY TO (POD1)
35.198.XXX.XXX.2051 > 10.168.0.2.9833: # NODE2 (POD2) TO SERVER
10.168.0.2.9833 > 35.198.154.155.2051: # REPLY TO (POD2)
35.198.XXX.XXX.1538 > 10.168.0.2.9833: # NODE3 (POD3) TO SERVER
10.168.0.2.9833 > 35.198.154.155.1538: # REPLY TO (POD3)