【问题标题】:GKE cluster - can I direct traffic from global http load balancer to nginx ingress controllerGKE 集群 - 我可以将流量从全局 http 负载均衡器引导到 nginx 入口控制器吗
【发布时间】:2020-06-02 15:53:21
【问题描述】:

我正在使用 GKE,并在集群上安装了 nginx 入口控制器。 GCP 自动创建了一个 TCP 负载平衡器,以将请求从外部临时 IP 重定向到我的集群节点 (nginx)。

我在 VM 上部署了另一个 Web 应用程序,我想在 VM 和 gke 集群之间按子域平衡传入请求。为此,我创建了一个具有 2 个后端以及主机和路径规则的全局负载均衡器

我将 DNS 记录 A 配置为指向全局负载平衡器。

我可以从我的域访问虚拟机,但无法访问安装在 GKE 上的入口。

我尝试将 gke-backend 配置为实例组(节点池)和指向 TCP 负载均衡器的 Internet 网络端点组。但没有成功:-(

如何在 GCP 中平衡 VM 和 GKE 集群?

【问题讨论】:

  • 您是否调试过您的网络配置?您是否激活了流日志以查看您的 tcp 数据包发生了什么?

标签: nginx google-cloud-platform load-balancing google-kubernetes-engine nginx-ingress


【解决方案1】:

我建议您查看全局 LB 上的日志,了解以您的 GKE 集群为目的地的数据包发生了什么情况,更多信息请参阅this。如果可能,请分享任何错误或警告。

这样我们可以更好地了解正在发生的事情。

【讨论】:

    【解决方案2】:

    通常不会这样做。首先,您不能让 HTTP(S) 负载平衡器以网络负载平衡器为目标。 LB 必须指向由网络端点组或实例组组成的后端服务。

    实现此功能的唯一方法是使用包含所有当前节点的非托管实例组。然后,您可以将非托管实例组作为后端服务添加到您的 HTTP(S) LB,并将 Nginx Ingress nodePort 指定为后端端口。

    上述问题在于,当任何集群节点发生更改(扩展、缩减或因升级而被替换)时,非托管实例组不会自动更新为新节点。您需要手动使组保持最新状态。

    【讨论】:

    • 我有一个本地 k8s 集群,前面有一个 ha-proxy。 ha-proxy 在 k8s 集群和其他虚拟机之间路由传入的请求。在 GCP 上不可能做到这一点,对吧?
    • 您可以在 GKE 上执行此操作,使用内部 lb 作为 nginx 入口并配置您自己的 ha-proxy
    【解决方案3】:

    我通过使用 2 个静态 IP 和 2 个 DNS A 记录解决了我的问题,第一个 (*.mydomain) 以 k8s 集群为目标,第二个 (service.mydomain) 以我的 VM 为目标。

    这是我刚刚提出的快速解决方案

    【讨论】:

      猜你喜欢
      • 2021-04-12
      • 2020-07-29
      • 2019-08-05
      • 1970-01-01
      • 2022-01-03
      • 2022-06-11
      • 2021-03-18
      • 2019-06-28
      • 2021-05-23
      相关资源
      最近更新 更多