半亩花草 发表于 2024-5-29 15:52:10

干货收藏!Calico的BGP RouteReflector策略实践

本文分享自华为云社区《Calico BGP RouteReflector策略实践》,作者:可以交个朋友。
一 配景

容器网络组件Calico支持多种后端模式,有Overlay的IPIP、Vxlan模式,也有Underlay纯路由的BGP模式。
相比于Overlay网络模型,Underlay网络具有更高的数据面转发性能。同时在纯路由模式下,也有两种方案:Calico BGP的fullmesh方案,该方案存在一些限制,适用于小规模kubernetes集群,集群节点越多,BGP毗连就越多,需要建立大量毗连来保证网络的互通性,每增长一个节点就要成倍的增长毗连保证网络的互通性,这样的话就会利用大量的网络斲丧。所以这时就可以利用Route Reflector模式,也称为RR模式。RR模式 中会指定一个或多个BGP Speaker为RouterReflecor,它与网络中其他Speaker建立毗连,每个Speaker只要与Router Reflector建立BGP就可以得到全网的路由信息。
二 Calico BGP RouteReflector模式组网架构

在不改变IDC机房内部网络拓扑的情况下,接入层交换机和焦点层交换机建立BGP毗连,借助于机房内部已有的路由策略实现,针对Node所处的物理位置分配Pod CIDR,并在每个节点上将Pod CIDR通过BGP协议宣告给接入层交换机,实现全网通信的能力。下图基于Leaf-Spine架构做详细说明。
https://bbs-img.huaweicloud.com/blogs/img/20240527/1716791939093580063.png
组网原则:

[*]每个接入层交换机与其管理的Node二层联通,共同构成一个AS。每个节点上跑BGP服务,用于宣告本节点路由信息。
[*]焦点层交换机和接入层交换机之间的每个路由器单独占用一个AS,物理直连,跑BGP协议。焦点层交换机可以感知到全网的路由信息,接入层交换机可以感知与自己直连的Node上的路由信息。
[*]同一个主机上的pod互访通过宿主机路由器。(将linux主机当成一个路由器)
[*]同一个机架上差别node上的pod通信通过TOR(leaf)交换机
[*]差别机架上pod通信走焦点交换机
三 模拟生产场景组网搭建情况

提前准备一台Ubuntu2204操作体系的机器(规格8U16G即可)。需要在假造机上安装如下软件工具:

[*]Docker
[*]go开发情况
[*]Kind(kubernetes爱好小组开发的一款kuberntes in docker软件,可用来快速搭建k8s测试情况,kind安装需要主机上先安装go,kind安装版本可选v0.20.0版本)
[*]ContainerLab(利用容器技能构建的假造网络平台,可以利用vyos镜像构建假造的交换机路由器。建议安装v0.42.0版本的containerlab)
https://bbs-img.huaweicloud.com/blogs/img/20240527/1716799320687779538.png
3.1 kubernetes 情况搭建

kubernetes集群版本为: 1.27.3
集群规模为1 master,3 work node
集群构建脚本如下: 1-setup-env.sh
#!/bin/bashdateset -v# 1.prep noCNI envcat
页: [1]
查看完整版本: 干货收藏!Calico的BGP RouteReflector策略实践