繁体   English   中英

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

[英]Unable to communicate between pods running on different nodes in Kubernetes

我一直在使用Kubernetes和Locust( 类似于此 )构建分布式负载测试应用程序。

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

我的集群的架构如下:

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

截至目前,我不相信这种情况正在发生 我的群集显示我的所有部署都运行良好并且正在运行 ,但是我无法访问在我的主节点以外的节点上运行的任何从属实例的日志。 这让我相信我的pod无法在不同节点之间相互通信。

这是我目前的网络部署设置的问题(我非常逐字地跟着链接的指南)? 我应该从哪里开始调试此问题?

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

根据您对问题的描述,我可以猜测您遇到了由防火墙或网络配置错误导致的连接问题。

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

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

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

以下是您应该在CoreOS网站提供的节点上打开的端口列表:

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

在所有节点上启用了ip forwarding。

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

如果不是这样启用它并测试它。

echo 1 > /proc/sys/net/ipv4/ip_forward

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM