Calico IPAM

同事发现内网新搭建的K8S集群,某个node的路由记录,没有被聚合。这台node上的每一个pods,都单独生成了一条路由记录。触发我的纠结病,于是开始了长达两天的追查。也顺带把Calico的文档扫了一遍。

  • 集群跨两层办公室机房,node本身就跨网段,ipip 也设置为CrossSubnet,所以出现了tunl0的设备。
  • pods的cidr为 10.200.0.0/23, 共计512个IP地址
  • calico的IPP中,定义的blocksize为默认值26。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[root@ip-10-20-0-196 calico_init]# ip r
default via 10.20.0.1 dev ens192
10.20.0.0/24 dev ens192 proto kernel scope link src 10.20.0.196
10.220.0.0/26 via 10.20.0.223 dev ens192 proto bird
10.220.0.64/26 via 10.20.0.193 dev ens192 proto bird
10.220.0.128/26 via 10.20.0.191 dev ens192 proto bird
10.220.0.143 via 10.20.1.152 dev tunl0 proto bird onlink
10.220.0.145 via 10.20.1.152 dev tunl0 proto bird onlink
10.220.0.146 via 10.20.1.152 dev tunl0 proto bird onlink
10.220.0.160 via 10.20.0.228 dev ens192 proto bird
10.220.0.161 via 10.20.0.228 dev ens192 proto bird
10.220.0.173 via 10.20.1.152 dev tunl0 proto bird onlink
10.220.0.174 via 10.20.1.152 dev tunl0 proto bird onlink
10.220.0.192/26 via 10.20.0.198 dev ens192 proto bird
10.220.1.0/26 via 10.20.0.197 dev ens192 proto bird
10.220.1.64/26 via 10.20.0.228 dev ens192 proto bird
10.220.1.128/26 via 10.20.0.204 dev ens192 proto bird
blackhole 10.220.1.192/26 proto bird
10.220.1.194 dev caliafe1d50ff0f scope link
10.220.1.195 dev cali9420a200f80 scope link
10.220.1.198 dev cali7a9789f2db7 scope link
10.220.1.200 dev cali68093c17d26 scope link
169.254.0.0/16 dev ens192 scope link metric 1002
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown

由于路由的聚合,取决于 calico ipp 中blocksize定义,但是ipp反复比对,也是正常。

最终觉悟的是,发现10.20.1.151 node是的pods ip并不是完整的一段。从而找到了最终答案。

答案: 我们划的网络是10.200.0.0/23. 所以总共有512个ip
而calico的blocksize值为26,所以每一个node 可以有64个pods。那么512可以有8个node。结果我们的集群,3台master,3台rooh ceph,1台jenkins。所以集群数量轻而易举的超越了8台。等到集群出现第八个节点时,calico 已经无法聚合路由记录,遍出现了零散的路由,随着集群node的增加,问题也会渐渐凸显。

9B034FC4-883A-4BE5-AA03-23D85E8F870F.png

集群目前的状态

目前内网集群采用BGP模式,full mesh 。没有用Route Reflect,原因是机器可能迁移至长沙,集群如无意外要拆了重建😵。所以也就先不该动了。目前,通过核心路由器上添加记录,实现开发办公电脑无缝打通pods/ SVC网络。我起初规划的方案是采用BGP的RR模式,为E3/ E7/ E9,每一层楼设置BGP node,然后再分配不同的IP Pools,用以区别。可是….

Author: Chandler Kwok
Link: http://yoursite.com/2020/03/23/calico-ipam/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.