BGP 简介
简单说就是通过 tcp 协议, 各个节点互相交流自身的路由信息的一种方式;
又因为是基于tcp的, 所以可以很方便的跨数据中心交流;
calico 和 flannel 怎么选型
简单说就是网络环境复杂时, 使用 flannel 网络, 因为其封装的特性所以兼容性很好;
适合跨数据中心, 跨云, 跨供应商等场景使用;
如果是可控环境, 即可以很方便的对网络中各个主机单元和网络节点进行管理, 则优先考虑 calico 这种路由模式的网络插件。
calico 简介
简单说就是通过各种路由来代替覆盖网络, 减少了封装和解封装时的性能开销;
但是 calico 也是一个网络框架, 也有多种具体的实现方式;
例如: BGP 模式,IPIP 模式, eBPF 模式
默认配置安装后是采用的 ipip 模式,也是一个覆盖网络, 抓包时可以很明显的看到有两个ip层的报文;
需要修改一些配置才能使用 BGP 模式,BGP 模式时抓包看到的是 源pod和目标pod的包, 不涉及封装相关内容;
BGP 模式简介
首先发包时已经知道应该发送给哪个目标节点(MAC地址是目标节点);
然后如果网络规模很大, 可以发包给路由器,路由器知道将包给哪个正确的节点;
有多种细分模式
-
Full-mesh 模式,即全网状连接;
简单说就是和路由器无关; 多个物理节点之间互相沟通路由情况; -
bgp rr 模式;
简单说就是选个几台主机(2个以上)来作为路由反射节点;
其它主机链接这几个反射节点, 以交流路由信息; -
bgp ToR 模式;
简单说就是节点和物理路由器建立链接, 以获取路由信息
模式选型
看具体的场景
如果就少量的几十个节点, 那么使用 Full-mesh 模式, 就可以,优点是简单, 没有单点等情况;
如果规模比较大 100+ 节点, 可以考虑 rr 反射模式, 选取离散度比较高的2-3台机器就可以;
如果节点数非常多, 可以考虑 tor 模式, 并且使用上多个 AS 来区分机房或区域;
一般情况 200 左右的节点, 可以考虑这种模式
- 单个机架或多个机架划分一个 AS,连接同一个 TOR 交换机
- tor 交换机与核心路由器, 通过 EBGP 来交换路由信息
calicoctl 工具
用户态管理工具, 主要用途, 监控, 导入导出配置
查看 node 状态
|
|
注意事项
-
默认的地址池按 /26 的网段划分成一个 block 进行分配;
也就是一个块只有 64 个ip地址, 如果主机上的pod数量超了, 则会再分配一个 block;一般来说, 我们集群是按 /16 进行规划的 pod 网络, 那么只能分配 1024 个 block;
但 64 通常是不够的,所以要么划 /25 的 block(最大 512个block),
要么就要容忍有些节点多, 有些节点少的情况;
可能会出现地址分配不均匀, 总空闲地址数量很多, 但个别节点已经无ip可分配的情况;需要提前做好规划;