长期支持版本

    社区创新版本

      支持CNI网络

      描述

      实现CRI接口对接CNI网络的能力,包括CNI网络配置文件的解析、CNI网络的加入和退出。Pod需要支持网络时,例如通过canal等容器网络插件提供网络能力,那么需要CRI接口能够和canal实现对接,并且调用canal的接口,为Pod提供网络能力。

      CNI配置文件相关行为描述:

      • 对--cni-conf-dir目录下的合法配置文件名进行字典排序,取第一个合法配置作为default网络平面的配置;
      • 每隔5s对配置目录进行扫描,重新加载更新CNI配置;
      • CRI Status接口不更新CNI的网络配置;

      接口

      CNI对用户可见的接口,主要涉及CNI网络配置和Pod配置中CNI网络相关的项。

      • CNI网络配置相关的接口,主要是isulad指定CNI网络配置文件所在路径、CNI网络插件二进制文件所在的路径以及使用的网络模式。详情请参见表1 CNI网络配置接口
      • Pod配置中CNI网络相关的项,主要是设置Pod加入的附加CNI网络列表,默认情况Pod只会加入到default CNI网络平面中,可以通过该配置把Pod加入到多个CNI网络平面中。

      表 1 CNI网络配置接口

        

      命令行

      配置文件

      说明

      设置CNI网络插件二进制文件所在路径

      --cni-bin-dir

      "cni-bin-dir": "",

      缺省值为/opt/cni/bin

      设置CNI网络配置文件所在路径

      --cni-conf-dir

      "cni-conf-dir": "",

      系统会遍历目录下面所有后缀名为".conf"、".conflist"和 ".json"的文件。缺省值为/etc/cni/net.d

      指定网络模式

      --network-plugin

      "network-plugin": "",

      指定网络插件,默认为空字符,表示无网络配置,创建的sandbox只有loop网卡。支持cni和空字符,其他非法值会导致isulad启动失败。

      附加CNI网络配置方式:

      在Pod的配置文件的"annotations"中,增加一项"network.alpha.kubernetes.io/network": "网络平面配置";

      网络平面配置为json格式,包含两项:

      • name:指定CNI网络平面的名字
      • interface:指定网络接口的名字

      附加CNI网络配置方式示例如下:

      "annotations" : {
              "network.alpha.kubernetes.io/network": "{\"name\": \"mynet\", \"interface\": \"eth1\"}"
       }
      

        

      CNI网络配置说明

      CNI网络配置包含两种类型,文件格式都为json:

      • 单网络平面配置,以.conf和.json为后缀的文件:具体的配置项请参见"附录 > CNI配置参数" 章节的 "表1 CNI单网络配置参数"。
      • 多网络平面配置,以.conflist为后缀的文件:具体的配置项请参见"附录 > CNI配置参数" 章节的 "表3 CNI多网络配置参数"。

      加入CNI网络列表

      如果iSulad配置了--network-plugin=cni,而且设置了default网络平面配置,那么在启动Pod的时候,会自动把Pod加入到default网络平面。如果在Pod的配置中配置了附加网络配置,那么启动Pod的时候也会把Pod加入到这些附加网络平面中。

      Pod配置中和网络相关的还有port_mappings项,用于设置Pod的端口映射关系。配置方式如下:

      "port_mappings":[
           { 
               "protocol": 1,
               "container_port": 80,
               "host_port": 8080
            }
      ]
      
      • protocol:表示映射使用的协议,支持tcp(用0标识)、udp(用1标识);
      • container_port:表示容器映射出去的port;
      • host_port:表示映射到主机的port。

      退出CNI网络列表

      StopPodSandbox的时候,会调用退出CNI网络的接口,清理网络相关的资源。

      说明:

      1. 在调用RemovePodSandbox接口之前,至少要调用一次StopPodSandbox接口
      2. StopPodSandbox调用CNI接口失败,导致的网络资源残留,由CNI网络插件负责清理。

      使用限制

      • cniVersion的版本,当前只支持0.3.0和0.3.1。由于后期可能需要支持0.1.0和0.2.0,错误日志打印时,保留了0.1.0和0.2.0的提示信息。
      • name:必须是小写字符、数字、'-'以及'.'组成; '.'和'-'不能作为首字符和尾字符; 而且长度不超过200个字符。
      • 配置文件个数不超过200个,单个配置文件大小不超过1MB。
      • 扩展之后的参数,需要根据实际网络需求来配置,不需要使用的可选参数可以不写入到netconf.json文件中。

      文档捉虫

      “有虫”文档片段

      问题描述

      提交类型 issue

      有点复杂...

      找人问问吧。

      PR

      小问题,全程线上修改...

      一键搞定!

      问题类型
      规范和低错类

      ● 错别字或拼写错误;标点符号使用错误;

      ● 链接错误、空单元格、格式错误;

      ● 英文中包含中文字符;

      ● 界面和描述不一致,但不影响操作;

      ● 表述不通顺,但不影响理解;

      ● 版本号不匹配:如软件包名称、界面版本号;

      易用性

      ● 关键步骤错误或缺失,无法指导用户完成任务;

      ● 缺少必要的前提条件、注意事项等;

      ● 图形、表格、文字等晦涩难懂;

      ● 逻辑不清晰,该分类、分项、分步骤的没有给出;

      正确性

      ● 技术原理、功能、规格等描述和软件不一致,存在错误;

      ● 原理图、架构图等存在错误;

      ● 命令、命令参数等错误;

      ● 代码片段错误;

      ● 命令无法完成对应功能;

      ● 界面错误,无法指导操作;

      风险提示

      ● 对重要数据或系统存在风险的操作,缺少安全提示;

      内容合规

      ● 违反法律法规,涉及政治、领土主权等敏感词;

      ● 内容侵权;

      您对文档的总体满意度

      非常不满意
      非常满意
      提交
      根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。
      文档捉虫
      编组 3备份