Kubernetes的组播流量

时间:2018-01-17 15:17:06

标签: docker networking kubernetes multicast

我希望我的pod能够接收从我的kubernetes群集外部流向节点中特定端口的多播网络流量。

我正在考虑两种解决方案:

  1. hostNetwork: true标记添加到yaml文件以及hostPort配置,以便直接接收到该广告连播的流量。
  2. 使用eth0命令在docker0接口到iptables接口的节点上本地转发流量。
  3. 方法1是Kubernetes的官方功能,但感觉就像打破了docker最初强加的安全墙,并可能导致端口 与主持人进程的冲突等。

    另一方面,方法2透明地将多播网络流量转发到pod 尽管我可以使用自动化工具来传播这种配置(ansible / salt等),但任何配置都超出了范围' Kubernetes觉得我有点讨厌。

    希望听听您对kubernetes群集多播问题的利弊,评论和其他解决方案。

4 个答案:

答案 0 :(得分:3)

一种支持多播的更干净的方法是通过multus-cni向POD添加一个附加接口。然后,您可以将此新的multus接口与主机网络接口相关联,该主机网络接口将在主机上接收多播流量。总结一下,您的POD上将有两个界面,即:

  1. net1(默认),用于Pod到Pod的通信和其他单播流量。
  2. 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)