常见k8s开源网络组件
  4Txe79BjyroE 2023年11月02日 46 0

目前,已经有多个开源组件支持容器网络模型。常见的网络组件,包括Flannel、Open vSwitch、直接路由和Calico。

1.Flannel

Flannel之所以可以搭建k8s依赖的底层网络,是因为它能实现以下两个功能。

(1)它能协助k8s,给每一个Node上的Docker容器分配互相不冲突的IP地址。

(2)它能在这些IP地址之间建立一个覆盖网络(Overlay Network),通过这个覆盖网络,将数据包原封不动地传递到目标容器内。

2.Open vSwitch

Open vSwitch是一个开源的虚拟交换软件,类似于Linux中的Bridge,但是功能要复杂得多。Open vSwitch的网桥可以直接建立多种通信通道(隧道),如Open vSwitch with GRE/VxLAN。这些通道的建立可以很容易地通过OVS的配置命令实现。在k8s、Docker场景下,通常主要建立L3到L3的隧道。

3.直接路由

通过直接手动写路由的方式,以实现Node之间的网络通信功能。该直接路由配置方法的问题是,在集群节点发生变化时,需要手动维护每个Node上的路由表信息,效率很低。为了有效管理这些动态变化的网络路由信息,动态地让其他Node都感知到,需要使用动态路由发现协议来同步这些变化。

在实现这些动态路由发现协议的开源软件中,常用的有Quagga、Zebra等。

4.Calico

Calico是容器网络的又一种解决方案,与其他虚拟网络最大的不同是,它没有采用overlay网络做报文的转发,提供了纯3层的网络模型。三层通信模型表示每个容器都通过IP直接通信,中间通过路由转发找到对方。

在这个过程中,容器所在的节点类似于传统的路由器,提供了路由查找的功能。要想路由能够正常工作,每个虚拟路由器(容器所在的主机节点)必须有某种方法知道整个集群的路由信息,Calico采用的是BGP路由协议,其全称是Border Gateway Protocol。

除了能用于容器集群平台Kubernetes、共有云平台AWS、GCE等,也能很容易地集成到openstack等IaaS平台。

Calico在每个计算节点利用Linux Kernel实现了一个高效的vRouter来负责数据转发。每个vRouter通过BGP协议把在本节点上运行的容器的路由信息向整个Calico网络广播,并自动设置到达其他节点的路由转发规则。

Calico保证所有容器之间的数据流量都是通过IP路由的方式完成互联互通的。Calico节点组网可以直接利用数据中心的网络结构(L2或者L3),不需要额外的NAT、隧道或者Overlay Network,没有额外的封包解包,能够节约CPU运算,提高网络通信效率。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  wwLZeziuqjLR   2023年12月11日   32   0   0 Dockercentos
  MCWYWqSAMsot   2023年12月11日   35   0   0 Docker
  DnoStTHsc0vp   2023年12月11日   30   0   0 Docker
  wwLZeziuqjLR   2023年12月08日   104   0   0 Dockercentosbash
  Yoru5qB4TSKM   2023年12月10日   39   0   0 服务器重启IP
  aYmIB3fiUdn9   2023年12月08日   50   0   0 客户端IPNATlvs