我一直在寻找为裸机Kubernetes集群设置Ingress控制器。我开始查看Ingress控制器,但这些似乎只适用于可通过端口80或443访问的HTTP服务。如果需要在任意端口上公开TCP或UDP服务,似乎可以使用Nginx或HAProxy Ingress控制器,但您的群集最终共享一个端口范围。如果我误解了这一点,请告诉我。
如果需要在任意端口上公开和加载平衡TCP或UDP服务,你会怎么做?我正在考虑使用ClientIP,以便服务获得自己的VIP并可以使用他们想要的任何端口,但问题就变成了,如何将流量路由到这些VIP并为其提供友好的DNS名称?有没有解决方案,或者你必须自己构建一个?使用NodePort或任何意味着命名空间必须共享单个端口范围的解决方案实际上不是可扩展的或可取的。特别是如果名称空间1中的Bob绝对需要在端口8000上访问其服务,但名称空间2中的Linda已经在使用该端口。
非常感谢任何澄清,潜在解决方案或一般帮助。
答案 0 :(得分:0)
github问题是一个有趣的读物,有一些聪明的解决方法,比如从HTTPS开始,然后使用ALPN切换到自定义协议:https://github.com/kubernetes/kubernetes/issues/23291但当然,您的客户需要知道如何做到这一点。
但是如果使用相同端口的这些TCP和UDP服务的协议不同并且没有办法进行互操作,那么入口控制器需要能够分配相当于不同的可路由IP地址 - 无论是使用云提供商,还是使用专有基础设施,无论是按照公开的服务进行处理。
我没有密切关注,但我的感觉是来自nginx和haproxy的打包入口控制器不具备自动化功能。它必须与可用的基础设施自动化协调建立。