本博客欢迎转载,但请保留原作者信息!
作者:柯晓东
团队:华为杭州OpenStack团队
Kuryr项目是想把neutron的网络给容器用。那要怎么做呢?
一、docker那边需要先挖好坑,把网络部分的接口暴露出来。
docker把网络部分提取成了libnetwork,并为此实现了几个driver,host、overlay、null和remote,其中remote就是为用其他项目来管理docker的网络留的接口。remote采用rpc的方式将参数通过网络发给外部管理程序,外部程序处理好了后通过json返回结果给remote。
libnetwork的remote driver定义了基本的创建网络、创建port的接口,只要对应的REST Server实现了这些接口,就可以提供整套docker的网络。这些接口有:Create network、Delete network、Create endpoint、Delete endpoint、Join(绑定)、Leave(去绑定)。
remote driver的接口定义在 https://github.com/docker/libnetwork/blob/master/docs/remote.md
用remote driver分配了设备一般是不带IP的,libnetwork使用ipam driver来管理ip。这些接口有:GetDefaultAddressSpaces 获取保留IP,RequestPool获取IP地址池,ReleasePool释放IP地址池,RequestAddress获取IP地址,ReleaseAddress释放IP地址。
ipam driver的