重学容器17: CNI网络配置详解
本节来学习CNI的网络配置。
CNI网络配置(Network Configuration) CNI的网络配置是JSON格式的,可以是存储在磁盘中的文件,也可以由容器运行时以其他方式生成。
下面是cni json配置文件中的一些重要字段:
cniVersion(string): 描述cni配置遵循的cni规范版本(版本号为语义化版本,如0.4.0) name(string): 表示network name,在主机(或其他管理域)上的所有容器中应该是唯一的 type(string): 表示cni插件的可执行文件名 args(dictionary, optional): 由容器运行时提供的可选参数。例如,可以通过将标签添加到args下的标签字段,将标签字典传递给CNI插件 ipMasq(boolean, optional): 如果插件支持此字段,将为这个网络上的主机设置一个ip伪装(ip masquerade)。如果主机将充当分配给容器的子网的网管,那么这个配置字段是必须的 ipam(boolean, optional): 包含具体IPAM(IP地址管理)值的键值对 type(string) 表示ipam插件的可执行文件名,如dhscp, host-local, static dns(dictionary, optional): 包含具体DNS配置的键值对 nameservers(list of strings, optional): 一个对配置网络可见的按优先级顺序排列的dns服务器列表,列表中的每个值是一个IPV4或IPV6的字符串 domain(string, optional): 用于短主机名查找的本地域名 search(list of strings, optional): 用于短主机名查找的优先级排序搜索域列表,被大多数解析器(resolver)在解析时优先于domain options (list of strings, optional): 一组可以传递给解析器(resolver)的选项值 cni网络的JSON配置除了上面这些标准字段外,某个具体的插件还可以定义自己的附加字段,但如果配置了插件未定义的字段将会报错。args中配置的附加字段可以用来传递任意数据,如果插件不认识args中传递的字段,将会直接忽略而不会报错。