GCE:TCP和HTTP负载均衡器都在一个IP上



我在GKE上运行一个kubernetes应用程序,它在端口80上提供HTTP请求,在端口8080上提供websocket。

现在,HTTP部分需要知道客户端的IP地址,所以我必须使用HTTP负载均衡器作为入口服务。Websocket部分必须使用TCP负载均衡器,正如文档中明确指出的那样,HTTPLB不支持它

我让它们都工作,但在不同的IP上,我需要让它们在一个上。

我希望GCE上有类似iptables的东西,所以我可以将流量从端口80转发到HTTP LB,从8080转发到TCP LB,但我找不到类似的东西。包括转发在内的任何内容都只允许一个。

我想我可以有一个nginx/HAproxy的例子只做这件事,但这似乎是一个过度的

感谢您的帮助!

目前还没有一个很好的答案。Ingress对象现在实际上只是HTTP,并且我们并不真正支持单个集群中的多个等级的Ingress(尽管我们希望)。

GCE的HTTP LB还不做websocket。

服务有一个缺陷,即它们丢失了客户端IP(我们正在处理这个问题)。即使我们解决了这个问题,您也将无法使用GCE的L7平衡器,因为您需要额外的端口。

我能想到的最好的解决方法是:

使用HostPorts在部分或所有节点(标签控制)上运行您自己的haproxy或nginx,甚至您自己的应用程序作为Daemoset。

运行指向具有HostPorts的节点的GCE Network LB(Kubernetes之外)。

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

相关内容

  • 没有找到相关文章

最新更新