gpt4 book ai didi

amazon-web-services - 为 EKS pod 动态创建公共(public) IP 或子域

转载 作者:行者123 更新时间:2023-12-02 11:41:58 25 4
gpt4 key购买 nike

复杂的 AWS EKS/ENI/Route53 问题让我们感到困惑。需要专家。
语境:
我们正在为社交平台 (https://myxr.social) 开发动态游戏服务器,该服务器使用 WebRTC/UDP SCTP/SRTP 通过 https://MediaSoup.org 传输游戏和视频数据
每个游戏服务器将有大约 50 个客户端
每个客户端需要 2-4 个 UDP 端口
我们的工作开发策略
https://github.com/xr3ngine/xr3ngine/tree/dev/packages/ops
我们正在使用 Kubernetes 和 https://agones.dev 配置这些游戏服务器
Mediasoup 要求为客户端的每个服务器连接分配单独的端口。每个客户端需要两个端口,一个用于发送数据,一个用于接收数据;每台服务器的目标最多约为 50 个用户,这要求每台服务器有 100 个端口可公开访问。
我们需要一些方法来将此 UDP 流量路由到相应的游戏服务器。入口似乎主要处理 HTTP(S) 流量,配置我们的 NGINX 入口 Controller 来处理 UDP 流量假设我们提前知道我们的游戏服务器服务,我们不知道,因为游戏服务器会根据需要上下旋转。
问题:
我们看到了两种可能的方法来解决这个问题。
路径 1
分配节点组公共(public) IP 中的每个游戏服务器,然后为每个客户端分配端口。 IP v4 或 v6。这将需要对 AWS 中的 IP 端口进行 SSL 终止。我们可以使用 ENI 和 EKS 为每个带有 SSL 的游戏服务器动态创建和配置 IP 端口吗?本质上,这些 Pod 通过一个公共(public)子网向 Internet 公开,它们每个都有自己的 IP 地址或子域。 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html我们一直在引用这个文档,试图弄清楚这是否可行。
路径 2
为每个游戏服务器动态创建一个子域(例如 gameserver01.gs.xrengine.io 等),并为每个客户端(例如客户端 1 [30000-30004] 等)分配动态端口。这似乎受到 EKS 船队中可访问的端口的限制。
这些方法中的任何一种都可能吗?一个更好吗?你能告诉我们一些关于我们应该如何实现的细节吗?

最佳答案

接收 UDP traffic on Amazon EKS 的原生方式是通过使用 Kubernetes Service of type Loadbalancer带有额外的注释来获取 NLB。
例子

apiVersion: v1
kind: Service
metadata:
name: my-game-app-service
annotation:
service.beta.kubernetes.io/aws-load-balancer-type: nlb
spec:
selector:
app: my-game-app
ports:
- name: outgoing-port # choose your name
protocol: UDP
port: 9000 # choose your port
- name: incoming-port # choose your name
protocol: UDP
port: 9001 # choose your port
type: LoadBalancer

关于amazon-web-services - 为 EKS pod 动态创建公共(public) IP 或子域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64081898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com