【问题标题】:Kubernetes - hosting game server with UDP. How to connect/route traffic to POD?Kubernetes - 使用 UDP 托管游戏服务器。如何将流量连接/路由到 POD?
【发布时间】:2018-02-03 06:30:28
【问题描述】:

前几天我一直在使用 Azure 容器服务上的 Kubernetes 集群,目标是在上面托管 Unreal 游戏服务器。

经过几天的实验和几个关于 SO 的问题,我已经到了可以在单个节点上托管几台服务器并通过客户端连接到它们的地步。

在我最新的设置中,我直接使用 hostNetwork: true 部署了 POD。 添加了具有公共 IP 的 LoadBalancer,并从部署 pod 的代理节点手动映射端口到 NAT 负载均衡器。

虽然有效,但我并不完全相信这是一个很好的解决方案。虽然它可以自动化,但我不确定它是否可以在负载下扩展。

  1. 我需要等到创建 pod。我可以假设需要什么端口,因为在 7777 端口上打开了虚幻的芳香,然后加一,直到找到一个。

  2. 创建 pod 后,我需要将 NAT 端口转发添加到负载均衡器(但在我知道位于哪个 Node pod 上之前我无法执行此操作)。

  3. 向负载均衡器添加新的 NAT 规则需要时间。相当多的时间,从我目前看到的情况来看。

  4. 我正在使用外部负载平衡器来路由特定 POD 的流量。在 Kubernetes 中执行此操作可能会更好。

有几件事必须满足:

  1. 客户端通过 UDP 连接到服务器。

  2. 最好将公共 IP 的数量保持在最低限度。

通过 UDP 直接向外部客户端公开 POD 的最佳方式是什么?端口转发并不是那么糟糕的选择(尽管我可以通过单个公共 ip 公开的 POD 数量有限,至少我认为是这样)。 我想要实现的是将客户端直接连接到服务器,或者将客户端流量路由到特定的 POD(即路由器->服务-> pod 场景是可以接受的,但间接性越少越好)。

我读过这个: http://www.compoundtheory.com/scaling-dedicated-game-servers-with-kubernetes-part-1-containerising-and-deploying/ 尽管我不确定服务器是否通过 UDP 连接(这对我来说必须有要求),但它是很好的信息来源。或者unity客户端究竟是如何直接连接到内部POD IP的。

【问题讨论】:

    标签: azure kubernetes azure-container-service azure-acs


    【解决方案1】:

    我建议你看看 Ingresses 控制器, 我知道 Nginx 支持 UDP 路由。

    因此,您使用负载平衡器 IP 公开 Nginx-ingress,并创建 UDP 配置映射以直接在您的 pod 上路由。

    你应该试一试。

    https://github.com/kubernetes/contrib/tree/master/ingress/controllers/nginx/examples/udp

    【讨论】:

    • 嘿,谢谢。我以前见过它,但我只是不知道应该在 configmap 中放什么(或者就此而言,它如何允许我从客户端到服务器)。浏览互联网,我找不到任何使用 nginx +config map + udp 的真实世界示例。 Cloud 你给我一些简单的(但比 github 复杂一点)示例,说明要添加到 configmap 的内容以及如何连接到 pod?
    • 我从来没有使用过 Nginx Ingress for UDP,似乎一个 Nginx 只能处理一个“UDP Virtualhost”而不是 HTTP 服务,你可以提供很多不同的服务。您需要首先创建 nginx ingress 的 ReplicasController,然后创建您的 configmap 并修改 value 部分以匹配您的 UDP k8s 服务。使用 externalIP 或 LoadBalancerIP 公开的 Nginx 应该可以解决问题。
    猜你喜欢
    • 1970-01-01
    • 2020-05-20
    • 2023-03-28
    • 2021-12-03
    • 1970-01-01
    • 2017-06-20
    • 2017-11-21
    • 2019-02-03
    • 2018-09-03
    相关资源
    最近更新 更多