GKE中出站连接的稳定公共IP或IP范围


21

我使用Google Kubernetes引擎按需运行Pod。使用节点端口服务,每个Pod都公开暴露于Internet。

我正在GKE中寻找一种方法来获取出站连接的单个IP或IP范围,以将它们提供给第三方API以将其列入白名单。

当节点自动缩放或升级它们时,GKE节点IP是不可管理的。我需要一种方法来保持一致的出站IP。

我尝试使用一个简单的NAT网关到Kubernetes节点(使用此处的示例),尽管这会将出站连接路由到NAT网关,但由于它们在Pod(Nodeport服务)处掉线,因此会中断到Pod(Nodeport服务)的入站流量。 NAT网关。

  • 是否可以将我提供给第三方的Google云区域的默认IP范围列入白名单(或)

  • 如果GKE提供了一种从静态IP的预定列表中选择节点外部IP的方法(或)

  • 是否有其他方法可以完成一个静态IP或一个IP范围,该范围代表从Pod发出的出站流量

我发现像类似的问题这样,但使用NAT时休息,他们并没有解决我的问题,因为豆荚应该是外部连接。

Answers:


6

Google Cloud现在提供托管的NAT网关服务-Cloud NAT

该网关可以与GKE集群一起使用,该集群为其中的所有Pod提供稳定的公共出口IP,从而使它们可以被第三方服务提供商列入白名单。

使用云NAT与GKE的示例实现在这里提供- https://cloud.google.com/nat/docs/gke-example


集群必须是私有的吗?
朱斯

3
是的,群集必须是私有的,但主服务器可以是公共的。如果您的任何服务也需要公开,则它们可以由负载平衡器公开。
Parag

@Parag是否必须强制群集为私有群集?有没有办法,如果节点IP是公共的,我可以使用。
Suhas Chikkanna

1
@SuhasChikkanna与CloudNAT无关 如果您希望节点具有外部IP,但又希望有一个出站IP,则可以使用Squid创建自己的NAT网关实例,并进行条件路由,该条件路由会将内部服务器直接路由到实例,但是来自外部的任何流量都会通过NAT进入。这将为您的用户提供单个出站IP,同时使您的节点可访问选定的IP源。
Parag

@Parag听起来不错!肯定会尝试的。非常感谢:)
Suhas Chikkanna

1

您可以尝试以下解决方案:

https://cloud.google.com/solutions/using-a-nat-gateway-with-kubernetes-engine

在正常情况下,Google Kubernetes Engine节点通过与其节点群集关联的Internet网关路由所有出口流量。依次由与节点群集关联的Compute Engine网络定义Internet网关连接。群集中的每个节点都有一个临时的外部IP地址。在自动缩放过程中创建和销毁节点后,会自动分配新的节点IP地址。

默认网关行为在正常情况下运行良好。但是,您可能需要修改临时外部IP地址的分配方式,以便:

  • 为第三方服务提供一致的外部IP地址。
  • 监视和过滤Google Kubernetes Engine群集中的出口流量。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.