我正在尝试设置 AntMedia Server 的集群(GKE,但如果需要,我可以更改为其他提供商)。
根据 doc 1,服务器需要从外部访问,具有广泛的端口,基本上所有的 UDP 端口:UDP:5000-65000 (WebRTC)
我试图在 LoadBalancer 服务中声明所有端口,但 GKE 似乎允许每个服务最多 100 个端口。
我该怎么做才能将这个范围的端口暴露给外界?
我正在尝试设置 AntMedia Server 的集群(GKE,但如果需要,我可以更改为其他提供商)。
根据 doc 1,服务器需要从外部访问,具有广泛的端口,基本上所有的 UDP 端口:UDP:5000-65000 (WebRTC)
我试图在 LoadBalancer 服务中声明所有端口,但 GKE 似乎允许每个服务最多 100 个端口。
我该怎么做才能将这个范围的端口暴露给外界?
WebRTC 软件通常不打算在负载均衡器后面使用。您可以使用公共 VM 实例和应用程序级负载平衡,而不是云负载平衡。
可能真正昂贵的解决方法是创建许多具有相同 IP 的 LoadBalancer 服务:
spec:
loadBalancerIP: <Your_LB_IP>
只是不要忘记在所有 LB 之前创建保留的静态 IP
gcloud compute addresses create antmedia-lb --global --project=$PROJECT_ID
也许您可以在 AntMedia 设置中将 UDP 端口范围限制配置为 200 或 300 个端口,而不是 60000,并使用 2-3 个 LB 来查看它是如何进行的。
亚历克斯的回答有一些见解,但即使因为 NodePort 端口的数量有限而无法创建大量 LB 服务(是的,LB 需要 NodePort 才能使用,或者至少这是 GKE 告诉我的)
到目前为止的解决方案是使用 DaemonSet,启用 hostNetworking 以便(每个 pod 只有一个容器)可以直接侦听主机的网络接口。
如果需要,我们可以从那里创建一个外部 LB 将所有端口转发到节点。