首页 > 解决方案 > 将 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,我希望有人可以帮助我。

标签: spring-bootkubernetesgoogle-cloud-platformspring-integrationgoogle-kubernetes-engine

解决方案


看到这个线程,您需要配置您的 kubernetes 集群以添加以下配置以使多播正常运行:

hostNetwork: true
dnsPolicy: ClusterFirstWithHostNet

希望这可以帮助。


推荐阅读