1

我有一个(工作)测试程序,可以通过 UDP 多播发送和接收消息。我已成功将其部署到 kubernetes 集群并演示了两个 pod 相互通信。唯一的问题是我需要添加hostNetwork: true到 pod 规格中。据我了解,这会禁用所有原本可用的网络虚拟化。我也试过

        - containerPort: 12345
          hostPort: 12345
          protocol: UDP

但是当我在没有hostNetwork通信的情况下使用它时会失败。

有没有办法让这个工作,同时仍然能够使用正常的网络来做其他事情?(我们不太可能希望将网络层切换到 Weave 之类的东西。)

4

1 回答 1

1

当您希望从嵌套的 Pod 直接访问 Node 网络接口时,使用hostNetwork: true是很好的,但是当您将应用程序托管在几个 Node 上时,它会带来一些限制,因为每次 Kubernetes 重新启动 Pod 时,它都可以在不同的 Node 上旋转因此,您的应用程序的 IP 地址可能会更改。此外,hostNetwork当您计划在 Kubernetes 集群中扩展应用程序时,使用会导致端口冲突问题,因此不建议在云环境中引导 Kubernetes 集群时实施。

如果您不考虑将覆盖网络用于 Pod 通信作为集群网络模型的重要组成部分,那么您可能会失去一些基本优势,例如 DNS 解析功能(CoreDNSKube-DNS)。

我想您可以尝试将NodePort其用作服务对象。由于NodePort服务代理以相应节点上的应用程序端口为目标,因此可能值得检查它是否符合您的要求,但是对于更高级的解决方案,我对您的应用程序部署组合和网络规范一无所知。

于 2019-01-24T14:20:14.363 回答