首页 文章

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

提问于
浏览
1

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

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

我让他们都工作,但在不同的IP,我需要在一个 .

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

我想我可以让一个nginx / HAproxy实例只做这个,但这似乎有点矫枉过正

感谢任何帮助!

1 回答

  • 1

    现在对此没有很好的答案 . Ingress对象现在只是HTTP,我们并不真正支持单个集群中的多个级别的入口(尽管我们想要) .

    GCE的HTTP LB还没有做websockets .

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

    在我们保留源IP之前,我能想到并且已被许多用户使用的最佳解决方法是:

    使用HostPorts在一些或所有节点(标签控制)上运行您自己的haproxy或nginx甚至您自己的应用程序作为Daemonset .

    运行指向HostPorts节点的GCE网络LB(Kubernetes之外) .

    一旦我们能够正确保存外部IP,您就可以将其重新转换为普通服务 .

相关问题