【问题标题】:Google Load Balancer not passing traffic to back end谷歌负载均衡器没有将流量传递到后端
【发布时间】:2016-08-06 07:26:16
【问题描述】:

我正在尝试使用负载平衡器将流量引导到容器后端。容器中的服务在 port 80 上托管 Web 流量。我的健康检查都通过了。如果我 ssh 进入容器的 Kubernetes 主机,我可以 curl 每个容器并通过 port 80 获得正确的响应。但是,当我尝试通过负载平衡器外部 IP 访问它们时,我收到 502 响应。我有防火墙规则,允许来自130.211.0.0/22tcp:1-5000 和 NodePort 端口上的流量。我还尝试将来自 0.0.0.0/0 端口 80 和 443 的防火墙规则添加到这些节点。

在 Kubernetes 主机中,使用 tcpdump 进行捕获时,我看到对我的容器的健康检查请求,但是当我发出外部请求时没有流量通过。

我有一个相同的配置,它指向一个运行良好的 Compute Engine 虚拟机。这让我相信问题可能出在容器设置上,而不是负载均衡器上。

有人对解决这个问题有什么建议吗?

【问题讨论】:

  • 您是在使用入口对象还是手动配置负载均衡器?您可能想尝试使用入口对象并将其生成的配置与您现在拥有的配置进行比较,看看是否有明显的不同。

标签: load-balancing google-compute-engine google-cloud-platform google-kubernetes-engine


【解决方案1】:

我能够通过更改负载均衡器连接到的命名端口来解决问题。默认情况下,负载均衡器连接到命名端口“http”,该端口指向端口 80。我的假设(总是一件坏事)这是匹配的,因为我的应用程序在端口 80 上服务。不是这样。因为我通过 NodePort 暴露了容器,所以它被分配了另一个端口。这是我的健康检查指向的端口。通过进入“Compute Engine -> Instance groups”选择组,然后选择“Edit Group”,我能够更改命名端口“http”以匹配我的 NodePort 编号。一旦我这样做了,流量就开始流动了。

【讨论】:

    猜你喜欢
    • 2019-08-17
    • 1970-01-01
    • 2014-10-02
    • 1970-01-01
    • 1970-01-01
    • 2017-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多