如何在Kubernetes上将WebRTC与RTCPeerConnection一起使用? 网络

问题描述

我想构建一个处理用户网络摄像头视频的Web应用程序。看起来WebRTC是此项目的理想选择。但是,我很难在用户的机器和Kubernetes集群中的Pod之间创建对等连接。您将如何联系这两个同行?

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

我最想找到解决方案的是Orchestrating GPU-accelerated streaming apps using WebRTC,其代码可在GitHub上找到。我不完全了解他们的方法,我相信这取决于Istio

解决方法

您链接到的文档很有帮助,Orchestrating GPU-accelerated streaming apps using WebRTC

他们允许RTCPeerConnection做的事情是:

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

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

STUN / TURN服务

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

hostNetwork: true

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

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

网络

他们的网络图的此部分显示,某些服务是通过入口网关通过 https 提供的,而STUN / TURN服务是使用通过不同的连接进行的> dtls / rtp 到通过主机网络暴露的节点。

Network