1

我希望我的一些GKE 部署使用公共静态 IP 来传输到 Internet 的出口流量。

这是我已经知道的可能:

  • 使用 gcp 的 nat 网关和来自集群/vpc 的 NAT ALL 公共流量
  • 创建具有 IP 转发的 GCE 实例并创建路由规则以通过 GCE 实例路由特定流量 - 选择性地进行 NAT 流量

我想避免任何一种情况,只需将保留的全局 IP 分配给 GKE 部署/pod(就像我可以将保留的 IP 分配给入口一样)。这是可能吗?

我希望来自某些 pod(部署)的出站流量使用相同的静态公共 IP,但对于大多数部署,我根本不想对它们的流量进行 NAT。

我也不能使用底层节点的公共 IP,因为我会自动缩放并且节点的 IP 可能会改变——据我所知,你不能为节点使用保留的 IP。

编辑:Azure 似乎支持我正在寻找的azure-egress https://docs.microsoft.com/en-us/azure/aks/egress。所以我可以看到至少有一个提供商为此提供了官方解决方案。我想知道 GKE 是否有类似的东西。

4

1 回答 1

4

您应该选择第二个选项 - 创建一个将用作 NAT 实例的 GCE 实例。

然后,您可以为集群中的不同节点池分配不同的网络标签,这样只有一个节点池会将其公共流量路由到您创建的 NAT 实例。
然后,您可以使用Node Taints 和 Tolerations来确保只有您要路由到该 NAT 实例的部署才会分配给您的特殊节点池中的节点。
例如,配置此 taint:traffic=nat:NoExecute并将以下容忍添加到您的部署中:

tolerations:
  - effect: NoExecute
    key: traffic
    value: "nat"
于 2020-12-02T21:03:14.043 回答