我在 GKE 集群 (1.15.12-gke.2) 中运行一些需要连接到第三方 API 的应用程序。此第三方 API 具有强制 IP 过滤。因此,为了获得 API 授权,我需要声明我将用于连接到 API 的公共 IP。我的问题是 GKE 节点的公共 IP 在升级过程中不稳定,这会阻止使用节点自动扩展,并且每次节点重启后 IP 都会发生变化
有没有办法在 GKE 上获得稳定的出站公共 IP?
谢谢-Ashok Patidar
答案1
正如我在评论中所说,拥有静态出站 IP 的解决方案GKE
是使用Cloud NAT
。
免责声明!
网关
Cloud NAT
可以对网络中的节点和 Pod 执行 NAT私人的集群,一种 VPC 原生集群。
GKE
您可以通过以下官方文档了解有关私有集群的更多信息:
还有官方指南展示了创建私有GKE
集群然后将其连接的过程Cloud NAT
:
按照上述指南,您可以选择使用以前保留的静态 IP 地址或创建一个新的 IP 地址。
GKE
这将是节点和 pod 与“外部”通信时使用的IP。
我运行了一个测试,其中我生成了GKE
具有 3 个节点的私有集群。创建了 pod,每个 pod 都调度到不同的节点上。每个 pod 都向远程服务器发送了一个数据包。在远程服务器上监听显示,发送消息的每个 pod 都有相同的源 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)