0

我跑在GKE一个kubernetes应用程序,它提供的端口上的端口80和WebSocket的HTTP请求,现在8080GCE:一个IP TCP和HTTP负载平衡器

,HTTP部分需要知道客户端的IP地址,所以我必须使用HTTP负载平衡器作为入口服务。然后Websocket部分必须使用TCP负载平衡器,因为在文档中明确指出HTTP LB不支持它。

我得到了他们两个工作,但在不同的IP地址,我需要让他们在一个。

我认为在GCE上有类似iptables的东西,所以我可以将端口80的流量转发到HTTP LB,从8080转发到TCP LB,但是我找不到这样的东西。任何包括转发只允许一个他们。

我想我可以有一个实例nginx的/ HAProxy的做不仅于此,但是,似乎是矫枉过正

感谢任何帮助!

回答

1

现在还没有很好的答案。入口对象实际上只是HTTP,而且我们并不真正支持单个群集中的多个入口(尽管我们想要)。

GCE的HTTP LB还没有做websocket。

服务存在缺陷,因为他们失去了客户端IP(我们正在努力)。即使我们解决了这个问题,由于您需要额外的端口,您也无法使用GCE的L7平衡器。

我能想到的最好的解决方法,并已用于由多个用户,直到我们保留源IP,是这样的:

运行你自己的HAProxy的或nginx的,甚至你自己的应用程序上有的一Daemonset或使用HostPorts的所有节点(标签控制)。

运行一个GCE网络LB(在Kubernetes之外),指向具有HostPorts的节点。

一旦我们可以正确保留外部IP地址,您可以将其恢复为普通服务。

+0

我忽略了Daemonsets。看起来像我需要的,谢谢 – lobanovadik