原文连接:https://github.com/containernetworking/cni/blob/master/SPEC.md
General consideration
CNI的想法是先让容器runtime为每个容器创建一个新的network namespace,之后再决定容器应该属于哪个network。而对于每个network,需要决定执行哪个插件。
CNI Plugin
Overview
每个CNI插件都是一个可执行文件,能被例如Docker这样的容器管理系统直接调用。通常,CNI插件用于将一个网卡插入容器的network namespace,并且在宿主机中做一些必要的配置。之后,还要给网卡赋上IP,并且通过调用合适的IPAM插件来建立和IP Address Management section一致的路由规则。
Parameters
ContainerID:该项是可选的但是必须的。不一定是实际的ContainerID,也可以是Pod ID,但必须保证全局唯一。
Network configuration:一个用于描述容器所加入的网络的JSON文件。
Extra argument:在每个容器的基础配置上提供了额外的灵活性。
Name of the interface inside the container:该名字需要被赋给容器内的网卡,通常,它需要和标准的Linux网卡命名规则一致。
Result
Interfaces list:对于不同的插件,该项有所不同,可能会包含sandbox的网卡名和宿主机网卡的名字,每个网卡的硬件地址,以及网卡所在的sandbox的一些细节。
IP configuration assigned to each interface:sandbox或者宿主机内的网卡的IPv4以及IPv6地址,网关以及路由。
DNS information:包含DNS信息的目录
原文:http://www.cnblogs.com/YaoDD/p/6402383.html