簡體   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