如何在 Kubernetes 上使用 WebRTC 和 RTCPeerConnection? [英] How to use WebRTC with RTCPeerConnection on Kubernetes?

查看:72
本文介绍了如何在 Kubernetes 上使用 WebRTC 和 RTCPeerConnection?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

关于服务器故障的这个问题讨论了我遇到的问题:

I would like to build a web application that processes video from users' webcams. It looks like WebRTC is ideal for this project. But, I'm having a hard time creating a peer connection between the user's machine and a pod in my Kubernetes cluster. How would you connect these two peers?

This question on Server Fault discusses the issue I'm running into: WEBRTC MCU/SFU inside kubernetes - Port Ranges. WebRTC wants a bunch of ports open so users can create peer connections with the server but Kubernetes has ports closed by default. Here's a rephrasing of my question: How to create RTCPeerConnections connecting multiple users to an application hosted in a Kubernetes cluster? How should network ports be setup?

The closest I've come to finding a solution is Orchestrating GPU-accelerated streaming apps using WebRTC, their code is available on GitHub. I don't fully understand their approach, I believe it depends on Istio.

解决方案

The document you link to is helpful, Orchestrating GPU-accelerated streaming apps using WebRTC

What they do to allow for RTCPeerConnection is:

Use two separate Node pools (group of Nodes):

  • Default Node pool - for most components, using Ingress and load balancer
  • TURN Node pool - for STUN/TURN service

STUN/TURN service

The STUN/TURN service is network bound and deployed to dedicated nodes. It is deployed with one instance on each node in the node pool. This can be done on Kubernetes using a DaemonSet. In addition this service should use host networking, e.g. all nodes has its ports accessible from Internet. Activate host networking for the PodTemplate in your DaemonSet:

hostNetwork: true

They use coturn as STUN/TURN server.

The STUN/TURN service is run as a DaemonSet on each node of the TURN node pool. The coTURN process needs to allocate a fixed block of ports bound to the host IP address in order to properly serve relay traffic. A single coTURN instance can serve thousands of concurrent STUN and TURN requests based on the machine configuration.

Network

This part of their network diagram shows that some services are served over https with an ingress gateway, whereas the STUN/TURN service is through a different connection using dtls/rtp to the nodes exposed via host network.

这篇关于如何在 Kubernetes 上使用 WebRTC 和 RTCPeerConnection?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆