我想设置一个 NAT 网关,使用云NAT https://cloud.google.com/nat/docs/overview,以便公共 GKE 集群中的 VM/Pod 使用静态 IP 地址。
我面临的问题是 NAT 网关似乎只能在虚拟机没有其他选项的情况下使用,即:
仅当流量没有其他匹配路由或路径时,GCP 才会使用 Cloud NAT 转发流量。
但在公共 GKE 集群的情况下,虚拟机具有临时外部 IP,因此它们不使用网关。
根据文档:
如果您在虚拟机的接口上配置外部 IP [...],则不会对此类数据包执行 NAT。但是,分配给接口的别名 IP 范围仍然可以使用 NAT,因为它们无法使用外部 IP 访问 Internet。
And
通过此配置,您可以通过 SSH 直接连接到 GKE 虚拟机,同时让 GKE Pod/容器使用 Cloud NAT 访问互联网。
这就是我想要的,但我不知道这里到底要设置什么。
暗示着什么alias IP ranges assigned to the interface can still use NAT
以及如何设置?
“不幸的是,目前情况并非如此。虽然 Cloud NAT 仍处于 Beta 阶段,但某些设置尚未完全到位,因此即使使用 IP 别名,Pod 仍在使用 SNAT。由于对节点 IP 的 SNAT,Pod 将不使用 Cloud NAT。”
事实上,正如帕特里克·W 上面所说,它目前并没有按照记录的那样工作。我也尝试过,并与 Kubernetes Engine 频道中 GCP Slack 小组的人员进行了交谈。他们还在测试中确认它仅适用于 GKE 私有集群。我们还没有开始使用私有集群。我找不到关于这个简单问题的可靠文档:如果我创建一个私有集群,我仍然可以在该集群中拥有公共 K8S 服务(又名负载均衡器)吗?有关私有 GKE 集群的所有文档都表明您不希望任何外部流量进入,但我们正在 GKE 集群上运行面向互联网的生产服务。
我向 GCP 支持人员提交了有关 Cloud NAT 问题的票证,他们的说法如下:
“我一直在检查您的配置,Cloud NAT 不起作用的原因是您的集群不是私有的。
要将 Cloud NAT 与 GKE 结合使用,您必须创建一个私有集群。在非私有集群中,集群的公共 IP 地址用于主节点和节点之间的通信。这就是 GKE 没有考虑您拥有的 Cloud NAT 配置的原因。
创建私有集群将允许您结合 Cloud NAT 和 GKE。
我知道我们的文档中对此还不是很清楚,我已报告对此进行了澄清并准确解释了它应该如何工作。”
我回复要求他们按照记录进行操作,而不是更改他们的文档。我正在等待他们的更新...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)