发布于 2022-06-14 08:26:19
CNI插件负责分配IP地址(IPAM),并确保数据包到达需要获取的位置。
每当创建新的Pod时,IPAM插件从全局池分配IP地址,Kubernetes调度程序将Pod分配给节点。Calico插件(和其他插件一样)将网络堆栈配置为接受到Pod IP的连接,并将它们路由到内部进程。这种情况发生在iptables中,并使用了一个名为Felix的辅助过程。
每个节点还运行一个鸟(BGP)守护进程,监视这些配置事件:“IP10.x.y.z托管在节点A上”。这些配置事件被转换为BGP更新,并使用打开的BGP会话发送到其他节点。当其他节点接收到这些BGP更新时,它们会对节点路由表(使用简单的ip route命令)进行编程,以确保节点知道如何到达Pod。在这个模型中,是的,每个节点都是AS。
我刚才描述的是“按计算服务器计算”模型:它适用于节点不一定位于同一L2网络的环境中的小型部署。问题是,每个节点都需要与其他节点一起维护BGP会话,其规模为O(N^2)。
因此,对于更大的部署,折衷方案是按计算服务器的每个机架运行一个(“按每个机架”)。每个机架交换机的顶部然后运行BGP,以通信路由到其他机架,而交换机内部知道如何路由数据包。
https://stackoverflow.com/questions/72604238
复制相似问题