K8S集群部署flannel分配IP冲突的解决方法

这两天在为集群里的node部署flannel时碰到个很狗血的错误,在其中一台node启动flannel后,其它任意一台都无法再加入子网,输出错误如下:
7月 13 11:21:44 node-2 flanneld-start[69862]: I0713 11:21:44.709794   69862 local_manager.go:179] Picking subnet in range 173.28.1.0 ... 173.28.0.0
7月 13 11:21:44 node-2 flanneld-start[69862]: E0713 11:21:44.709856   69862 network.go:102] failed to register network: failed to acquire lease: out of subnets
7月 13 11:21:45 node-2 flanneld-start[69862]: I0713 11:21:45.711991   69862 local_manager.go:179] Picking subnet in range 173.28.1.0 ... 173.28.0.0
7月 13 11:21:45 node-2 flanneld-start[69862]: E0713 11:21:45.712011   69862 network.go:102] failed to register network: failed to acquire lease: out of subnets
7月 13 11:21:46 node-2 flanneld-start[69862]: I0713 11:21:46.718920   69862 local_manager.go:179] Picking subnet in range 173.28.1.0 ... 173.28.0.0
7月 13 11:21:46 node-2 flanneld-start[69862]: E0713 11:21:46.719033   69862 network.go:102] failed to register network: failed to acquire lease: out of subnets
7月 13 11:21:47 node-2 flanneld-start[69862]: I0713 11:21:47.725058   69862 local_manager.go:179] Picking subnet in range 173.28.1.0 ... 173.28.0.0
7月 13 11:21:47 node-2 flanneld-start[69862]: E0713 11:21:47.725118   69862 network.go:102] failed to register network: failed to acquire lease: out of subnets
7

原因是172.28.1.0这个IP已经被分配给了第一台连接的主机,检查etcd发现subnets下仅有一个IP段:

[root@localhost ~]# etcdctl get /flannel/network/config
{"Network":"173.28.0.0/24"}
[root@localhost ~]# etcdctl ls /flannel/network/subnets/
/flannel/network/subnets/172.18.0.128-25

后来查资料发现flannel在ETCD中的SubnetLen参数缺省值是24,怀疑跟IP池分配冲突,于是调整参数为{"Network":"173.28.0.0/16"}

问题解决。

值于为什么SubnetLen和分配IP池相同会导致此种错误,暂不清楚

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值