我尝试使用Kubernetes实现分布式负载测试应用程序;每个pod都运行一个容器,它将SMB请求发送到我本地网络上的服务器。
在跟踪发送到服务器或从服务器发送的数据包之后,我发现发往服务器的所有请求都来自群集IP(因为它们应该具有Kuberentes的默认行为)。
有没有办法配置此设置,以便每个pod获取它自己的外部IP而不是通过群集连接?或者是否有另一个容器编排服务(即Docker Swarm)更适合这个用例?
答案 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后面。此外,您可以使用一些网络插件。