Google Load Balancer未将流量传递到后端

时间:2016-04-14 15:58:54

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

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

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

我有一个相同的配置,指向一个完美运行的单个计算引擎VM。这让我相信问题可能出在容器设置而不是负载均衡器上。

有没有人对解决这个问题有任何建议?

1 个答案:

答案 0 :(得分:1)

我能够通过更改Load Balancer连接到的命名端口来解决问题。默认情况下,Load Balancer连接到命名端口“http”,它指向端口80.由于我的应用程序在端口80上提供服务,因此我的假设(总是一件坏事)是匹配的。不是这样。由于我通过NodePort暴露了容器,因此它被分配了另一个端口。这是我健康检查指向的端口。通过进入“计算引擎 - >实例组”选择组,然后选择“编辑组”,我可以更改命名端口“http”以匹配我的NodePort编号。一旦我这样做,交通开始流动。