calico 二层互通和三层互通

calico有ipip和bgp这2种模式,推荐使用ipip+bgp。

calico agent组件

组件名称

组件功能

cni插件

与kubelet交互。

felix

维护主机路由和虚拟网卡。

bird

bgp(Border Gateway Protocol)即边界网关协议的客户端和服务端,发送自己的路由,接收别人的路由。

bgp二层互通

<目的容器小子网网段> via <目的容器所在主机IP> dev 本机主机网口

与flannel host-gw相比,calico没有创建网桥,不会把容器网卡对端veth口挂到网桥上,只是通过路由来完成转发。
如果不同节点之间bird两两建立peer,那么只支持100节点规模以内。
如果不同节点只跟中心化节点reflector建立连接,那么支持大规模场景。

为什么bgp必须要二层互通?
在不走隧道封装,且底层物理网络没有放通pod网段前提下,因为二层目的mac是目的容器所在节点mac,本节点连接的交换机必须要认识该目的mac,所以要求二层互通。

ipip三层互通

<目的容器小子网网段> via <目的容器所在主机IP> dev tunl0

与二层互通不同的是,三层互通需要在节点上创建内核tunl0 ipip设备,由路由指向该设备,完成ipip封装和解封装。
ipip在正常容器发出的报文ip头外层,再加一层ip头,源IP是本节点ip,目的IP是目的节点ip,从而完成隧道封装。

参考资料

《深入剖析kubernetes》

 

posted on 2025-02-21 21:46  王景迁  阅读(57)  评论(0)    收藏  举报

导航