我发现 UDP 数据包以错误的顺序从我的 pod 中传出。
当在 pod 的容器内使用 tshark 时(通过 kubernetes 仪表板并使用“exec”)在容器上
eth0
界面:
- 我看到一些 UDP 数据包以错误的顺序发送(例如:1-2-10-11-12-3-4-5-6-7 ...)。
- 这偶尔会发生。
- 这是有问题的,因为这些数据包携带顺序相关信息。
例如,当在我的一个 pod 中使用
ffmpeg
命令通过 UDP 将视频文件发送到服务时,我遇到了问题。使用另一个程序而不是
ffmpeg
我仍然遇到同样的问题。它似乎不是来自应用程序本身。
相同的应用程序(
ffmpeg
,自定义应用程序,...)在集群外部使用 docker 或运行二进制文件时运行良好。这里没有 UDP 数据包以错误的顺序发送。
当我尝试将 UDP 数据包从一个容器发送到同一 pod 中的另一个容器时,我仍然遇到同样的问题。
我尝试了 4 种不同类型的机器/设置,结果相似:
- 2 x 英特尔® NUC 套件 NUC8i7BEH(英特尔酷睿 i7-8559U @ 2.70GHz,32GB 内存):
- 与地形一起部署
- Rke集群(基于容器)
- 容器运行时:dockerd
- 2 x 英特尔® NUC 套件 NUC8i7BEH(英特尔酷睿 i7-8559U @ 2.70GHz,32GB 内存):
- 使用 kubadm 部署
- 网络插件(cni):calico
- 容器运行时:crio
- 3 x 旧的超微刀片服务器(Pentium 4 3Ghz,每台 2GB 内存):
- 使用 kubadm 部署
- 网络插件(cni):calico
- 容器运行时:containerd
- 3 x VM(每个 Intel(R) Xeon(R) Gold 5218R CPU @ 2.10GHz 12 个内核):
- 使用 kubadm 部署
- 网络插件(cni):calico
- 容器运行时:crio
所有设置都使用有线以太网连接。
我应该怎么做才能保证我的 UDP 数据包在 Kubernetes 中从我的容器中出来时总是以正确的顺序发送?是否需要对集群进行网络配置?