云原生网络架构

举报
云猫1 发表于 2022/05/27 20:46:55 2022/05/27
【摘要】 容器网络以容器的典型实现 Docker 为例,其自身在网络架构上默认采用桥接模式,即 Linux 网桥模式,创建的每一个 Docker 容器都会桥接到这个 docker0 的网桥上,形成一个二层互联的网络。同时还支持 Host 模式、Container 模式、None 模式的组网。Host 模式:host 模式下 docker 不会为容器创建网络名称空间而是与宿主机共用一个网络名称空间,并使...

容器网络
以容器的典型实现 Docker 为例,其自身在网络架构上默认采用桥接模式,即 Linux 网桥模式,创建的每一个 Docker 容器都会桥接到这个 docker0 的网桥上,形成一个二层互联的网络。同时还支持 Host 模式、Container 模式、None 模式的组网。

Host 模式:host 模式下 docker 不会为容器创建网络名称空间而是与宿主机共用一个网络名称空间,并使用宿主机的网卡、端口等信息,但是其他名称空间,比如用户、文件系统等还是和宿主机隔离开的。
Bridge 网络模式:这是容器默认的设置,创建的容器默认会连接到 docker 的网桥上(即 docker0),通过 docker 网桥及 iptables nat 表配置与宿主机进行通信。
Container 网络模式:指定新创建的容器与已存在的容器共享网络名称空间,新创建的容器不会创建网卡,而是与已存在的容器共享一个网卡、IP 等,两个容器之间可以通过 lo 回环网卡设备进行通信,但是其他名称空间,比如用户、文件系统等还是和容器隔离开的。
None 网络模式:none 模式下创建的容器除了自带的 lo 回环网卡设备外,没有任何网卡、路由等信息,就是一种封闭式容器。这种模式下给了用户很大的自由度,用户可以根据自己的需求来定义网络环境。


K8S 网络
容器网络接口(Container Network Interface,CNI)是由 Google 和 CoreOS 主导制定的容器网络标准,综合考虑了灵活性、扩展性、IP 分配、多网卡等因素。CNI 旨在为容器平台提供网络的标准化。目前采用 CNI 提供的网络方案一般分为两种:Overlay 组网方案和路由组网方案。

Overlay 组网:以 Flannel、Cilium、Weave 等为代表的容器集群组网架构,默认均采用基于隧道的 Overlay 组网方案。比如,Flannel 会为每个主机分配一个 Subnet,Pod 从该 Subnet 中分配 IP,这些 IP 可在主机间路由,Pod 间无须 NAT 和端口映射就可以跨主机通信。而在跨主机间通信时,会采用 UDP、VxLAN 等进行隧道封装,形成 Overlay 网络。
路由组网:以 Callico 为代表的容器组网架构提供了一个纯三层的网络模型。在这种三层通信模型中,每个 Pod 都通过 IP 直接通信。Callico 采用 BGP 路由协议,使得所有的节点和网络设备都记录下全网路由,这样每个容器所在的主机节点就可以知道集群的路由信息。整个通信的过程中始终都是根据 BGP 进行路由转发,并没有封包、解包的过程,这样转发效率就会快很多。然而这种方式会产生很多无效的路由,同时对网络设备路由规格要求较大。


服务网格
当前在云原生网络中,服务网格(Service Mesh)是一个非常流行的架构方案。与 SDN 类似,Service Mesh 通过逻辑上独立的数据平面和控制平面来实现微服务间网络通信的管理。但是 Service Mesh 并不能替代 CNI,它需要与 CNI 一起提供层次化微服务应用所需要的网络服务。这就可以看出,Service Mesh 与 SDN 还是有着一定的区别,SDN 主要解决的是 L1~L4 层的数据包转发问题,而 Service Mesh 则主要解决 L4/L7 层微服务应用间通信的问题。二者可以通过互补配合的方式,共同实现云原生网络架构。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。