我们有一个应用程序,它使用UDP广播消息来形成在同一子网中运行的所有示例的“集群”。
我们可以通过使用hostNetwork:true
for pod在本地K8s安装中成功运行这个应用程序。这是因为所有K8s节点都在同一个子网中,并且可以进行广播。(一个小提示:K8s安装程序使用flannel网络插件)
现在,我们想将此应用程序移动到托管的K8s服务@ AWS。但我们最初的尝试失败了。在2个不同的Pod中运行的2个守护程序无法看到彼此。我们认为这很可能是由于自动生成的EC2工作节点示例驻留在不同的子网中。然后,我们在同一子网中创建了2个全新的EC2示例(和相同的可用性区域)并尝试直接在它们上运行应用程序(不是作为K8的一部分),但也失败了。即使2个EC2示例位于同一子网/可用性区域,它们也无法通过广播消息进行通信。
因此,以下问题:
- 我们的初步搜索显示,AWS EC2可能不支持广播/多播,但仍然想问是否有办法启用它?(在AWS或其他云提供商上)?
- 我们使用了
hostNetwork:true
,因为我们认为使用K8s pod-networking进行广播会更困难,如果不是不可能的话。但似乎有些公司提供支持这一点的K8s网络插件。有人有经验(或推荐)其中任何一个吗?他们会在AWS上工作吗?例如,考虑到AWS不支持EC2级别? - 非常感谢任何关于如何处理这个问题的建议,以及我们是否有任何选择。
谢谢
1条答案
按热度按时间0x6upsns1#
从概念上讲,您需要在VPC本机(如this)之上创建覆盖网络。有一个CNI支持多播,这里是AWS blog。