图解-Kubernetes&OpenShift容器网络发展

云计算 云原生
OVN虽然很多功能(LB,Gateway,DNS, DHCP)依然使用OVS进行底层流量转发,但是大幅度提升了上层应用(Openstack、Kubernetes、Openshift)的管理能力。

与传统的虚拟化相比,Kubernetes容器的生命周期更短、数量密度更高、集群变更速度更快。容器网络就必须对集群节点之间的高速通信进行充分的考量。除此之外,在企业级的容器云平台上,承载众多租户的计算负载之间资源的安全隔离,也必须要考虑到的因素。

显而易见,传统的物理网络架构无法满足容器高灵活性的需求,容器网络必须要有一种崭新的设计架构。Kubernetes快速发展演进,其中网络这块发展变革最快,生态最繁荣。

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

图片

1、单节点容器网络

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


图片

2、Kubernetes Flannel网络

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


图片

3、多租户 + NetworkPolicy容器网络

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


图片

4、SDN容器网络

SDN容器网络,随着技术快速的发展,尤其是近几年大型国企数字化转型加速,各种各样的应用容器化运行之后,OVS容器网络的局限性开始突显。首先就是统一控制平面效率不高。其次是OVS借助每个节点上iptables实现,iptables实现NAT时性能开销大,同时Kubernetes Service管理复杂。最后是IPv6与Windows等新需求难以支持。

OVN是从OVS发展演进而来,是openvSwitch原生控制层实现,用于将分布式的openvSwitch交换机统一管理。OVN是集中式SDN控制器,实现集群层面做网络编排,管理组件高可用,使用OpenFlow控制协议,利用OVS实现网络转发。


图片

5、总结

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

本文转载自微信公众号「巨子嘉」,可以通过以下二维码关注。转载本文请联系巨子嘉公众号。

责任编辑:姜华 来源: 巨子嘉
相关推荐

2019-10-24 10:25:32

Kubernetes网络集群

2020-07-08 09:36:03

Kubernetes容器开发

2021-11-18 23:00:22

Kubernetes容器工具

2022-04-24 10:42:59

Kubernete容器网络Linux

2022-02-23 20:20:48

Kubernetes网络模型

2021-12-27 10:40:13

Kubernetes网络图解Linux

2019-12-06 14:24:58

Kubernetes容器YAML

2015-11-26 09:51:57

OpenShift 3Docker开源PaaS

2022-07-01 12:00:56

Kubernete网络模型

2019-12-09 10:40:15

YAMLBashKubernetes

2015-01-19 09:57:46

Kubernetes

2018-06-28 15:21:29

DockerKubernetes容器

2019-12-20 10:45:47

Kubernetes容器网络

2020-07-06 07:52:10

Kubernetes网络通信

2021-10-25 06:25:22

红帽KubernetesOpenShift 4

2022-04-02 08:14:25

K8s容器通信方案云原生

2017-05-23 16:11:40

红帽PaaSOpenShift

2022-03-30 16:26:21

红帽OpenShift人工智能

2019-08-29 14:46:15

Kubernetes网络通信

2017-02-05 11:13:02

红帽
点赞
收藏

51CTO技术栈公众号