7

我想构建一个处理来自用户网络摄像头的视频的网络应用程序。看起来 WebRTC 非常适合这个项目。但是,我很难在用户机器和 Kubernetes 集群中的 pod 之间创建对等连接。您将如何连接这两个对等点?

这个关于服务器故障的问题讨论了我遇到的问题:WEBRTC MCU/SFU inside kubernetes - Port Ranges。WebRTC 希望打开一堆端口,以便用户可以与服务器创建对等连接,但 Kubernetes 默认关闭端口。这是我的问题的改写:如何创建 RTCPeerConnections 将多个用户连接到托管在 Kubernetes 集群中的应用程序?网络端口应该如何设置?

我找到解决方案最接近的方法是使用 WebRTC 编排 GPU 加速流应用程序,他们的代码可在GitHub上找到。我不完全理解他们的方法,我相信这取决于Istio

4

1 回答 1

7

您链接到的文档很有帮助,使用 WebRTC 编排 GPU 加速的流应用程序

他们允许的RTCPeerConnection是:

使用两个单独的节点池(节点组):

  • 默认节点池 - 对于大多数组件,使用Ingress和负载均衡器
  • TURN 节点池 - 用于 STUN/TURN 服务

STUN/TURN 服务

STUN/TURN 服务是网络绑定的并部署到专用节点。它在节点池中的每个节点上部署一个实例。这可以使用DaemonSet在 Kubernetes 上完成。此外,该服务应使用主机网络,例如,所有节点都具有可从 Internet 访问的端口。在您的 PodTemplate 中激活主机网络DaemonSet

hostNetwork: true

他们使用coturn作为 STUN/TURN 服务器。

STUN/TURN 服务在 TURN 节点池的每个节点上作为 DaemonSet 运行。coTURN 进程需要分配绑定到主机 IP 地址的固定端口块,以便正确地为中继流量提供服务。单个 coTURN 实例可以根据机器配置为数千个并发 STUN 和 TURN 请求提供服务。

网络

他们的网络图的这一部分显示,一些服务是通过https入口网关提供的,而 STUN/TURN 服务是通过使用dtls/rtp的不同连接到通过主机网络公开的节点的。

网络

于 2020-10-08T20:55:26.550 回答