【问题标题】:Is it possible to assign a reserved public IP to a GKE deployment for egress traffic?是否可以为 GKE 部署分配保留的公共 IP 以用于出口流量?
【发布时间】:2020-12-02 19:10:47
【问题描述】:

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

这是我已经知道的可能:

  • 使用 gcp 的 nat 网关和 NAT 来自集群/vpc 的所有公共流量
  • 使用 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 是否有类似的东西。

【问题讨论】:

    标签: google-cloud-platform google-kubernetes-engine google-vpc


    【解决方案1】:

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

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

    tolerations:
      - effect: NoExecute
        key: traffic
        value: "nat"
    

    【讨论】:

    • 如果这是目前唯一的方法,那就太可惜了。我可以看到至少 Azure 似乎正式支持我通过他们的azure-egress 服务寻找的东西:docs.microsoft.com/en-us/azure/aks/…
    • 我不熟悉 Azure,但根据您提到的链接,网络架构与 GCP 有很大不同。无论如何,我认为至少目前在 GKE 中没有其他方法可以做到这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-15
    • 1970-01-01
    • 2017-05-07
    • 2019-04-24
    • 1970-01-01
    • 2021-10-30
    • 2020-06-01
    相关资源
    最近更新 更多