快速扩容 Node 的 podCIDR IP范围

  1. 1. pre-post()
  2. 2. 修改Node

pre-post()

为了更好的压榨节点(因为穷买不起第二台), 所以在单台机器上跑了更多的服务,从而导致了更多的pod需要IP分配,而超量则产生了一个异常 failed to allocate for range 0: no IP addresses available in range set, 节点默认安装下来是 /16 的段,而每个节点会分到 /24 段,这意味着每个节点最多可分配 256 个 POD IP,这对于我这种精扒皮来说远远不够,所以就需要对节点的IP段进行扩容,让每个节点能分到更多的IP

修改Node

由于 Node 信息无法直接修改,这里采取一种变相措施(有一定风险,自己承担),保存Node的配置,修改Node中PodCIDR信息,然后删除掉Node资源,趁Kubelet还没有反应过来就偷偷把修改过的Node资源加回去

保存 node.yaml

1
$ kubectl get node test-worker -o yaml > node.yaml

修改 node.yaml 的 podCIDR

1
2
3
4
5
6
...
spec:
podCIDR: 10.32.2.0/22
podCIDRs:
- 10.32.2.0/22
...

这里我们只需要改为 22 就能让每个节点pod的IP可用数量翻倍得到 1022 个IP,对我来说就足够用了

删除 node 信息

1
$ kubectl delete node test-worker

导入节点

1
$ kubectl apply -f ./node.yaml

然后就完成了,创建新pod的时候,就会从podCIDR和IP缓存文件信息里找可用IP创建,(不过奇怪的是我的pod并没有超过200,但依然出现IP池短缺的问题,可能是flannel在销毁pod后并没有销毁IP信息,导致IP一直被占用)