51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

图解 Kubernetes 容器网络发展

图解 Kubernetes 容器网络发展 第1张
与传统的虚拟化相比,Kubernetes容器的生命周期更短、数量密度更高、集群变更速度更快。容器网络就必须对集群节点之间的高速通信进行充分的考量。除此之外,在企业级的容器云平台上,承载众多租户的计算负载之间资源的安全隔离,也必须要考虑到的因素。
显而易见,传统的物理网络架构无法满足容器高灵活性的需求,容器网络必须要有一种崭新的设计架构。Kubernetes快速发展演进,其中网络这块发展变革最快,生态最繁荣。

容器网络的发展,从Docker主导的CNM模型,演进到Google、CoreOS、Kubernetes主导的CNI模型。CNM与CNI并不是网络的实现,而是网络规范和网络体系。当前,容器网络CNI基本是事实的标准,除了背后开源社区的阵营不同,更多是技术迭代演进,架构优化调整。与Kubernetes在最新版本开始解耦Docker一样。下图是容器网络发展脉络,从运行效率与管理效率两个方面推动容器持续迭代优化。

图解 Kubernetes 容器网络发展 第2张 01 单节点容器网络

容器单节点网络,在单个容器主机,通过Bridge或者Macvlan等方式实现共享宿主机物理网卡,多个容器使用"端口映射"的方式共享容器主机IP地址。存在问题是如何进行大规模管理,容器间跨主机无需经过NAT无法直接通信。如下图所示:
图解 Kubernetes 容器网络发展 第3张
02 Kubernetes Flannel网络

Kubernetes Flannel网络,实现容器主机集群和跨节点Pod直连,每个容器主机分配一个网段用于容器内Pod互联。通过VxLAN协议封装实现Overlay容器网络,容器IP在物理网络上传输时使用物理机IP,其真实IP会被封装在VxLAN协议中。每个机器上有一个flanneld服务进行外部网络通信时的封包和解包。存在问题是虽然大二层带来了连通的便利,但是管控、访问控制、租户隔离没有实现,如下图所示: 图解 Kubernetes 容器网络发展 第4张
03 多租户 + NetworkPolicy容器网络

多租户 + NetworkPolicy容器网络,Openshift v3 OVS网络就是基于这个思路已经实现。通过VxLAN实现跨集群互通,使用可编程OVS流表控制每个节点上的容器流量转发控制,多租户之间的网络NetworkPolicy控制,基于Namespace级别控制,基于Pod、端口的控制。存在问题是OVS和流表依然是单机,大量的流程编程工作,SVC和LB暴露依赖iptables,性能开销较大,如下图所示。 图解 Kubernetes 容器网络发展 第5张
04 SDN容器网络

SDN容器网络,随着技术快速的发展,尤其是近几年大型国企数字化转型加速,各种各样的应用容器化运行之后,OVS容器网络的局限性开始突显。首先就是统一控制平面效率不高。其次是OVS借助每个节点上iptables实现,iptables实现NAT时性能开销大,同时Kubernetes Service管理复杂。最后是IPv6与Windows等新需求难以支持。 OVN是从OVS发展演进而来,是openvSwitch原生控制层实现,用于将分布式的openvSwitch交换机统一管理。OVN是集中式SDN控制器,实现集群层面做网络编排,管理组件高可用,使用OpenFlow控制协议,利用OVS实现网络转发。
图解 Kubernetes 容器网络发展 第6张
05 总结


OVN虽然很多功能(LB,Gateway,DNS, DHCP)依然使用OVS进行底层流量转发,但是大幅度提升了上层应用(Openstack、Kubernetes、Openshift)的管理能力。与其他的kubernetes CNI网络插件相比,OVN是真正的SDN!


赞(2)
未经允许不得转载:工具盒子 » 图解 Kubernetes 容器网络发展