【问题标题】:How to use WebRTC with RTCPeerConnection on Kubernetes?如何在 Kubernetes 上使用 WebRTC 和 RTCPeerConnection?
【发布时间】:2020-10-06 19:48:50
【问题描述】:

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

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

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

【问题讨论】:

  • "你将如何连接这两个对等点?"好吧,webrtc 使用 STUN/TURN 通过 NAT 连接……它是一个更复杂的协议,是的。你能澄清一下你问的是哪一部分吗?
  • 没有 Istio 也可以拥有相同的架构
  • @Jonas 感谢您的帮助!我一直在为 STUN/TURN 服务器使用xirsys.com。我一直在使用github.com/aiortc/aiortc 作为我的服务器端代码。当我在我的个人计算机上运行我的服务器端代码时,用户可以连接。当我在 Kubernetes 集群中运行相同的代码时,用户无法连接。我想我需要打开网络,以便可以与集群中的 pod 建立对等连接,但我还没有找到最好的方法。

标签: kubernetes webrtc rtcpeerconnection


【解决方案1】:

您链接到的文档很有帮助,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 请求。

网络

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

【讨论】:

  • 谢谢乔纳斯!!这将需要我一些时间来解决,但我认为 hostNetwork 设置是关键。我真的很感激帮助。一旦我的工作正常,我会接受并投票。
猜你喜欢
  • 2019-02-21
  • 2016-08-13
  • 2021-05-11
  • 1970-01-01
  • 1970-01-01
  • 2016-08-08
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
相关资源
最近更新 更多