相关原理概述
先来讲讲什么是CNI?
CNI(容器网络接口)是一种操作容器网络规范,包含方法规范,参数规范等。
CNI只关心容器的网络连接,在容器创建时分配网络资源,并在删除容器时删除分配的资源。因为这个焦点,CNI有广泛的支持,规格易于实现。CNI接口只需要实现两个方法,一个创建容器时调用,一个删除容器时调用。
Kubernetes如何支持和运行遵循CNI规范的插件
kubernetes首先以插件的形式完成(pod)容器的网络资源设置。内置的插件包括:cni,kubenet,hostport等。这里简单说说kubenet。这是一个简单的网络插件,每台机器上创建一个br0网桥,根据PodCIDR为每个pod设置ip连接到br0网桥上。次方式可结合一些网络路由工具完成一个小规模的集群网络pod互联。我们主要讲CNI插件。kubernetes以cni插件来支持cni规范,调用其他厂商和个人开发的遵循cni规范的各种网络插件,例如Calico
,Flannel
等。k8s默认情况下cni模式不支持端口映射等。k8s将容器网络设置none,完全交给插件去管理容器网络资源。