K8S网络插件-calico-BGP Reflector

1、calicoctl客户端工具

calicoctl管理工具能够与calico datastore进行交互,用于管理calico系统的各种资源。

获取地址:https://github.com/projectcalico/calicoctl/releases

[root@kube-master01 calico]# mv calicoctl-linux-amd64 /usr/bin/calicoctl

[root@kube-master01 calico]# chmod +x /usr/bin/calicoctl 

也可以应用和编辑calico相关的资源

如查看POD网段使用情况:

2、BGP Reflector

默认设置下,所有节点均为对等节点,相互交换路由信息,在网络规模较小时影响不大,但是当网络规模扩大,一个节点 的路由会广播到其他所有节点,会造成性能瓶颈。

 

BGP Reflector可以将节点设置为BGP Reflector,各节点只需和这个节点建立BGP对等体,相互通告路由,大量减少通告路由。

2.1、配置反射器

如将kube-node01作为BGP Reflector

配置BGP Reflector: 编辑calico Node资源,可以直接calicoctl get node k8s-node01,然后根据需求在此基础上修改

apiVersion: projectcalico.org/v3
kind: Node
metadata:
  labels:
    route-reflector: true   #标签,后面的bgppeer根据该标签选择,bgp Reflector
  name: kube-node01  #节点名城
spec:
  bgp:
    ipv4Address: 10.0.2.201/24           #node节点IP
    ipv4IPIPTunnelAddr: 10.200.2.0    #tunl0接口ip
    routeReflectorClusterID: 1.1.1.1  #反射器标志
View Code

 配置BPGPeer,同一BGP路由集群中的各节点,都需要成为Reflector的对等节点。

kind: BGPPeer
apiVersion: projectcalico.org/v3
metadata:
  name: bgppeer
spec:
  nodeSelector: all()    #所有节点
  peerSelector: route-reflector=="true"
View Code

[root@kube-master01 calico]# calicoctl apply -f node.yaml

[root@kube-master01 calico]# cat bgppeer.yaml

可以看到,每个节点与kube-node01(10.0.2.201)都建立了对等体关系

2.2、配置了BGP Reflector和BGPPeer,可以将原来的node-to-node的网络对等关系关闭,默认是开启的

apiVersion: projectcalico.org/v3
kind: BGPConfiguration
metadata:
  name: default
spec:
  logSeverityScreen: Info   #日志级别
  nodeToNodeMeshEnabled:  false  #关闭默认的node-to-node网络
  asNumber: 64000   #AS ID
View Code

[root@kube-master01 calico]# calicoctl apply -f default-bgpconfiguration.yaml  

看到其余节点只与kube-node01建立了对等关系

3、检查路由和访问

路由和访问均正常

由于只配置了一个BGP Reflector,这个节点如果出现异常将导致节点到其他节点POD网络的路由消失,例如关闭kube-node01后,

因此最好根据规模,配置两个以上的BGP Reflector,保证高可用

 

 

 

posted @ 2022-01-28 17:57  西风发财  阅读(262)  评论(0编辑  收藏  举报