【问题标题】:Wrong IP from GCP kubernetes load balancer to app engine's service从 GCP kubernetes 负载均衡器到应用引擎服务的 IP 错误
【发布时间】:2018-09-18 05:41:52
【问题描述】:

我在位于 GCP 上的 kubernetes 集群中的 nginx pod 遇到了一些问题,它应该能够访问位于应用引擎上的服务。

我在应用引擎中设置了防火墙规则以拒绝所有并且只允许一些 ip,但是命中我的应用引擎服务的 ip 不是我的 Nginx 负载均衡器的 IP,而是其中一个节点的 IP集群的。

一张图片胜过 1000 字,那么这是我们架构的图片:

问题是:命中应用引擎防火墙的 IP 是 IP A,而我认为我会是 IP B。每次我杀死/创建集群时,IP A 都会发生变化。如果是 IP B,我可以很容易地在 App 引擎的防火墙规则中打开这个 IP,因为我已经将她设置为静态。有人知道如何使用 IP B 而不是 IP A 吗?

谢谢

【问题讨论】:

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


    【解决方案1】:

    分配给您的 nginx“负载平衡器”的 IP 地址(很可能)不是您的 Kubernetes 集群拥有或管理的 IP。 GKE 中LoadBalancer 类型的服务使用谷歌云负载均衡器。这些是一种外部抽象,它终止 Google 前端基础架构中的入站连接,并将流量传递到集群中的各个 k8s 节点,以便继续传递到您的 k8s 托管服务。

    默认情况下,Kubernetes 集群中的 Pod 将使用其主机节点的配置将出口流量路由到集群之外。在 GKE 中,此路由对应于集群(以及扩展的 Compute Engine 实例)所在的 VPC 的网关。集群节点的公共 IP 将随着它们从池中添加和删除而改变。

    一种解决方法是使用具有静态外部 IP 的专用实例来处理离开您的 VPC 的出口流量(即来自集群的出口)。谷歌在这里有一个用于此目的的教程:https://cloud.google.com/solutions/using-a-nat-gateway-with-kubernetes-engine

    有 k8s-native 解决方案,但由于无法维护任何具有非临时公共 IP 的节点,因此这些解决方案目前不适合 GKE 上下文。

    【讨论】:

    • 谢谢@Cosmic Ossifrage,我会深入研究的。
    猜你喜欢
    • 2018-12-30
    • 1970-01-01
    • 2022-10-23
    • 2021-01-27
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2013-01-25
    • 1970-01-01
    相关资源
    最近更新 更多