【问题标题】:Multicast traffic to Kubernetes到 Kubernetes 的多播流量
【发布时间】:2018-06-26 12:37:09
【问题描述】:

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

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

  1. hostNetwork: true 标志与hostPort 配置一起添加到他们的yaml 文件中,以便将流量直接接收到pod。
  2. 使用iptables 命令将节点上的本地流量从eth0 接口转发到docker0 接口。

方法一是Kubernetes的官方特性,但是感觉就像打破了docker原本强加的安全墙,可能会导致端口 与主机进程等发生冲突。

另一方面,方法 2 透明地将多播网络流量转发到 pod。
尽管我可以使用自动化工具来传播此配置(ansible/salt 等),但任何配置为“超出 Kubernetes 范围”的东西对我来说都感觉有点 hacky。

想听听您的优缺点、cmets,以及针对多播到 kubernetes 集群问题的其他解决方案。

【问题讨论】:

    标签: docker networking kubernetes multicast


    【解决方案1】:

    支持多播的一种更简洁的方法是通过multus-cni 向您的 POD 添加一个额外的接口。然后,您可以将这个新的multus 接口关联到您的主机网络接口,该接口将在主机上接收多播流量。总而言之,您的 POD 上将有两个接口,即:

    1. net1(默认)用于 pod 到 pod 通信和其他单播流量。
    2. eth0 (multus) 用于多播流量。然后,您需要使用bridgemacvlan 将其与主机中的NIC“加入”

    在此处查看更多详细信息:https://github.com/intel/multus-cni/blob/master/docs/quickstart.md

    【讨论】:

      【解决方案2】:

      我在 hostNetwork 上玩了一会儿,我了解您的保留意见。我看到打开它会为我的 pod 提供与托管节点相同的 IP。但是它无法与任何节点通信(也许我做错了什么?)。

      编辑: 我肯定错过了什么

      hostNetwork: true
      dnsPolicy: ClusterFirstWithHostNet
      

      我添加了 dnsPolicy

      所以我现在正在尝试使用 CNI 的替代方法。还在研究那个。这对我来说是新的,所以我会尽快发布更新。

      【讨论】:

        【解决方案3】:

        最后我们选择了方法 1,因为它是实现我们想要的目标的记录方法,我可以报告它工作正常。

        【讨论】:

        • 您的集群是否在本地运行?鉴于它们不支持多播,因此该解决方案似乎不适用于云,例如Azure
        【解决方案4】:

        听说 WeaveWorks 支持多播:https://www.weave.works/use-cases/multicast-networking/

        github issue 对多播支持很少说

        【讨论】:

        • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
        • 不幸的是,我自己没有更多信息,因为我也在研究这个。如果您确实找到更多信息,请随时在您自己的答案中添加此内容。
        • 请阅读how to write good answers。如果您认为您的答案没有达到预期的质量,请避免发布。另一种方式是发表评论,但由于您没有足够的声誉,所以您不能这样做。
        • 如果可以的话,我确实会将此作为评论发布
        • 感谢@RikSchaaf
        猜你喜欢
        • 2016-09-09
        • 2016-04-17
        • 2021-05-23
        • 1970-01-01
        • 1970-01-01
        • 2012-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多