spring-boot - 将 udp 数据包多播到不同节点上的所有 kubernetes pod
问题描述
我正在搜索如何将多播 udp 数据包发送到我的 kubernetes 集群中的 pod
在对这个问题进行一些调查后,我意识到我所有的 pod 只能在同一节点上运行时才能看到数据包,其他位于另一个节点上的 pod 看不到路由的数据包,
我已经在我的gcp帐户上对其进行了测试,我还没有在任何其他 k8s 云提供商上对其进行测试我已经使用 java spring boot 集成实现了它,请参阅我的git repo
我已经实现了两个模块
<modules>
<module>livefeed</module> #read packet on the network on 4444 port
<module>livesender</module> # multicast 1 packet every 1 second
</modules>
我已经进行了部署DaemonSet
,以确保 kubernetes 将每个 pod 安排在不同的节点上
我正在使用spring集成来读取路由数据包
@Bean
public IntegrationFlow processUniCastUdpMessage() {
return IntegrationFlows
.from(new MulticastReceivingChannelAdapter("224.0.0.1", 4444))
.handle(x -> log.info(new String(((byte[]) x.getPayload()))))
.get();
}
如果我应该在 gcp 或其他东西上配置 vpn,我希望有人可以帮助我。
解决方案
看到这个线程,您需要配置您的 kubernetes 集群以添加以下配置以使多播正常运行:
hostNetwork: true
dnsPolicy: ClusterFirstWithHostNet
希望这可以帮助。
推荐阅读
- php - 将查询参数添加到 PHP 的 Mailchimp API 请求
- go - 使用 io.pipe 遇到 multipart.NewWriter 问题
- flutter - Audioplayers 包“在 null 上调用了方法‘循环’”错误
- reactjs - react-bootstrap-table2 和钩子状态奇怪的行为
- time-complexity - 算法非多项式的时间复杂度
- java - MongoDB UUID 反序列化
- python - 条件 Numpy 切片并附加到另一个数组
- python - 面板/纵向数据上的 Tensorflow 嵌入
- max-flow - 如何找到网络流的流向?
- amazon-web-services - 如何拒绝在短时间内发送两次相同的 POST 请求