Flannel网络
Flannel是CoreOS团队针对Kubernetes设计的一个网络规划服务,简单来说,它的功能是让集群中的不同节点主创建的Docker容器都具有全集群唯一的虚拟IP地址。
在默认的Docker配置中,每个节点上的Docker服务会分别负责所在节点容器的IP分配。这样导致的一个问题是,不同节点上容器可能获得相同的内外IP地址。并使这些之间能够之间通过IP地址相互找到,也就是相互ping通。

Flannel网络的特点
• 使集群中的不同Node主机创建的Docker容器都具有全集群唯一的虚拟IP地址。
• 建立一个覆盖网络(overlay network),通过这个覆盖网络,将数据包原封不动的传递到目标
容器。
• 创建一个新的虚拟网卡flannel0接收docker网桥的数据,通过维护路由表,对接收到的数据进行
封包和转发(vxlan)。
• etcd保证了所有node上flanned所看到的配置是一致的。
Flannel网络的架构
Flannel实质上是一种“覆盖网络(overlay network)”,也就是将TCP数据包装在另一种网络包里面进行路由转发和通信,目前已经支持udp、vxlan、host-gw、aws-vpc、gce和路由等数据转发方式,默认的节点间数据通信方式是UDP转发。
要理解Flannel的原理,必须掌握Flannel的架构,下图是Flannel架构图:

Calico网络原理
Calico 是一种容器之间互通的网络方案。在虚拟化平台中,比如 OpenStack、Docker 等都需要实现 工作
节点之间的互连,但同时也需要对容器做隔离控制,就像在互联网中的服务仅开放80端口、公有云的多
租户一样,提供隔离和管控机制。
而在多数的虚拟化平台实现中,通常都使用二层隔离技术来实现容器的网络,这些二层的技术有一些弊
端,比如需要依赖 VLAN、网桥和隧道等技术,其中 网桥带来了复杂性,vlan 隔离和隧道会消耗更多的
资源,并对物理环境有要求,随着网络规模的增大,整体会变得更加复杂。通过尝试把主机当作互联网
中的路由器,同样使用 BGP 同步路由,并使用 iptables 来做安全访问策略,最终设计出了 Calico 方案。
Calico网络优势
由于Calico是一种纯三层的实现,因此可以避免与二层方案相关的数据包封装的操作,中间没有任何的NAT,
没有任何的overlay,所以它的转发效率可能是所有方案中最高的,因为它的包直接走原生TCP/IP的协议栈,
它的隔离也因为这个栈而变得好做
Calico网络的优势有如下几个方面:
• 更优的资源利用
• 可扩展性
• 简单而更容易 调试
• 更少的依赖
• 可适配性
Calico网络模型
Calico网络的大概思路,即不走Overlay网络,不引入另外的网络性能损耗,而是将转发全部用三层网络的路由转发来实现。

发表回复