是否可以将 Cloud NAT 与公共 GKE 集群一起使用?

是否可以将 Cloud NAT 与公共 GKE 集群一起使用?

我有一个包含 2 个节点的公共 GKE 集群,以及 2 个公共外部 IP。我只想要一个出口 IP。

我想为此使用 Cloud NAT。看来这是可行的。

分配给虚拟机网络接口的别名 IP 范围:即使网络接口已分配外部 IP 地址,您也可以配置 Cloud NAT 网关,为来自接口别名 IP 范围的数据包提供 NAT。接口上的外部 IP 地址永远不会对别名 IP 地址执行一对一 NAT。

我创建了一个 Cloud NAT,但它不起作用。我使用以下命令获取 IP,它始终返回节点的其中一个 IP。

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

curl checkip.amazonaws.com

我的集群已启用 VPC 原生。

在此处输入图片描述

答案1

公共 GKE 集群将为集群内的每个节点提供一个外部 IP。

即使您创建了 NAT 配置并且可以将外部 IP 地址用于 NAT 网关,节点仍然可以通过其自己的外部 IP 访问。

为了确保仅使用 NAT 网关的外部 IP 地址,您需要将集群设为私有。

Google 有一个关于如何使用 GKE 配置示例 Cloud NAT 设置的指南:

GKE 设置示例

换句话说,如果您想通过外部 IP 地址公开 GKE 集群内运行的某些应用程序,则需要使用服务。

例如,LoadBalancer 类型的服务使您的应用可通过应用时自动创建的负载均衡器的外部 IP 地址访问服务

相关内容