最近要组建物理机房,云上所有k8s集群全部迁移到物理机房,这里记录下基于Calico BGP 三层路由的组网方案. 适用于高可用、跨vlan、跨机房.
k8s集群组网说明:
- 不再考虑跨云,需要考虑跨VLAN、跨机房: 核心交换机与接k8s集群的RR节点互为EBGP邻接关系,k8s集群内的Pod路由通过RR作为AS边缘节点宣告给对端EBGP peer,并在RR节点开启next hop keep 始终不改变宣告的网络下一条地址.
- RR节点之间不建立IBGP以及RR连接,RR节点中的Pod网络,通过核心交换机访问
- 考虑服务IP暴露,服务IP地址规划:10.96.0.0/14,默认开启service网络在k8s集群外可达,通过RR宣告给对端EBGP节点
- Pod IP地址总池:10.88.0.0/13
- 每个节点最多254个Pod IP,24的子网掩码.
- 建议增多RR部署数量:目前规划三台master节点为RR
- 高可用考虑
- 负载及性能考虑
- 可增大集群内、跨集群等东西向带宽,防止流量瓶颈
- RR集群可per tor、per rack(s)、per dc规划部署
物理网络组网说明:
- 每组RR-CLUSTER视为底层物理网络的一个bgp peer-group,需提供每台RR标签
- 底层物理网络严格控制容器网络路由广播,防止bgp震荡
- 底层物理网络只接收容器网络路由宣告,不对容器网络开放路由宣告
实际组网架构:
image.png
veth 策略路由
image.png
FAQs:
- 为什么跟Spine建立eBGP关系
便于k8s节点的灵活性,只要k8s节点上层leaf交换机与Spine交换机建立了BGP就能学习到k8s整个集群的容器路由。