我使用 Google Kubernetes Engine 来运行按需 Pod。每个 Pod 都使用 nodeport 服务公开暴露给互联网。
我正在寻找 GKE 中的一种方法来获取出站连接的单个 IP 或 IP 范围,然后将它们提供给第三方 API 以将其列入白名单。
当节点自动扩展或我升级节点时,GKE 节点 IP 不可管理。我需要一种方法来保持一致的出站 IP。
我尝试使用一个简单的 NAT 网关连接到 Kubernetes 节点(使用来自这里),虽然这会将出站连接路由到 NAT 网关,但它会中断到 pod(Nodeport 服务)的入站流量,因为它们会在 NAT 网关处被丢弃。
谷歌云区域是否有一个默认 IP 范围,我可以将其提供给第三方以列入白名单(或)
如果 GKE 提供了一种从预先保留的静态 IP 列表中选择节点外部 IP 的方法(或)
有没有其他方法可以实现拥有单个静态 IP 或代表来自 Pod 的出站流量的 IP 范围
我发现了类似的问题这,但它们没有解决我的问题,因为 pod 应该是外部可连接的,但在使用 NAT 时就会中断。
答案1
Google Cloud 现提供托管 NAT 网关服务 -云 NAT。
该网关可与 GKE 集群一起使用,为其内部的所有 pod 提供稳定的公共出口 IP,从而使它们可以被第三方服务提供商列入白名单。
此处提供了使用 Cloud NAT 与 GKE 的示例实现 -https://cloud.google.com/nat/docs/gke-example
答案2
您可以尝试这个解决方案:
https://cloud.google.com/solutions/using-a-nat-gateway-with-kubernetes-engine
正常情况下,Google Kubernetes Engine 节点会通过与其节点集群关联的互联网网关路由所有出站流量。互联网网关连接又由与节点集群关联的 Compute Engine 网络定义。集群中的每个节点都有一个临时的外部 IP 地址。在自动扩缩期间创建和销毁节点时,会自动分配新的节点 IP 地址。
默认网关行为在正常情况下运行良好。但是,您可能需要修改临时外部 IP 地址的分配方式,以便:
- 为第三方服务提供一致的外部 IP 地址。
- 监控并过滤 Google Kubernetes Engine 集群的出站流量。