一个CNI“鸡生蛋、蛋生鸡”的难题:Calico如何给自己分配IP?
最近在研究 CNI 时,回想起之前开发网络插件并调研 Calico 时发现的一个有趣问题:Calico 会为其自身运行的组件 Pod(calico-kube-controllers)分配 IP。Calico 是如何做到的?从 Calico 网络插件安装完成,到为自己的 Pod(calico-kube-controllers)分配 IP,Calico 在底层做了哪些操作?
这实际上就是一个“鸡生蛋,蛋生鸡”的问题。运行 Pod 需要 CNI 插件,而 CNI 插件的正常运行又依赖于自身其他 Pod 组件的运行。