【问题标题】:Can Kubernetes L7 ingress be used for non-HTTP port traffic?Kubernetes L7 入口能否用于非 HTTP 端口流量?
【发布时间】:2019-07-04 13:22:53
【问题描述】:

我有两个不同的 Minecraft 服务器容器正在运行,都设置为使用默认的 TCP 端口 25565。为了让外行可以轻松连接,我希望有一个专用于每个服务器的子域,比如 mc1.example.com 和mc2.example.com,这样他们只输入地址并连接客户端。

对于 HTTP(s) 服务,NGINX L7 入口可以正常工作,但它似乎不适用于 Minecraft。 NodePort 运行良好,但是每个服务器都需要不同的端口。

这也安装在裸机上 - 没有可用的云 L4 负载平衡器,并且 IP 地址池非常有限(假设不足以覆盖所有各种 Minecraft 服务器)。

能否修改 L7 入口以将 mc1.example.com 重定向到正确容器的端口 25565?我需要使用MetalLB 之类的东西吗?

【问题讨论】:

    标签: kubernetes kubernetes-ingress nginx-ingress


    【解决方案1】:

    这也安装在裸机上 - 没有可用的云 L4 负载平衡器,并且 IP 地址池非常有限(假设不足以覆盖所有各种 Minecraft 服务器)。

    如果您没有足够的 IP 地址,MetalLB 将无济于事,因为它只是使用 BGP 为您提供虚拟主机,但您必须提供虚拟地址。根据您对情况和问题的描述,我敢说您正试图以便宜的方式做到这一点,而且 - 正如人们所预料的那样 - 没有资源很难工作。

    也就是说:

    据我所知,the modern Minecraft protocol 中没有重定向,但有趣的是,在the Handshake 期间,客户端确实发送了它尝试连接的主机名。 BungeeCord 可能会或可能不会利用它,我没有研究它的源代码。

    因此,理论上可以制作一个特定于 Minecraft 的虚拟主机代理,因为已经有相当多的协议实现。但是,可能必须研究协议中的所有消息以确保它们包含对实际连接 ID 的引用,否则您将不得不求助于 (client-ip, client-port) 标识元组,从而有效地将您的服务器变成反向 NAT/PAT执行。这可能没问题,请注意。

    【讨论】:

    • 我很感激 - 这正是我所寻找的。我怀疑我现在只使用 NodePort,并且为了好玩和咯咯笑着看做一个更整洁的重定向设置。谢谢!
    猜你喜欢
    • 2019-08-30
    • 2012-08-24
    • 1970-01-01
    • 2011-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-18
    • 2016-12-24
    相关资源
    最近更新 更多