我希望我的pod能够接收从我的kubernetes群集外部流向节点中特定端口的多播网络流量。
我正在考虑两种解决方案:
hostNetwork: true
标记添加到yaml
文件以及hostPort
配置,以便直接接收到该广告连播的流量。eth0
命令在docker0
接口到iptables
接口的节点上本地转发流量。方法1是Kubernetes的官方功能,但感觉就像打破了docker最初强加的安全墙,并可能导致端口 与主持人进程的冲突等。
另一方面,方法2透明地将多播网络流量转发到pod 尽管我可以使用自动化工具来传播这种配置(ansible / salt等),但任何配置都超出了范围' Kubernetes觉得我有点讨厌。
希望听听您对kubernetes群集多播问题的利弊,评论和其他解决方案。
答案 0 :(得分:3)
一种支持多播的更干净的方法是通过multus-cni
向POD添加一个附加接口。然后,您可以将此新的multus
接口与主机网络接口相关联,该主机网络接口将在主机上接收多播流量。总结一下,您的POD上将有两个界面,即:
net1
(默认),用于Pod到Pod的通信和其他单播流量。eth0
(多个组播流量)。在此处查看更多详细信息:https://github.com/intel/multus-cni/blob/master/doc/quickstart.md
答案 1 :(得分:1)
最后,我们选择了方法1,因为它是实现我们想要的记录方式,我可以报告它工作正常。
答案 2 :(得分:1)
我在hostNetwork上玩了一点,我了解您的保留。我看到打开它会为我的Pod提供与托管节点相同的IP。但是然后它无法与任何节点通信(也许我做错了吗?)。
编辑: 我肯定错过了某事
<input asp-for="Movie.Price" class="form-control" />
我添加了 dnsPolicy
所以我现在正在尝试使用CNI的其他方法。仍在研究。这对我来说是新的,所以我会尽快发布更新。
答案 3 :(得分:1)
听说WeaveWorks支持多播:https://www.weave.works/use-cases/multicast-networking/