在深入讨论之前,首先要理解 Route Reflector 解决的问题。
Calico 默认使用 BGP 协议在节点之间交换路由信息。在默认的 Full-mesh 模式下,每个 Calico 节点都会与集群中的其他所有 Calico 节点建立 BGP 连接。
- 
小规模集群:这种模式工作得很好。
 - 
大规模集群(例如超过 100 个节点):BGP 连接数会呈指数级增长(连接数 = N*(N-1)/2)。这会导致:
- 
巨大的资源消耗(内存、CPU)。
 - 
网络收敛速度变慢。
 - 
难以管理和维护。
 
 - 
 
Route Reflector 就是为了解决这个问题而生的。它借鉴了传统网络中的概念,允许 BGP 节点(Calico 的工作节点)只与一个或几个中心化的 Route Reflector 建立连接,而不是彼此互联。Route Reflector 负责学习所有路由,并将其反射(分发)给其他所有节点。