Networking Kubernetes节点端口网络如何在多节点集群上工作?

Networking Kubernetes节点端口网络如何在多节点集群上工作?,networking,kubernetes,Networking,Kubernetes,我是kubernetes的新手,我正试图了解当我们有一个向外界公开端口的NodePort时,kubernetes网络是如何工作的 假设kubernetes集群中有两个节点,分别称为Node1和Node2。我们在节点2上部署了一个吊舱 然后我们为这个pod创建一个节点端口服务。为了简单起见,让我们假设所有端口(targetPort、nodePort、port)都是3000。现在,一个数据包到达节点1的端口3000(没有部署pod)。据我所知,iptables规则规定该数据包将发送到Node2上的p

我是kubernetes的新手,我正试图了解当我们有一个向外界公开端口的NodePort时,kubernetes网络是如何工作的

假设kubernetes集群中有两个节点,分别称为Node1和Node2。我们在节点2上部署了一个吊舱


然后我们为这个pod创建一个节点端口服务。为了简单起见,让我们假设所有端口(targetPort、nodePort、port)都是3000。现在,一个数据包到达节点1的端口3000(没有部署pod)。据我所知,iptables规则规定该数据包将发送到Node2上的pod。我的问题是pod在接收到数据包时会看到什么ip,以及它的响应数据包如何从外部返回到我们的初始客户端。

数据包是节点1的源NAT。节点1将源IP替换为其IP,将目标IP替换为pod IP。Pod的回复被发送到Node1,Node1将其发送回客户端

(在docs中,pod在节点1上运行,节点2是从客户端接收数据包的节点。)

  • 客户端将数据包发送到node2:nodePort
  • node2替换源IP 具有自己IP地址的数据包中的地址(SNAT)
  • 节点2替换 具有pod IP的数据包上的目标IP
  • 数据包被路由到 节点1,然后连接到端点
  • pod的回复被路由回 节点2
  • pod的回复被发送回客户端
客户端
\ ^
\ \
五\
节点1
五|
端点

谢谢您的回答,但是在这种情况下,Node1(没有pod的节点)需要打开一个端口来发送数据包,对吗?难道端口的数量不足以满足打开的连接的数量吗?从我的问题(没有pod并向Node2的pod发送数据包的那个问题)来看,为每个连接打开一个端口不是问题?我的意思是会有足够的端口用于所有连接吗?除非你从node1到同一个pod进行65535个连接,否则我认为不会有任何问题。请记住,连接由(协议、源ip、源端口、目标ip、目标端口)唯一标识。因此,节点1将能够与每个pod建立65K连接。
           client
             \ ^
              \ \
               v \
   node 1 <--- node 2
    | ^   SNAT
    | |   --->
    v |
 endpoint