0

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

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

我有一个完全相同的配置,指向一个完美工作的单个计算引擎虚拟机。这使我相信这个问题可能在容器设置而不是负载均衡器中。

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

+0

您是使用入口对象还是手动配置负载平衡器?您可能想尝试使用入口对象,并将其产生的配置与您现在正在查看的配置进行比较,以查看是否有明显不同的东西。 –

回答

1

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