

















作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
默认 Calico 是 BGP Full Mesh(全互联):N 个节点,两两建立 BGP 邻居,N² 连接,规模大了撑不住。
RR(Route Reflector):选 2–3 个节点当 RR,其他节点只和 RR 建邻居,连接数变成 2N,大幅降低 BGP 压力。
RR适用场景为私有云、物理机、底层网络可控、用BGP模式(不是VXLAN/IPIP overlay)。
- 1.集群 AS 号统一(默认 64512)
- 2.选 2–3 个稳定节点(推荐 master / 控制面)做 RR
- 3.关闭默认的 nodeToNodeMesh
Full Mesh指的是集群里每一台节点,和集群里所有其余节点全部单独建立一条 BGP 邻居(TCP 179)。
举例:你一共 5 台节点:231、232、233、66、77
231 ↔ 232、233、66、77(4 条 BGP)
232 ↔ 231、233、66、77(4 条 BGP)
233 ↔ 其余 4 台
66 ↔ 其余 4 台
77 ↔ 其余 4 台
总连接数:N*(N-1)/2,5 节点 = 10 条 BGP 会话。
因此,节点越多,连接指数暴涨:100 节点≈4950 条 BGP 连接,BIRD 进程负载拉满。
BGP Full Mesh 连接数公式:
总数 = N × (N - 1) / 2
假设900个节点,900 × 899 / 2 = 404550条BGP链接。
如果用 2 台 RR,每个节点只建 2 条连接,全集群总连接数:1800(2*900) 条,差距 200 倍!
RR 路由反射器就是用来替代 Full Mesh,启用RR后:
- 所有普通节点只和 2 台 RR 建 BGP 邻居,不再和其他业务节点互联。
- 5 节点场景:每个节点仅 2 条 BGP,总连接数大幅下降。
RR 负责收集全网路由、反射转发给所有客户端。
Calico 配置 Route Reflector 必须使用纯 BGP/IPIP 模式,VXLAN 模式不支持 RR!
只要开启了"vxlanMode: Always / CrossSubnet",Calico会自动强制启用 node-to-node BGP 全互联(mesh),你手动设置 nodeToNodeMeshEnabled: false 是不生效的!
VXLAN依赖BGP来同步隧道端点(VTEP),为了保证隧道稳定,强制使用 full mesh,不允许用 Route Reflector。
1.查看Calico的版本【很明显,客户端和服务端版本不一致】
[root@ansible99 ~]# /etc/kubeasz/bin/calicoctl version
Client Version: v3.28.4 # 默认的客户端版本安装的是3.28.4
Git commit: 122890af8
Cluster Version: v3.31.5 # 我的k8s v1.33.11安装的是v3.31.5的服务端
Cluster Type: k8s,kdd,bgp
[root@ansible99 ~]#
2.下载和我们Calicoctl服务端版本一致的软件包
[root@ansible99 ~]# wget https://github.com/projectcalico/calico/releases/download/v3.31.5/calicoctl-linux-amd64 -O /etc/kubeasz/bin/calicoctl
3.覆盖原有的软件包并测试验证
[root@ansible99 ~]# chmod +x /etc/kubeasz/bin/calicoctl
[root@ansible99 ~]#
[root@ansible99 ~]# /etc/kubeasz/bin/calicoctl version
Client Version: v3.31.5
Git commit: 2e4da40144aac869e1ed2cc220b6c4b62f32efdd
Cluster Version: v3.31.5
Cluster Type: k8s,kdd,bgp
[root@ansible99 ~]#
1.备份calicoctl.cfg.j2文件
[root@ansible99 ~]# cp /etc/kubeasz/roles/calico/templates/calicoctl.cfg.j2{,.bak}
[root@ansible99 ~]#
[root@ansible99 ~]# ll /etc/kubeasz/roles/calico/templates/calicoctl.cfg.j2*
-rw-rw-r-- 1 root root 263 Jun 8 2025 /etc/kubeasz/roles/calico/templates/calicoctl.cfg.j2
-rw-r--r-- 1 root root 263 Jun 3 06:25 /etc/kubeasz/roles/calico/templates/calicoctl.cfg.j2.bak
[root@ansible99 ~]#
[root@ansible99 ~]#
2.修改calicoctl.cfg.j2文件的使用Kubernetes进行存储
[root@ansible99 ~]# cat /etc/kubeasz/roles/calico/templates/calicoctl.cfg.j2
apiVersion: projectcalico.org/v3
kind: CalicoAPIConfig
metadata:
spec:
datastoreType: "kubernetes"
kubeconfig: "/root/.kube/config"
[root@ansible99 ~]#
1.在ansible控制节点执行打标签操作
[root@ansible99 ~]# grep connection /etc/kubeasz/roles/calico/tasks/calico-rr.yml
connection: local
[root@ansible99 ~]#
[root@ansible99 ~]#
2.打标签不在控制节点执行,因为控制节点可能不属于k8s集群内部
[root@ansible99 ~]# sed -i '/connection/s@connection@#connection@' /etc/kubeasz/roles/calico/tasks/calico-rr.yml
[root@ansible99 ~]#
[root@ansible99 ~]# grep connection /etc/kubeasz/roles/calico/tasks/calico-rr.yml
#connection: local
[root@ansible99 ~]#
[root@ansible99 ~]# dk ansible -i /etc/kubeasz/clusters/yinzhengjie-k8s/hosts all -m shell -a 'calicoctl node status'
10.0.0.231 | CHANGED | rc=0 >>
Calico process is running.
IPv4 BGP status
+--------------+-------------------+-------+----------+-------------+
| PEER ADDRESS | PEER TYPE | STATE | SINCE | INFO |
+--------------+-------------------+-------+----------+-------------+
| 10.0.0.232 | node-to-node mesh | up | 01:59:57 | Established |
| 10.0.0.233 | node-to-node mesh | up | 01:59:57 | Established |
| 10.0.0.66 | node-to-node mesh | up | 01:59:58 | Established |
| 10.0.0.77 | node-to-node mesh | up | 01:59:57 | Established |
+--------------+-------------------+-------+----------+-------------+
IPv6 BGP status
No IPv6 peers found.
10.0.0.66 | CHANGED | rc=0 >>
Calico process is running.
IPv4 BGP status
+--------------+-------------------+-------+----------+-------------+
| PEER ADDRESS | PEER TYPE | STATE | SINCE | INFO |
+--------------+-------------------+-------+----------+-------------+
| 10.0.0.231 | node-to-node mesh | up | 01:59:58 | Established |
| 10.0.0.232 | node-to-node mesh | up | 01:59:56 | Established |
| 10.0.0.233 | node-to-node mesh | up | 01:59:56 | Established |
| 10.0.0.77 | node-to-node mesh | up | 01:59:56 | Established |
+--------------+-------------------+-------+----------+-------------+
IPv6 BGP status
No IPv6 peers found.
10.0.0.232 | CHANGED | rc=0 >>
Calico process is running.
IPv4 BGP status
+--------------+-------------------+-------+----------+-------------+
| PEER ADDRESS | PEER TYPE | STATE | SINCE | INFO |
+--------------+-------------------+-------+----------+-------------+
| 10.0.0.231 | node-to-node mesh | up | 01:59:57 | Established |
| 10.0.0.233 | node-to-node mesh | up | 01:59:57 | Established |
| 10.0.0.66 | node-to-node mesh | up | 01:59:55 | Established |
| 10.0.0.77 | node-to-node mesh | up | 01:59:55 | Established |
+--------------+-------------------+-------+----------+-------------+
IPv6 BGP status
No IPv6 peers found.
10.0.0.77 | CHANGED | rc=0 >>
Calico process is running.
IPv4 BGP status
+--------------+-------------------+-------+----------+-------------+
| PEER ADDRESS | PEER TYPE | STATE | SINCE | INFO |
+--------------+-------------------+-------+----------+-------------+
| 10.0.0.231 | node-to-node mesh | up | 01:59:58 | Established |
| 10.0.0.232 | node-to-node mesh | up | 01:59:56 | Established |
| 10.0.0.233 | node-to-node mesh | up | 01:59:56 | Established |
| 10.0.0.66 | node-to-node mesh | up | 01:59:56 | Established |
+--------------+-------------------+-------+----------+-------------+
IPv6 BGP status
No IPv6 peers found.
10.0.0.233 | CHANGED | rc=0 >>
Calico process is running.
IPv4 BGP status
+--------------+-------------------+-------+----------+-------------+
| PEER ADDRESS | PEER TYPE | STATE | SINCE | INFO |
+--------------+-------------------+-------+----------+-------------+
| 10.0.0.231 | node-to-node mesh | up | 01:59:58 | Established |
| 10.0.0.232 | node-to-node mesh | up | 01:59:58 | Established |
| 10.0.0.66 | node-to-node mesh | up | 01:59:56 | Established |
| 10.0.0.77 | node-to-node mesh | up | 01:59:56 | Established |
+--------------+-------------------+-------+----------+-------------+
IPv6 BGP status
No IPv6 peers found.
[root@ansible99 ~]#
1.开启BGP的RR模式
[root@ansible99 ~]# vim /etc/kubeasz/clusters/yinzhengjie-k8s/config.yml
...
CALICO_RR_ENABLED: true
2.重新安装网络插件
[root@ansible99 ~]# dk ezctl setup yinzhengjie-k8s 06 -v
[root@ansible99 ~]# dk ansible -i /etc/kubeasz/clusters/yinzhengjie-k8s/hosts all -m shell -a 'calicoctl node status'
10.0.0.232 | CHANGED | rc=0 >>
Calico process is running.
IPv4 BGP status
+--------------+---------------+-------+----------+-------------+
| PEER ADDRESS | PEER TYPE | STATE | SINCE | INFO |
+--------------+---------------+-------+----------+-------------+
| 10.0.0.231 | node specific | up | 09:52:22 | Established |
| 10.0.0.233 | node specific | up | 09:52:22 | Established |
| 10.0.0.77 | node specific | up | 09:52:22 | Established |
| 10.0.0.66 | node specific | up | 11:24:09 | Established |
+--------------+---------------+-------+----------+-------------+
IPv6 BGP status
No IPv6 peers found.
10.0.0.231 | CHANGED | rc=0 >>
Calico process is running.
IPv4 BGP status
+--------------+---------------+-------+----------+-------------+
| PEER ADDRESS | PEER TYPE | STATE | SINCE | INFO |
+--------------+---------------+-------+----------+-------------+
| 10.0.0.232 | node specific | up | 09:52:21 | Established |
| 10.0.0.233 | node specific | up | 09:52:21 | Established |
+--------------+---------------+-------+----------+-------------+
IPv6 BGP status
No IPv6 peers found.
10.0.0.77 | CHANGED | rc=0 >>
Calico process is running.
IPv4 BGP status
+--------------+---------------+-------+----------+-------------+
| PEER ADDRESS | PEER TYPE | STATE | SINCE | INFO |
+--------------+---------------+-------+----------+-------------+
| 10.0.0.232 | node specific | up | 09:52:22 | Established |
| 10.0.0.233 | node specific | up | 09:52:22 | Established |
+--------------+---------------+-------+----------+-------------+
IPv6 BGP status
No IPv6 peers found.
10.0.0.233 | CHANGED | rc=0 >>
Calico process is running.
IPv4 BGP status
+--------------+---------------+-------+----------+-------------+
| PEER ADDRESS | PEER TYPE | STATE | SINCE | INFO |
+--------------+---------------+-------+----------+-------------+
| 10.0.0.231 | node specific | up | 09:52:22 | Established |
| 10.0.0.232 | node specific | up | 09:52:22 | Established |
| 10.0.0.77 | node specific | up | 09:52:22 | Established |
| 10.0.0.66 | node specific | up | 11:24:09 | Established |
+--------------+---------------+-------+----------+-------------+
IPv6 BGP status
No IPv6 peers found.
10.0.0.66 | CHANGED | rc=0 >>
Calico process is running.
IPv4 BGP status
+--------------+---------------+-------+----------+-------------+
| PEER ADDRESS | PEER TYPE | STATE | SINCE | INFO |
+--------------+---------------+-------+----------+-------------+
| 10.0.0.232 | node specific | up | 11:24:09 | Established |
| 10.0.0.233 | node specific | up | 11:24:09 | Established |
+--------------+---------------+-------+----------+-------------+
IPv6 BGP status
No IPv6 peers found.
[root@ansible99 ~]#
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。