支持CNI网络
CNI配置文件相关行为描述:
- 对—cni-conf-dir目录下的合法配置文件名进行字典排序,取第一个合法配置作为default网络平面的配置;
- 每隔5s对配置目录进行扫描,重新加载更新CNI配置;
- CRI Status接口不更新CNI的网络配置;
CNI对用户可见的接口,主要涉及CNI网络配置和Pod配置中CNI网络相关的项。
- Pod配置中CNI网络相关的项,主要是设置Pod加入的附加CNI网络列表,默认情况Pod只会加入到default CNI网络平面中,可以通过该配置把Pod加入到多个CNI网络平面中。
表 1 CNI网络配置接口
附加CNI网络配置方式:
在Pod的配置文件的”annotations”中,增加一项”network.alpha.kubernetes.io/network”: “网络平面配置”;
网络平面配置为json格式,包含两项:
- name:指定CNI网络平面的名字
- interface:指定网络接口的名字
附件CNI网络配置方式示例如下:
CNI网络配置包含两种类型,文件格式都为json:
- 单网络平面配置,以.conf和.json为后缀的文件:具体的配置项请参见”附录 > CNI配置参数” 章节的 “表 CNI单网络配置参数”。
- 多网络平面配置,以.conflist为后缀的文件:具体的配置项请参见”附录 > CNI配置参数” 章节的 “表3 CNI多网络配置参数”。
如果iSulad配置了—network-plugin=cni,而且设置了default网络平面配置,那么在启动Pod的时候,会自动把Pod加入到default网络平面。如果在Pod的配置中配置了附加网络配置,那么启动Pod的时候也会把Pod加入到这些附加网络平面中。
Pod配置中和网络相关的还有port_mappings项,用于设置Pod的端口映射关系。配置方式如下:
{
"container_port": 80,
}
- protocol:表示映射使用的协议,支持tcp(用0标识)、udp(用1标识);
- container_port:表示容器映射出去的port;
- host_port:表示映射到主机的port。
StopPodSandbox的时候,会调用退出CNI网络的接口,清理网络相关的资源。
- cniVersion的版本,当前只支持0.3.0和0.3.1。由于后期可能需要支持0.1.0和0.2.0,错误日志打印时,保留了0.1.0和0.2.0的提示信息。
- name:必须是小写字符、数字、’-‘以及’.’组成; ‘.’和’-‘不能作为首字符和尾字符; 而且长度不超过200个字符。
- 扩展之后的参数,需要根据实际网络需求来配置,不需要使用的可选参数可以不写入到netconf.json文件中。