Kubernetes中的Pod无法建立RTSP会话,UDP端口不可达

问题描述

我正在尝试通过RTSP(使用ffmpeg)在吊舱和相机之间建立连接。

我的容器在本地运行并在服务器中时可以建立连接。

但是,在Kubernetes中,看起来可以访问并标识相机服务器,但是它无法初始化流。尝试连接时,我在容器上做了一个tcpdump,并且收到以下消息:

10:55:37.065954 IP **CAMERA_SERVER_IP** > **POD_NAME**: ICMP **CAMERA_SERVER_IP** udp port 36337 unreachable,length 44

10:55:37.066003 IP **CAMERA_SERVER_IP** > **POD_NAME**: ICMP **CAMERA_SERVER_IP** udp port 36336 unreachable,length 48

** CAMERA_SERVER_IP **->是摄像机服务器的IP地址

** POD_NAME **->是我的pod在kubernetes中的名字。

当我在本地尝试时,第一个UDP端口也会失败,但是第二个UDP端口可以建立连接和流。

我认为这与端口通信有关,但是我迷失了应该尝试或进行的测试。

谢谢!

更新*

实际上我发现了一些奇怪的东西。

我再次尝试启动连接,并且分析了 tcpdump netstat -tulpn 的日志。

在本地连接时, netstat 确定了两个UDP连接的创建。并且 tcpdump 显示ffmpeg试图使用来自netstat的相同UDP端口从服务器建立连接

但是,在Kubernetes的Pod中,在 netstat 上打开的端口不同于ffmpeg尝试连接的端口(已通过 tcpdump 进行了验证>)。

我认为这是错误,因为ffmpeg在尝试访问未打开的端口时立即失败。

解决方法

我实际上在使用另一个ffmpeg服务器包装进行了解决,如我在此处所述:https://github.com/kubernetes/kubernetes/issues/94561

如果有人遇到类似问题,尤其是Intelbras DVR或使用DAHUA API的人,这可能很有趣。