假设我们在一个群集中有2个节点。
[Node A
具有Pod的1个副本,Node B
具有2个副本。根据Google Cloud工程师的this talk (YouTube video with a time tag),路由到Node A
的请求可能会被Node B
内部的iptables
重新路由到Node A
。我对此行为有几个疑问:
iptables
的Node A
有哪些信息可了解其外部吊舱的副本?它如何知道将流量发送到哪里?
iptables
的Node B
是否可以将此请求重新路由到Node C
?如果是这样,那么出口流量将返回到Node B
-> Node A
-> Client?
我认为您可能会混淆两个子系统,即服务代理和CNI。首先是CNI,它是一个基于插件的系统,可在您所有节点上设置路由规则,以使网络看起来平坦。 Pod IP将在任何节点上正常工作。确切的发生方式因插件而异,Calico在节点之间使用BGP。然后是服务代理,通常使用iptables实现,尽管也有些可插入。这些定义了服务IP->端点IP(读取:pod IP)负载平衡。但是实际的路由由您设置的CNI插件处理。有很多特殊的模式和案例,但这是基本概述。