CNI Notes: IPAM
CNI相关笔记,本文主要记录下 IPAM 功能相关。 CNI的职责包括给 Container 分配网络设备,并且分配IP. IPAM(IP Address Management)就是指IP分配相关的功能和规范。 CNI本身只是一个规范,不同的实现在 IPAM 方面的功能集也不尽相同。下面将首先尝试说明下不同 CNI在这块的实现。 CNI实现 Calico calico开发的IPAM组件叫 calico-ipam, 它使用 calico 的 IP pool resource来管理 IP. 它的主要优势就是可以将 pool 分割成小的 block, 并且可以动态对分配给不同的 node. node 上的 ip 利用率会更高,并且可扩展性也很好。calico 目前也支持给不同的 namespace分配不同的 ip pool. 从大的方面来看,其实最终 各个CNI 实现要解决的问题都是类似的,一般区别只是 dataplane 以及具体的 CRD的设计不太一样。所以这些功能很可能(已经有了或者以后会有)出现在其他的 CNI 上面。 下面看一个实际的例子: apiVersion: projectcalico.org/v3 kind: IPPool metadata: name: external-pool spec: cidr: 172.16.0.0/26 blockSize: 29 ipipMode: Always natOutgoing: true --- apiVersion: projectcalico.org/v3 kind: IPPool metadata: name: internal-pool spec: cidr: 192.169.0.0/24 blockSize: 29 ipipMode: Always natOutgoing: true 这里面可以创建两个 IPPool, 并且可以通过给 NS 打 label 的方式,分配给不同的 NS. ...