Kubernetes LoadBalancer:开放大范围(千)端口
Kubernetes LoadBalancer: open a wide range (thousands) of port
我正在尝试搭建一个 AntMedia Server 的集群(GKE,但如果需要我可以换成其他供应商)。
根据文档1,服务器需要可以通过广泛的端口从外部访问,基本上是所有 UDP 端口:UDP:5000-65000 (WebRTC)
我试图在 LoadBalancer 服务中声明所有端口,但 GKE 似乎允许每个服务最多 100 个端口。
如何才能将这个范围的端口暴露给外界?
WebRTC 软件通常不打算在负载平衡器后面使用。您可以使用 public 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 看看效果如何。
Alex 的回答有一些见解,但即使由于 NodePort 端口的数量有限而无法创建大量 LB 服务(是的,LB 需要 NodePort 才能使用,或者至少 GKE 是这么告诉我的)
目前的解决方案是使用 DaemonSet,启用 hostNetworking 以便(每个 pod 只有一个容器)可以直接在主机的网络接口上侦听。
如果需要,我们可以从那里创建一个外部 LB,以将所有端口转发到节点。
我正在尝试搭建一个 AntMedia Server 的集群(GKE,但如果需要我可以换成其他供应商)。
根据文档1,服务器需要可以通过广泛的端口从外部访问,基本上是所有 UDP 端口:UDP:5000-65000 (WebRTC)
我试图在 LoadBalancer 服务中声明所有端口,但 GKE 似乎允许每个服务最多 100 个端口。
如何才能将这个范围的端口暴露给外界?
WebRTC 软件通常不打算在负载平衡器后面使用。您可以使用 public 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 看看效果如何。
Alex 的回答有一些见解,但即使由于 NodePort 端口的数量有限而无法创建大量 LB 服务(是的,LB 需要 NodePort 才能使用,或者至少 GKE 是这么告诉我的)
目前的解决方案是使用 DaemonSet,启用 hostNetworking 以便(每个 pod 只有一个容器)可以直接在主机的网络接口上侦听。
如果需要,我们可以从那里创建一个外部 LB,以将所有端口转发到节点。