Kubernetes中不同节点上运行的Pod之间无法通信

时间:2018-07-02 22:46:07

标签: docker kubernetes locust

我一直在使用Kubernetes和Locust(similar to this)构建一个分布式负载测试应用程序。

我目前有一个在裸机上运行的多节点群集(在Ubuntu 18.04服务器上运行,使用Kubeadm进行设置,并将Flannel作为我的Pod联网插件)。

我的集群的体系结构如下:

  • 我在主节点上运行的是Locust应用程序的“主实例”。
  • 我在所有其他节点上都运行了Locust应用程序的“从属实例”。这些从属实例必须能够绑定到主实例的端口(默认情况下为5558)。

到目前为止,我不认为那是happening。我的集群显示我的所有部署都是healthy and running,但是我无法访问在我的主节点以外的节点上运行的任何从属实例的日志。这使我相信我的Pod无法在不同节点之间相互通信。

我当前的networkingdeployment设置是否有问题(我几乎完全按照链接的指南进行操作)?我应该从哪里开始调试此问题?

3 个答案:

答案 0 :(得分:0)

从属实例如何尝试加入主实例。您必须创建主服务(带有标签)才能访问主窗格。另外,请确保您的SDN已启动,并且从属实例可以访问主控器。您可以测试使用telnet来从属实例中控制Pod IP。

答案 1 :(得分:0)

根据您对问题的描述,我可以推测您的连接问题是由防火墙或网络配置错误引起的。

从网络角度来看,Kubernetes documentation中提到了一些要求:

  
      
  • 所有容器无需NAT即可与所有其他容器通信
  •   
  • 所有节点都可以在不使用NAT的情况下与所有容器通信(反之亦然)
  •   
  • 容器所看到的IP与其他人所看到的IP
  •   

从防火墙的角度来看,您需要确保群集流量可以通过节点上的防火墙。

这是您应该在CoreOS网站的provided节点上打开的端口的列表:

Master node inbound: TCP: 443  from Worker Nodes, API Requests, and End-Users
                     UDP: 8285,8472 from Master & Worker Nodes


Worker node inbound: TCP: 10250 from Master Nodes
                     TCP: 10255 from Heapster
                     TCP: 30000-32767 from External Application Consumers
                     TCP: 1-32767 from Master & Worker Nodes
                     TCP: 179 from Worker Nodes
                     UDP: 8472 from Master & Worker Nodes
                     UPD: 179 from Worker Nodes

Etcd node inbound:  TCP: 2379-2380 from Master & Worker Nodes

答案 2 :(得分:0)

请参阅在所有节点上启用了IP转发。

auth required pam_wheel.so group=xxxxx

如果没有这样启用它并进行测试。

# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1