1

我一直在考虑为裸机 Kubernetes 集群设置 Ingress 控制器。我开始研究 Ingress 控制器,但这些似乎只适用于可通过端口 80 或 443 访问的 HTTP 服务。如果您需要在任意端口上公开 TCP 或 UDP 服务,似乎可以使用 Nginx 或HAProxy 入口控制器,但您的集群最终共享一个端口范围。如果我误解了这一点,请告诉我。

如果您需要在任意端口上公开和负载平衡 TCP 或 UDP 服务,您会怎么做?我正在考虑使用 ClientIP 以便服务获得自己的 VIP 并可以使用他们想要的任何端口,但问题是,如何将流量路由到这些 VIP 并为他们提供友好的 DNS 名称?是否已经有解决方案,还是您必须自己构建一个?使用 NodePort 或任何意味着命名空间必须共享单个端口范围的解决方案并不是真正可扩展或不可取的。特别是如果命名空间 1 中的 Bob 绝对需要在端口 8000 上访问他的服务,但命名空间 2 中的 Linda 已经在使用该端口。

任何澄清,潜在的解决方案或一般帮助将不胜感激。

4

1 回答 1

0

github 问题是一个有趣的阅读,并且有一些巧妙的解决方法,例如从 HTTPS 开始,然后使用 ALPN 切换到自定义协议:https ://github.com/kubernetes/kubernetes/issues/23291但当然你的客户需要知道该怎么做。

但是,如果使用相同端口的这些 TCP 和 UDP 服务的协议不同并且无法进行互操作,那么入口控制器需要能够分配等效于不同的可路由 IP 地址 - 要么使用云提供商,或使用专有基础设施,但根据公开的服务处理。

尽管我的感觉是来自 nginx 和 haproxy 的打包入口控制器不会具有这种自动化,但我并没有仔细观察。它必须与可用的基础设施自动化相协调。

于 2018-03-04T04:54:35.313 回答