php网站怎么样,重庆今天的新消息,公众号网站怎么做的,专做商品折扣的网站PS#xff1a;文章首发公众号#xff0c;欢迎大家关注我的公众号#xff1a;aCloudDeveloper#xff0c;专注技术分享#xff0c;努力打造干货分享平台#xff0c;二维码在文末可以扫#xff0c;谢谢大家。 上篇文章介绍了容器网络的单主机网络#xff0c;本文将进一步… PS文章首发公众号欢迎大家关注我的公众号aCloudDeveloper专注技术分享努力打造干货分享平台二维码在文末可以扫谢谢大家。 上篇文章介绍了容器网络的单主机网络本文将进一步介绍多主机网络也就是跨主机的网络。总结下来多主机网络解决方案包括但不限于以下几种overlay、macvlan、flannel、weave、cacico 等下面将分别一一介绍这几种网络 PS本文仅从原理上对几种网络进行简单的对比总结不涉及太多的细节。 overlay 俗称隧道网络它是基于 VxLAN 协议来将二层数据包封装到 UDP 中进行传输的目的是扩展二层网段因为 VLAN 使用 12bit 标记 VLAN ID最多支持 4094 个 VLAN这对于大型云网络会成为瓶颈而 VxLAN ID 使用 24bit 来标记支持多达 16777216 个二层网段所以 VxLAN 是扩展了 VLAN也叫做大二层网络。 overlay 网络需要一个全局的“上帝”来记录它网络中的信息比如主机地址子网等这个上帝在 Docker 中是由服务发现协议来完成的服务发现本质上是一个 key-value 数据库要使用它首先需要向它告知注册一些必要的信息如网络中需要通信的主机然后它就会自动去收集、同步网络的信息同时还会维护一个 IP 地址池分配给主机中的容器使用。Docker 中比较有名的服务发现有 Consul、Etcd 和 ZooKeeper。overlay 网络常用 Consul。 创建 overlay 网络会创建一个 Linux bridge br0br0 会创建两个接口一个 veth2 作为与容器的虚拟网卡相连的 veth pair另一个 vxlan1 负责与其他 host 建立 VxLAN 隧道跨主机的容器就通过这个隧道来进行通信。 为了保证 overlay 网络中的容器与外网互通Docker 会创建另一个 Linux bridge docker_gwbridge同样该 bridge 也存在一对 veth pair要与外围通信的容器可以通过这对 veth pair 到达 docker_gwbridge进而通过主机 NAT 访问外网。 macvlan macvlan 就如它的名字一样是一种网卡虚拟化技术它能够将一个物理网卡虚拟出多个接口每个接口都可以配置 MAC 地址同样每个接口也可以配自己的 IP每个接口就像交换机的端口一样可以为它划分 VLAN。 macvlan 的做法其实就是将这些虚拟出来的接口与 Docker 容器直连来达到通信的目的。一个 macvlan 网络对应一个接口不同的 macvlan 网络分配不同的子网因此相同的 macvlan 之间可以互相通信不同的 macvlan 网络之间在二层上不能通信需要借助三层的路由器才能完成通信如下显示的就是两个不同的 macvlan 网络之间的通信流程。 我们用一个 Linux 主机通过配置其路由表和 iptables将其配成一个路由器当然是虚拟的就可以完成不同 macvlan 网络之间的数据交换当然用物理路由器也是没毛病的。 flannel flannel 网络也需要借助一个全局的上帝来同步网络信息一般使用的是 etcd。 flannel 网络不会创建新的 bridge而是用默认的 docker0但创建 flannel 网络会在主机上创建一个虚拟网卡挂在 docker0 上用于跨主机通信。 组件方式让 flannel 多了几分灵活性它可以使用二层的 VxLAN 隧道来封装数据包完成跨主机通信也可以使用纯三层的方案来通信比如 host-gw只需修改一个配置文件就可以完成转化。 weave weave 网络没有借助服务发现协议也没有 macvlan 那样的虚拟化技术只需要在不同主机上启动 weave 组件就可以完成通信。 创建 weave 网络会创建两个网桥一个是 Linux bridge weave一个是 datapath也就是 OVSweave 负责将容器加入 weave 网络中OVS 负责将跨主机通信的数据包封装成 VxLAN 包进行隧道传输。 calico calico 是一个纯三层的网络它没有创建任何的网桥它之所以能完成跨主机的通信是因为它记住 etcd 将网络中各网段的路由信息写进了主机中然后创建的一对的 veth pair一块留在容器的 network namespace 中一块成了主机中的虚拟网卡加入到主机路由表中从而打通不同主机中的容器通信。 calico 相较其他几个网络方案最大优点是它提供 policy 机制用户可以根据自己的需求自定义 policy一个 policy 可能对应一条 ACL用于控制进出容器的数据包比如我们建立了多个 calico 网络想控制其中几个网络可以互通其余不能互通就可以修改 policy 的配置文件来满足要求这种方式大大增加了网络连通和隔离的灵活性。 总结 1、除了以上的几种方案跨主机容器网络方案还有很多比如RomanaContiv 等本文就不作过多展开了大家感兴趣可以查阅相关资料了解。 2、跨主机的容器网络通常要为不同主机的容器维护一个 IP 池所以大多方案需要借助第三方的服务发现方案。 3、跨主机容器网络按传输方式可以分为纯二层网络隧道网络大二层网络以及纯三层网络。 我的公众号 aCloudDeveloper 分享的内容包括但不限于云计算虚拟化、容器、OpenStack、K8S、雾计算、SDN、OVS、DPDK、Linux、Python、C/C编程技术等内容欢迎大家关注。