我正试图通过RTSP(使用ffmpeg(在我的pod和相机之间建立连接。
我的容器,当在本地和服务器上运行时,可以建立连接。
然而,在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端口也会失败,但第二个可以建立连接和流。
我认为这与端口通信有关,但我有点迷失在应该尝试或测试的内容中。
谢谢!
更新*
事实上,我发现了一些奇怪的东西。
我再次尝试启动连接,并分析了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的DVR,这可能很有趣。