💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
# “全互联模式” 与 “路由反射模式” - 全互联模式(node-to-node mesh): 全互联模式,每一个BGP Speaker都需要和其他BGP Speaker建立BGP连接,这样BGP连接总数就是N^2,如果数量过大会消耗大量连接。如果集群数量超过100台官方不建议使用此种模式。 </br> - 路由反射模式Router Reflection(RR): RR模式中会指定一个或多个BGP Speaker为RouterReflection,它与网络中其他Speaker建立连接,每个Speaker只要与Router Reflection建立BGP就可以获得全网的路由信息。在calico中可以通过Global Peer实现RR模式。 ***** 查看当前节点的状态,可以看到都是 `node-to-node mesh` 模式。 全互联模式会造成路由条目过大,无法在大规模集群中部署。使用BGP RR(中心化)的方式交换路由,能够有效降低节点间的连接数。 ``` calicoctl node status ``` ![](https://img.kancloud.cn/66/56/6656271008341242913e11507ad0bde7_608x208.png) ### **配置BGP RR模型(使用node充当路由反射器)** #### 1、将选中当路由反射器的节点进行配置 ``` calicoctl patch node kubeadm-1 -p '{"spec": {"bgp": {"routeReflectorClusterID": "192.168.222.201"}}}' calicoctl patch node kubeadm-2 -p '{"spec": {"bgp": {"routeReflectorClusterID": "192.168.222.202"}}}' calicoctl patch node kubeadm-3 -p '{"spec": {"bgp": {"routeReflectorClusterID": "192.168.222.203"}}}' ``` > routeReflectorClusterID 一般设置成这台电脑的地址 ![](https://img.kancloud.cn/02/36/02368264e3a9ac8847f87486faac1c75_516x267.png) 给节点打上标签 ``` kubectl label node kubeadm-1 route-reflector=true kubectl label node kubeadm-2 route-reflector=true kubectl label node kubeadm-3 route-reflector=true ``` #### 2、设置对等关系 peer 与 rrs 之间设置成对等。 这样可以在 peer 中看到 rrs ,但是不能看到其他 peer ``` kind: BGPPeer apiVersion: projectcalico.org/v3 metadata: name: peer-vs-rrs # BGPPeer的名字(可以把这个看作一个RR-1组,这是第一组) spec: nodeSelector: route-reflector != 'true' # 通过节点选择器把不是 true 标签的节点,添加进 peer-vs-rrs 组 peerSelector: route-reflector == 'true' # 通过peer选择器把是 true 标签的路由反射器,添加进 peer-vs-rrs 组 ``` rrs 与 rrs 之间设置成对等。 这样可以在 rrs 中看到其他的 rrs 以及 所有的 peer ``` kind: BGPPeer apiVersion: projectcalico.org/v3 metadata: name: rrs-vs-rrs # BGPPeer的名字(可以把这个看作一个RR-2组,这是第二组) spec: nodeSelector: route-reflector == 'true' # 通过节点选择器把是 true 标签的节点,添加进 rrs-vs-rrs 组 peerSelector: route-reflector == 'true' # 通过peer选择器把是 true 标签的路由反射器,添加进 rrs-vs-rrs 组 ``` 在 peer 节点查看状态 ![](https://img.kancloud.cn/1d/b7/1db794ebb718da21b811d81c56d96b48_596x176.png) 在 rrs 节点查看状态 ![](https://img.kancloud.cn/5c/06/5c0625eee273e55f599a7fbd7dfd42bf_592x200.png) > 根据官网上面的yaml样例,他是把所有的节点都设置成对等了 > kind: BGPPeer >apiVersion: projectcalico.org/v3 >metadata: > name: peer-with-route-reflectors >spec: > nodeSelector: all() > peerSelector: route-reflector == 'true' #### 3、禁用节点之间的全互联模式 ``` vim BGP-defalut.yaml ``` ``` apiVersion: projectcalico.org/v3 kind: BGPConfiguration metadata: name: default spec: nodeToNodeMeshEnabled: false asNumber: 64512 ``` ``` calicoctl create -f BGP-defalut.yaml ``` ![](https://img.kancloud.cn/a2/42/a24226393d6c21c91d3794b84437b8db_534x85.png) 可以看到 mesh enabled 这个地方已经是 `false` 了