Kubernetes网络的基本要求
Kubernetes使容器技术更加抽象,其中最重要的一点是提出pod的概念,pod是Kubernetes资源调度的基本单元,pod可以简单地认为是容器的扩展,网络
每个Pod都有自己的IP地址,所有Pod都位于可以直接连接的平坦网络空间。
同一pod中的所有容器共享同一netns网络命名空间
基于这样的基本要求,我们可以知道以下事情。
在同一pod中的所有容器之间共享端口,可以直接通过localhost端口访问。
每个pod都有单独的IP,因此不需要考虑容器端口和主机端口的映射或端口冲突。
事实上,Kubernetes进一步确定了对合格群集网络的基本要求。
因为任意两个pod之间实际上可以直接通信,所以不需要显式使用NAT进行地址转换。
任意群集节点node和任意pod之间可以直接通信,不需要使用明显的地址转换,反之亦然。
任意的pod都和自己的IP看到它一样,中间不能转换地址。

也就是说,要应用于kubernetes,需要同时满足上述三点的网络模型。 事实上,早期的kubernetes没有多少网络标准。 只要提出上述基本要求,就只有满足这些要求的网络才能部署kubernetes。 基于这样的基本网络假设,是kubernetes。 直到1.1发布,Kubernetes才开始采用新的CNI (CNI )网络标准。
pod网络模型
要了解kubernetes网络模型的实现原理,必须从单个pod开始。 事实上,如果您熟悉单一pod的网络模型,您会发现kubernetes网络模型基本上遵循与容器网络模型相同的原理。
在上一个笔记本中,从docker容器到pod,在pod启动时创建pause容器以生成相应的netns网络命名空间,然后其他容器共享pause容器创建的网络命名空间。 以前也介绍了各个容器的网络模型,主要是docker0桥接设备和veth设备对连接不同的容器网络命名空间。
文/上海蓝盟 IT外包专家