前言G行全栈云容器大规模运行在信创服务器的虚拟机里,发现如跨NUMA访问CPU可能导致性能不均衡、容器网络和IaaS SDN耦合、虚拟层本身资源消耗等诸多问题 。为解决这些问题 , G行探索将容器运行在裸金属服务器上,推出裸金属容器平台方案,使用纯三层网络设计,其中东西向网络流量使用开源Calico容器组件,南北向网络流量使用自研ELB 。本文主要介绍Calico BGP相关技术原理、实践和思考 。
BGP介绍BGP(Border Gateway Protocol , 边界网关协议)为取代外部网关协议(EGP)协议而创建,属于经典网络路由协议 。BGP相关的开源项目有bird、goBGP 等,开源软件运行在云平台的宿主主机上,使主机与网络设备交换路由信息,实现云上网络和云下网络的通信 。
关键概念:
- AS(Autonomous System): 一个自治系统是受控于一家组织机构的路由器集合 。在企业内部AS号是统一管理的,根据网络设备的AS号异同,可分为IBGP和EBGP 。
- IBGP(Internal BGP):在相同AS路由器之间建立会话,一般认为IBGP运行在安全的网络环境 。特点是IBGP的路由信息只能传一跳,不会传递给其他IBGP路由节点 。否则,需要开启Router Reflect特性 。
- EBPG(External BGP):在不同AS路由器之间建立会话 。特点是EBGP路由器之间会同步彼此的路由 。?
文章插图
图一 网络架构
在典型Spine-Leaf架构下,Spine与Leaf之间运行EBGP协议,Leaf与裸金属服务器之间运行IBGP协议 。
Calico网络Calico是基于CNI实现的纯三层网络开源项目,首个版本在2015年发布,截止当前版本为Calico 3.26.1 。该项目已被业界广泛接受,并拥有许多大规模的实际案例 。
文章插图
图二 Calico架构示意图
1. Calico关键组件
- Felix
- Confd
- Brid
路由反射 (Route Reflector): 收到IBGP邻居发布的BGP路由 , 并反射路由给其他IBGP邻居 。
路由过滤:物理网络设备的所有路由表项会同步到本机,配置路由过滤,可以大量减少本机的路由条目 。
- Typha
2. Calico组网模式
- IPIP模式
- BGP模式
3. IPAM地址管理??Calico通过IPPool进行IPAM管理 , IPPool定义了地址池名字、地址段、blockSize等字段 。IPPool的配置样例如下:
apiVersion:crd.projectcalico.org/v1kind: IPPoolmetadata:name: ippool-test-0spec:blockSize: 32cidr: 1.1.1.0/24ipipMode: NevernatOutgoing: falsenodeSelector: “!all()”vxlanMode: Never
nodeSelector: 该字段与Kube.NETes节点的Label进行映射 。默认为all(),表示所有节点均可使用 。设置为!all() , 表示所有node均不可自动使用,可通过设置命名空间或者POD的注解,实现IPPool的绑定 。
推荐阅读
- 聊聊常见的限流算法有哪些?
- 德云社云字科仅剩13人,其中六位早已成名,今天咱聊聊剩余的七位
- 抗老面霜的最终目的到底是什么?聊聊这9款抗老面霜的真实用意
- 聊聊接口重试机制的几种解决方案
- 聊聊Golang饱受争议的Error
- 数据库索引只能用 B 树吗?
- 聊聊网络结构搜索方法AutoFormer
- 聊聊SQL中的排名问题
- 为什么不吃米饭和面后,身体很快就瘦下来了?和你聊聊减肥的误区
- 聚类算法全面总结!!