🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ### **整体架构图** * ipblock-initializer:Deployment起的一个容器,使用hostnet,容器的IP范围作为它的启动参数,它负责把这个IP范围创建成一个CR对象名字叫default * limdiag-node:以daemonset起的容器, 它有一个容器:一个initial-container叫install-cni;一个limdiag-node负责创建cni网桥把物理网卡桥接到网桥上 * CNI:在每个节点上,会有两个可执行文件,limdiag和limdiag-ipam * limdiag:该二进制文件负责创建veth-pair,把容器连到网桥上,设置容器内的IP,路由,DNS信息;它会调用limdiag-ipam获取IP * limdiag-ipam:该二进制文件负责给容器分配IP,IP的分配机制见后面 ### **IPAM** 当ipblock-initializer初始化了IPblock对象后,limdiag-ipam就可以从这些对象中,去获取未分配的IP,然后从这些对象中把未分配的IP去掉。当删除一个容器时,limdiag-ipam就需要把这个IP归还回IPblock对象。 ### **CR对象** ``` apiVersion: kind: IPblock.limdiag spec: startIP: x.x.x.x endIP: x.x.x.x unallocated: - x.x.x.1 - x.x.x.2 ``` ### **部署的yaml文件** ``` to be continued ``` ### **说明** * 此次设计不考虑多个IP地址范围