《容器云平台网络架构设计.docx》由会员分享,可在线阅读,更多相关《容器云平台网络架构设计.docx(24页珍藏版)》请在优知文库上搜索。
1、1容器平台网络模型1.1 容器网络概述与传统的虚拟化相比,容器其生命周期更短、数量密度更高、集群变更速度更快.基于这些特性,容器平台网络就必须对集群节点之间的高速通信进行充分的考最.除此之外,在企业级的容器云平台上,承载众多租户的计算负载之间资源的安全隔商,也必须要考虑到的因素.显而易见,传统的物理网络架构无法满足容器平台高灵活性的需求,容器平台网络构建必须要有一种崭新的设计架构来满足,这便推动了容器平台网络设计的发展.容器网络发展到目前,已经形成了D。Cker主导的CNM模型和Google、CoreOS、Kubernetes主导的CNl模型两种模型共存的情况。CNM和CNI并不是网络实现,他
2、们是网络规范和网络体系.从研发的角度来看就是一些接口,主要是和网络管理相关的问题。容器平台的网络方案,通常可以从协议栈、穿越方式、隔离方法三个维度去设计方案:Underlay(直接穿越底层基础设施)隔商方法:V1.ANVX1.AN1.2 容器网络分类介绍1.2.1 协议栈二层解决方案,常见于传统机房或者虚拟化场空中,针对ARP和MAC(桥接模式)学习,广播风爆是这个方案最核心要解决的问遁,众所周知,二层广播,对整个集群中节点的数最也会有严格的限制.三层解决方案一般是基于BGP协议实现路由转发,通过自主学习完善整个数据中心的路由状态.这个方案的优势是IP穿透性,可以实现IP网络透传.因为基于IP
3、1所以其优势在于规模性,具有非常优秀的扩展性,但在实际使用过程中,受限于各个企业自身网络安全的考量,例如生产网和开发测试网隔留或者网络本身不支持BGP那么这个方案就受限了.二层+三层的方案,集成了前面两种方案的优势(既解决了二层规模性扩展的问题,又解决三星网络隔离受限的问题),正成为容器云网络场景下首选的协议栈层级的解决方案.1.2.2 穿越方式Underlay网络提到Underlay网络,就必须从以太网说起,以太网从最开始设计出来就是一个分布式网络,没有中心的控制节点,网路中的各个设备之间通过协议传递的方式学习网络的可达信息,由每台设备自己决定要如何转发,这直接导致了没有整体观念,不能从整个
4、网络的角度对流JS进行调控.由于要完成所有网络设备之间的互通,就必须使用通用的语言,这就是网络协议,RFC就是网络防议的法律,相当于国际法,各个设备供应商遵从国际法行事,就基本保证了整个网络世界的正需运行.UndeHay就是当前数据中心网路基础转发架构的网络,只要数据中心网络上任意两点路由可达即可,指的是物理基础蜃.我们可以通过物理网络设备本身的技术改良、扩大设备数量、带宽规模等完善Underlay网络,具包含了一切现有的传统网络技术.Overlay网络Overlay技术可以分为网络OVerIay,主机OVerlay和混合式OVerlay三大类.网络OVeHay是指通过控制协议对边缘的网络设备
5、进行网络构建和扩展,也就是本文所讲的OVerIay网络技术.OVeHay网络技术多种多样,一般采用TRI1.1.VX1.AN.GRE,NVGRE等隧道技术。TRI1.1.(TransparentInterconnectionof1.otsof1.inks)技术是电信设备厂商主推的新型环网技术;NVGRE(NetworkVirtualizationusingGenericRoutingEncapsulation)STT(StatelessTransportTunnelingProtocol)是IT厂商主推的Overlay技术;以及大冢非常熟悉的1.AN)等基于隧道的封装技术。由于这些也都是新增的
6、协议,均翕变升级现有网络设备才能支持.OVerlay网络中应用部署的位置将不受限制,网络设备可即插即用、自动配普下发,自动运行,OVerlay网络业务变化,基础网络不感知,并对传统网络改造极少,最为电要的是虚拟机和物理服务器都可以接入Overlay网络中.1.2.3 根据基础设施划分V1.AN(Virtual1.ocalAreaNetWork)意为虚拟局域网,是在交换机实现过程中涉及到的概念,由802.1Q标准所定义.由于交换机是工作在链路层的网络设备,连接在同一台交换机的终端处于同一个三层网中,同时也处于同一个广播域.当交换机接入较多的终端时,任意一台终端发送广播报文时(例如:ARP请求),
7、报文都会传遍整个网络.对于规模较大的组网场品,广播报文的泛潞对于网络通信将会造成较大的即响。V1.AN技术为这一问题提供了解决方案,V1.AN将同一网络划分为多个逻辑上的虚世子网,并规定当收到广播报文时,仅仅在其所在V1.AN中进行广播从而防止广播报文泛滥.V1.AN技术在链路层的层次中实现了广播域的隔商.隐若大数据、云计算技术的兴起以及虚拟化技术的普及,V1.AN技术的弊端逐渐显现出来,具体表现为如下3个方面:(1)虚拟化技术的发展促使大数据、云计第技术公司采用单个物理设备虚拟多台虚拟机的方式来进行组网,随着应用模块的增加,对于支持V1.AN数目的要求也在提升(8O21Q标准中的最多支持40
8、94个V1.AN的能力已经无法满足当下需求.(1) 24位长度的VNI字段值可以支持更多数量的虚拟网络,解决了V1.AN数目上限为4094的局限性的问题.(2) VX1.AN技术通过殴道技术在物理的三厩网络中虚拟二展网络,处于VX1.AN网络的终端无法察觉到VX1.AN的通信过程,这样也就使得逻辑网络拓扑和物理网络拓扑实现了一定程度的解耦,网络拓扑的配首对于物理设备的配甘的依赖程度有所降低,配舌更灵活更方便.(3) V1.AN技术仅仅解决了二层网络广播域分割的问题,而VX1.AN技术还具有多租户支持的特性,通过VX1.AN分割,各个租户可以独立组网、通信,地址分配方面和多个租户之间地址冲突的问
9、题也得到了解决.1.3总结通过本章的学习,可以初步了解容器网络相关的基他概念,主要涉及到了容器网络的协议栈、穿越方式以及隔离方式,针对协议栈,到底是采用二层互通,还是采用三层互通,还是结合两种方式的优点整合一个综合的方式取决于业务场景;针对穿越方式,是采用传统的Underlay网络,还是基于SDN的Overlay网络.和客户现场情况,以及硬件设备支持的情况都有比较大的关联;同样,隔离方式采用V1.AN还是VX1.AN,也和场景强相关.由此可见,容器云网络的设计,需要因地制宜,因材施教,从客户需求以及现场情况发出,才能制定出一个完善的解决方案.2基于DOCker网络基础和实现原理ADockerC
10、ontainerADockerContainerADockerContainerBackendNetworkFrontendNetwork图3CNM(ContainerNetworkModel)CNM模型下的DoCker网络模型如上所示.它由SandboX,Endpoint,Network三种组件组成.注意,该模型只是规定了三种组件各自的作用,他们都有各自的具体实现方式。SandbOx:Sandbox包含了一个Container的网络相关的配置,如网卡Interface,路由表等.Sandbox在1.inux上的典型实现是Networknamespace.在1.inux系统上的DoCker环境
11、中,Container,Networknamespace,Sandbox这三者是绑定在一起的.一个Sandbox可以包含多个EndPoint,这些Endpoint可以来自多个Network.Endpoint:Sandbox加入Network的方式是通过Endpoint完成的.Endpoint的典型实现方式是VethPair,每个Endpoint都是由某个Network创建.创建后,它就归属于该Network.同时,Endpoint还可以加入一个Sandbox.加入后,相当于该Sandbox也加入了此Network.Network:Network的一种典型实现是1.inuxbridge.一个Ne
12、twork可以创建多个EndPoint.将这些EndPOint加入到SandbOX,即实现了多个Sandbox的互通.总结起来:如果要想两个Container之间可以直接通信,那么最简单的办法就是由一个Network创建两个Endpoint,分别加入这两个Container对应的Sandbox.注意:不同Network之间默认的阳离性是docker通过设在Iptables完成的,通过改变Iptables的设餐,可以使得两个Network互通.标准的Docker网络支持以下4类网络模式:host模式:使用-net=host指定container模式:net=container:Name_or_I
13、D指定none模式:使用-net=none指定bridge模式:使用fet=bridge指定,设为默认值桥接模式是最常见的D。Cker容器网络类型.在桥接模式下,D。Cker会为每个容器分配IP地址及创建虚拟以太网网卡对(Veth).所有的容器都被连接到Docker在主机绑定的桥接设备上.被连接到同一个桥接设备的所有容器,都可以实现互联互通.如果容器要对外界提供服务,则用户需要格容器内的服务端口与宿主机的某一端口绑定.这样所有访问宿主机目标端口的请求都将通过DoCker代理转发到容器的服务端,最终到达应用.除了桥接模式,Docker也支持主机(host)模式,让容器直接使用宿主机的网络设备.宿
14、主机模式使得容器占用宿主机的端口资源,而且要求容器具有更高的权限,因此只有特殊需求的容器,才会使用这种模式,如OPenShift集群中的Router组件.Router主机需要监听计算节点上的端口,以接受外部的请求,因此R。Uter组件的Pod的容器网络为主机模式.本章节主要介绍了Docker网络的情况,从Docker整个生态栈入手,分析了基于单机和集群两种不同场景的Docker网络,若圭分析了在单机模式下Docker网络的情况(host/bridge/none/container).3 Kubernetes网络场景分析在实际的业务场景中,业务组件之间的关系十分红杂,特别是微服务概念的提出,应用
15、部署的粒度更加细小和灵活.为了支持业务应用组件的通信联系,Kubernetes网络的设计主要致力于解决以下场景:(1)案密播合的容器到容器之间的直接通信;(2)抽象的Pod到Pod之间的通信;(3)Pod到SerViCe之间的通信;(4)集群外部与内部组件之间的通信;3.1 容器到容器的通信在同一个Pod内的容器(Pod内的容器是不会跆宿主机的)共享同一个网络命名空间,共享同一个1.inux协议栈.所以对于网络的各类操作,就和它们在同一台机器上一样,它们甚至可以用localhost地址访问彼此的端口.这么做的结果是简单、安全和高效,也能减少将已经存在的程序从物理机或者虚拟机移植到容器的难度.如
16、图4中的阻影部分就是Node上运行者的一个Pod实例.容器1和容器2共享了一个网络的命名空间,共享一个命名空间的结果就是它们好像在一台机器上运行似的,它们打开的端口不会有冲突,可以宜接用1.inUX的本地IPC进行通信.它们之间互相访问只标要使用IoCalhoSt就可以。Nodel同一个POd容器1容器2共享网络空间图4容器到容器间通信3.2 Pod之间的通信每一个Pod都有一个真实的全局IP地址,同一个Node内的不同Pod之间可以直接采用对方Pod的IP地址通信,而不需要使用其他发现机制,例如DNS.Consul或者etcd.Pod既有可能在同一个Node上运行也有可能在不用的Node上运行,所以通信也分为两类:同一个Node内的Pod之间的通信和不同Node上的Pod之间的通信.1)