干货收藏!Calico的BGP RouteReflector策略实践
内容提要
本文介绍了Calico BGP RouteReflector策略的实践,通过使用Route Reflector模式减少BGP连接数量,提高网络性能。文章详细介绍了Calico BGP RouteReflector模式的组网架构和搭建环境,并提供了相关的配置文件和脚本,实现集群内外的通信和访问。
延伸解读
为什么大规模集群需要Route Reflector
Calico BGP的fullmesh模式要求每个节点与其他所有节点建立BGP连接,节点数增加时连接数呈平方级增长,会消耗大量网络资源。Route Reflector模式通过指定一个或多个BGP Speaker作为路由反射器,其他节点只需与反射器建立连接即可获得全网路由,从而显著减少BGP连接数量,更适合大规模Kubernetes集群。
组网架构与AS划分原则
文章采用Leaf-Spine架构,在不改变IDC机房内部网络拓扑的前提下,将每个接入层交换机与其管理的Node二层联通并划入同一个AS,核心层与接入层交换机之间每个路由器单独占用一个AS并物理直连运行BGP。这样核心层可感知全网路由,接入层仅感知直连Node的路由,Pod CIDR按Node物理位置分配并通过BGP宣告。
从fullmesh切换到RR模式的关键操作
部署Calico CNI时需手动关闭默认的IPIP模式以启用BGP模式。安装后节点间默认建立fullmesh全连接,需通过calicoctl应用BGPConfiguration将nodeToNodeMeshEnabled设为false来关闭全连接。随后为每个Node配置AS号和IP,并通过BGPPeer资源指定对端Leaf交换机作为路由反射器,使节点成为RR客户端。
验证BGP路由与外部访问
配置完成后,可在节点上查看BGP信息,确认不再是fullmesh形式,node specific表示该节点为路由反射器客户端。在Leaf交换机上查看路由表,应能看到K8s集群的Pod路由信息,说明外部可访问Pod。文章还通过部署DaemonSet和NodePort Service进行访问测试,并指出若核心交换机与公网配置EBGP同步路由,公网流量也能进入集群。
Q&A
Calico的BGP RouteReflector策略有什么优势?
Calico的BGP RouteReflector策略可以减少BGP连接数量,避免全连接带来的网络消耗,从而提高网络性能。
如何搭建Calico BGP RouteReflector的环境?
搭建环境需要Ubuntu 22.04、Docker、Kind和ContainerLab等工具,并按照提供的脚本进行配置。
Calico BGP RouteReflector模式的组网架构是怎样的?
组网架构中,接入层交换机与核心层交换机通过BGP连接,节点通过BGP协议宣告路由信息,实现全网通信能力。
Calico CNI插件如何配置以启用BGP模式?
需要手动关闭ipip模式,确保不通过ipip/vxlan封装,从而启用BGP模式。
在Calico中如何关闭BGP全连接模式?
可以通过执行配置脚本,设置BGPConfiguration中的nodeToNodeMeshEnabled为false来关闭全连接模式。
如何进行BGP验证测试以确保网络互通性?
可以通过集群外访问Pod进行BGP验证测试,确保路由信息正确并且网络互通。