是否可以在Kubernetes中基于每个pod使用唯一的外部(传出)IP

时间:2018-06-11 14:03:14

标签: kubernetes

我尝试使用Kubernetes实现分布式负载测试应用程序;每个pod都运行一个容器,它将SMB请求发送到我本地网络上的服务器。

在跟踪发送到服务器或从服务器发送的数据包之后,我发现发往服务器的所有请求都来自群集IP(因为它们应该具有Kuberentes的默认行为)。

有没有办法配置此设置,以便每个pod获取它自己的外部IP而不是通过群集连接?或者是否有另一个容器编排服务(即Docker Swarm)更适合这个用例?

2 个答案:

答案 0 :(得分:0)

您的网络可能在10.0.0.0/8之外的范围内。看看这个规则:

-A POSTROUTING ! -d 10.0.0.0/8 -m comment --comment "kubenet: SNAT for outbound traffic from cluster" -m addrtype ! --dst-type LOCAL -j MASQUERADE

对于除10.0.0.0/8以外的任何目标地址的数据包,请使用节点IP伪装地址。

答案 1 :(得分:0)

不幸的是,群集中的所有pod都始终位于NAT后面,这就是为什么你总能看到群集IP的原因。但是,您可以尝试使用一些变通方法来避免此NAT。例如,您可以尝试使用hostNetwork: true进行部署。您的pod将在您的网络中启动,而不是在NAT后面。此外,您可以使用一些网络插件。