容器配置方法和计算节点与流程

文档序号:17322702发布日期:2019-04-05 21:37阅读:498来源:国知局
容器配置方法和计算节点与流程

本申请涉及网络技术领域,特别涉及一种容器配置方法和计算节点。



背景技术:

容器伴随着轻量级虚拟化的发展而诞生,其位于底层操作系统与上层应用之间,可以屏蔽底层操作系统的细节,来对应用开发者展现出一致的接口。主机在创建容器后,可以对该容器的互联网协议(internetprotocol,ip)地址等进行配置,配置完成后主机即可对该容器进行使用。

目前,是基于单主机对容器的ip地址进行管理,即每个主机可以为所创建的容器配置内部ip地址。如图1所示,ip地址为10.10.10.1的主机1可以为所创建的容器c1和c2,分别配置内部ip地址172.28.0.2和172.28.0.3。同样,ip地址为10.10.10.2的主机2可以为所创建的容器c3和c4,分别配置内部ip地址172.28.0.2和172.28.0.3。

这种情况下,不同主机中的容器之间的通信可以使用网络地址转换(networkaddresstranslation,nat)技术实现。例如,主机1中的容器c1与主机2中的容器c3进行通信时,容器c1可以将生成的数据报文传输到主机1的网关,主机1的网关可以将该数据报文的源地址由容器c1的内部ip地址172.28.0.2转换为主机1的ip地址10.10.10.1,继而将该数据报文转发到主机2中的容器c3。

由于不同主机中的容器相互通信时是使用其宿主机的ip地址来间接通信,也即是,对某个容器的访问实际上是通过对该容器的宿主机的访问来实现的,所以,当将某个主机中的容器迁移到其它主机中时,该容器的访问地址将会由该主机的ip地址变更为其它主机的ip地址,因而相关技术中不能支持容器的ip地址的持久化和迁移。



技术实现要素:

本申请提供了一种容器配置方法和计算节点,可以解决相关技术中不能支持容器的ip地址的持久化和迁移的问题。所述技术方案如下:

第一方面,提供了一种容器配置方法,应用于多个计算节点中的任一计算节点,所述计算节点中安装有虚拟机和网桥配置模块,所述方法包括:

所述虚拟机接收用于配置目标容器的容器配置指令,所述容器配置指令中携带目标网络标识,所述目标容器承载于所述虚拟机上,目标网络为所述目标容器需要接入的网络;

所述虚拟机生成携带有所述目标网络标识的网络资源创建请求,并将所述网络资源创建请求发送给控制节点,由所述控制节点为所述目标容器分配所述目标网络的网络资源,并将所述网络资源对应的网络资源信息发送给所述虚拟机和所述网桥配置模块,所述网络资源信息包括所述目标容器的目标地址、目标网络类型以及目标网络传输标记;

当所述虚拟机和所述网桥配置模块接收到所述控制节点发送的所述网络资源信息时,根据所述网络资源信息对所述虚拟机中创建的所述目标容器进行配置。

需要说明的是,该虚拟机中可以创建有容器;该网桥配置模块可以对该计算节点中的网桥进行配置,该网桥可以转发该虚拟机中的容器生成的数据报文;目标网络标识用于唯一标识目标网络。

另外,该网络资源创建请求中不仅可以携带目标网络标识,还可以携带该虚拟机的地址,从而便于后续控制节点可以根据该虚拟机的地址将该网络资源信息准确发送给该计算节点中的该虚拟机和该网桥配置模块。

在本发明实施例中,多个计算节点中的容器均由控制节点为其分配网络资源,也即是,该多个计算节点中的容器所使用的网络资源均由控制节点来管理,此时,该多个计算节点中的每个容器将各自拥有单独的网络资源,因而该多个计算节点中的每两个容器之间可以直接通过各自的网络资源来相互通信。在此情况下,该多个计算节点中的某个计算节点中的容器迁移到其它计算节点中时,该容器无需变更所使用的网络资源即能进行通信,从而实现了容器所使用的网络资源的持久化和迁移。

另外,本发明实施例中控制节点可以根据该多个计算节点中的各个容器所要接入的网络来为其分配网络资源,从而使得该多个计算节点中接入不同网络的容器得以隔离,而接入相同网络的容器得以直接通信,且在各个容器各自拥有单独的网络资源的情况下,接入相同网络的容器之间二层互通,各个容器的介质访问控制(mediaaccesscontrol,mac)地址相互可见。

其中,所述当所述虚拟机和所述网桥配置模块接收到所述控制节点发送的所述网络资源信息时,根据所述网络资源信息对所述虚拟机中创建的所述目标容器进行配置,包括:

当所述虚拟机接收到所述控制节点发送的所述网络资源信息时,为所述目标容器配置所述网络资源信息对应的网络资源;

当所述网桥配置模块接收到所述控制节点发送的所述网络资源信息时,将所述网络资源信息存储到网桥中,所述网桥用于转发所述目标容器生成的数据报文。

在本发明实施例中,该虚拟机为目标容器配置该网络资源信息对应的网络资源,即是对目标容器的网络属性进行配置,以使目标容器可以使用该网络资源来传输数据报文,而该网桥配置模块将该网络资源信息存储到该网桥中,即是对目标容器的传输属性进行配置,以使该网桥可以根据该网络资源信息对目标容器生成的数据报文进行转发。

其中,所述虚拟机为所述目标容器配置所述网络资源信息对应的网络资源,包括:

当所述虚拟机中不存在连接到所述目标网络的目标网络接口时,根据所述目标网络类型,在所述虚拟机中创建所述目标网络接口;

所述虚拟机以所述目标网络接口为父接口创建子接口作为所述目标容器的容器接口;

所述虚拟机将所述目标容器的容器接口的地址设置为所述目标地址。

在本发明实施例中,目标网络接口为连接到目标网络的网络接口,也即是,容器可以通过目标网络接口接入目标网络。此时,各个网络有各自单独的网络接口,而相同网络的容器可以接入相同的网络接口,从而得以实现不同网络的容器之间的隔离,实现相同网络的容器之间二层互通。

另外,以目标网络接口为父接口创建子接口作为目标容器的容器接口,即是将目标网络接口与目标容器的容器接口进行连接,此时,目标容器通过目标容器的容器接口发送的数据报文将会被传输到目标网络接口。

再者,将目标容器的容器接口的地址设置为目标地址,即是将目标容器的地址设置为目标地址,从而得以实现对目标容器的网络属性的配置。

其中,所述目标网络类型为虚拟局域网(virtuallocalareanetwork,vlan)类型,所述目标网络传输标记为目标vlan标签;所述根据所述目标网络标识和所述目标网络类型,在所述虚拟机中创建目标网络接口,包括:

在所述虚拟机中创建用于连接vlan的网络接口;

在所述网络接口中设置对应子网的vlan标签为所述目标vlan标签,得到目标网络接口。

在本发明实施例中,在该虚拟机中创建用于连接vlan的网络接口,即是在该虚拟机中创建能够为来自容器的数据报文封装vlan标签的网络接口。而在该网络接口中设置对应子网的vlan标签为目标vlan标签,即是将该网络接口能够封装的vlan标签设置为目标vlan标签,从而得到能够连接到目标网络的目标网络接口。

其中,所述目标网络类型为虚拟可扩展局域网(virtualextensiblelocalareanetwork,vxlan)类型,所述目标网络传输标记为目标vxlan标识;所述网桥配置模块将所述网络资源信息存储到网桥中,包括:

所述网桥配置模块将所述目标地址与所述目标vxlan标识对应存储到所述网桥中。

需要说明的是,该网桥配置模块将目标地址与目标vxlan标识对应存储到该网桥中,可以使得该网桥根据目标xlan标识,对地址为目标地址的目标容器生成的数据报文进行转发,从而得以实现对目标容器的传输属性的配置。

实际应用中,该网桥在接收到该计算节点之外的其它计算节点发送的数据报文时,还可以将该数据报文传输到目标容器,在此情况下,该网桥中需要存储有目标地址和目标vlan标签之间的对应关系,以便该网桥可以根据目标xlan标签,将目的地址为目标地址的数据报文传输到目标容器中。因而,该网桥配置模块将该网络资源信息存储到该网桥中时,还可以当目标网络类型为vlan类型,目标网络传输标记为目标vlan标签时,将目标地址与目标vlan标签对应存储到该网桥中。

进一步地,所述根据所述网络资源信息对所述虚拟机中创建的所述目标容器进行配置之后,还包括:

当所述目标容器接收到第一发送指令时,将生成的第一数据报文通过所述目标容器的容器接口传输到所述目标网络接口;

当所述目标网络接口接收到所述第一数据报文时,生成携带有所述第一数据报文和所述目标vlan标签的第一封装报文,并将所述第一封装报文传输到所述网桥;

当所述网桥接收到所述第一封装报文时,对所述第一封装报文进行转发。

需要说明的是,为了便于网桥对来自vlan或vxlan的数据报文进行区分,目标网络接口可以使用目标vlan标签对第一数据报文进行封装,以得到第一封装报文来传输给该网桥。该网桥接收到第一封装报文后,可以先判断第一封装报文中是否携带有vlan标签,如果携带有vlan标签,则可以确定第一封装报文来自vlan,此时,该网桥可以不对第一封装报文进行操作,直接对第一封装报文进行转发即可。

另外,该网桥对第一封装报文进行转发之后,其它计算节点可以对第一封装报文进行接收,具体地,当其它计算节点中的网桥接收到该计算节点发送的第一封装报文时,可以根据第一封装报文携带的vlan标签,将第一封装报文传输到第一封装报文所要发往的网络接口;当该网络接口接收到第一封装报文时,可以从第一封装报文中获取第一数据报文,并根据第一数据报文的目的地址将第一数据报文传输到对应的容器。

进一步地,所述根据所述网络资源信息对所述虚拟机中创建的所述目标容器进行配置之后,还包括:

当所述目标容器接收到第二发送指令时,将生成的第二数据报文通过所述目标容器的容器接口传输到所述目标网络接口;

当所述目标网络接口接收到所述第二数据报文时,将所述第二数据报文传输到所述网桥;

当所述网桥接收到所述第二数据报文时,生成携带有所述第二数据报文和所述目标vxlan标识的第二封装报文,并对所述第二封装报文进行转发。

需要说明的是,该网桥接收到第二数据报文后,可以先判断第二数据报文是否携带有vlan标签,如果没有携带vlan标签,则可以确定第二数据报文来自vxlan,此时,该网桥可以基于第二数据报文的源地址(即目标地址)获取目标vxlan标识,并生成携带有第二数据报文和目标vxlan标识的第二封装报文,对第二封装报文进行转发。

另外,该网桥对第二封装报文进行转发之后,其它计算节点可以对第二封装报文进行接收,具体地,当其它计算节点中的网桥接收到该计算节点发送的第二封装报文时,可以从第二封装报文中获取第二数据报文,并根据第二封装报文携带的vxlan标识,将第二数据报文传输到第二封装报文所要发往的网络接口;当该网络接口接收到该数据报文时,可以根据该数据报文的目的地址来将该数据报文传输到对应的容器。

进一步地,所述方法还包括:

当所述网桥接收到所述计算节点之外的其它计算节点发送的封装报文时,如果所述封装报文中携带vlan标签,则根据所述vlan标签,将所述封装报文传输到所述封装报文所要发往的目的网络接口;当所述目的网络接口接收到所述封装报文时,从所述封装报文中获取数据报文,根据所述数据报文的目的地址将所述数据报文传输到对应的容器;

如果所述封装报文中携带vxlan标识,则从所述封装报文中获取数据报文,并根据所述vxlan标识,将所述数据报文传输到所述封装报文所要发往的目的网络接口;当所述目的网络接口接收到所述数据报文时,根据所述数据报文的目的地址将所述数据报文传输到对应的容器。

第二方面,提供了一种计算节点,所述计算节点具有实现上述第一方面中容器配置方法行为的功能。所述计算节点包括至少一个功能模块,所述至少一个功能模块用于实现上述第一方面所提供的容器配置方法。

第三方面,提供了一种计算节点,所述计算节点的结构中包括处理器和存储器,所述存储器用于存储支持计算节点执行上述第一方面所提供的容器配置方法的程序,以及存储用于实现上述第一方面所述的容器配置方法所涉及的数据。所述处理器被配置为用于执行所述存储器中存储的程序。所述计算节点还可以包括通信总线,所述通信总线用于在所述处理器与所述存储器之间建立连接。

第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的容器配置方法。

第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的容器配置方法。

上述第二方面、第三方面、第四方面和第五方面所获得的技术效果与上述第一方面中对应的技术手段获得的技术效果近似,在这里不再赘述。

本申请提供的技术方案带来的有益效果是:多个计算节点中的任一计算节点中的虚拟机在接收到容器配置指令时,可以生成网络资源配置请求,并将该网络资源配置请求发送给控制节点。控制节点接收到该网络资源配置请求后,可以为目标容器分配目标容器所要接入的目标网络的网络资源,并将该网络资源对应的网络资源信息发送给该计算节点中的该虚拟机和网桥配置模块,由该虚拟机和该网桥配置模块根据该网络资源信息对该虚拟机中创建的目标容器进行配置。由于该多个计算节点中的容器所使用的网络资源均由控制节点来管理,所以该多个计算节点中的每个容器将各自拥有单独的网络资源,因而该多个计算节点中的每两个容器之间可以直接通过各自的网络资源来相互通信。在此情况下,该多个计算节点中的某个计算节点中的容器迁移到其它计算节点中时,该容器无需变更所使用的网络资源即能进行通信,从而实现了容器所使用的网络资源的持久化和迁移。

附图说明

图1是相关技术提供的一种容器配置方式的示意图;

图2a是本发明实施例提供的一种实施环境的示意图;

图2b是本发明实施例提供的另一种实施环境的示意图;

图3是本发明实施例提供的一种计算节点的结构示意图;

图4是本发明实施例提供的一种容器配置方法的流程图;

图5是本发明实施例提供的另一种计算节点的结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请的实施方式作进一步地详细描述。

在对本发明实施例进行详细地解释说明之前,对本发明实施例涉及的应用场景和实施环境予以说明。

首先,对本发明实施例涉及的应用场景进行说明。

本发明实施例可以应用于容器配置场景,具体可以应用于创建容器后,对容器的网络属性(如ip地址、mac地址等)、传输属性(如数据传输方式等)等进行配置的场景。例如,虚拟机在接收到用户触发的配置指令后,可以对已创建的容器进行配置,或者可以创建一个容器并对该容器进行配置。

然后,对本发明实施例涉及的实施环境进行说明。

图2a为本发明实施例涉及的一种实施环境的示意图。参见图2a,该实施环境包括:多个计算节点21和控制节点22,多个计算节点21中的每个计算节点21均可以通过有线连接或无线连接与控制节点22进行通信。

其中,对于多个计算节点21中的任一计算节点21,该计算节点21可以在接收到用于配置目标容器的容器配置指令时,向控制节点22发送网络资源创建请求;当控制节点22接收到该计算节点21发送的网络资源创建请求时,可以为目标容器分配网络资源,并将该网络资源对应的网络资源信息发送给该计算节点21;当该计算节点21接收到控制节点22发送的网络资源信息时,可以根据该网络资源信息对目标容器进行配置。

下面对计算节点21的结构进行说明。

参见图2b,计算节点21可以包括:虚拟机211和网桥配置模块212。虚拟机211中可以创建有容器c,且虚拟机211可以接收用于配置目标容器的容器配置指令,并根据该容器配置指令生成网络资源创建请求,将该网络资源创建请求发送给控制节点22。之后,虚拟机211和网桥配置模块212可以分别接收控制节点22发送的网络资源信息,并根据该网络资源信息来对虚拟机211中创建的目标容器进行配置。

进一步地,计算节点21中还可以包括网桥b和物理网卡eth,网桥b可以将来自容器c的数据报文通过物理网卡eth转发出计算节点21。相应地,虚拟机211中还可以包括容器管理模块2111、管理插件2112、网络接口2113和虚拟网卡eth',虚拟机211中的容器c可以将生成的数据报文通过对应的网络接口2113和虚拟网卡eth'传输到网桥b。

其中,容器管理模块2111可以接收用于配置目标容器的容器配置指令,并根据该容器配置指令生成网络资源创建请求,将该网络资源创建请求传输到管理插件2112。

其中,管理插件2112可以包括应用程序编程接口(applicationprogramminginterface,api)子模块和网络接口控制子模块。api子模块可以接收容器管理模块2111传输的该网络资源创建请求,并将该网络资源创建请求发送给控制节点22,之后,api子模块可以接收控制节点22发送的网络资源信息;网络接口控制子模块可以根据api子模块接收到的该网络资源信息,为虚拟机211中的目标容器配置该网络资源信息对应的网络资源。也即是,管理插件2112用于负责虚拟机211中的网络资源初始化。

其中,网桥配置模块212也可以接收控制节点22发送的网络资源信息,并将该网络资源信息存储到网桥b中,以便后续网桥b可以根据该网络资源信息对来自目标容器的数据报文进行转发。也即是,网桥配置模块212用于负责计算节点21中的网络资源初始化。

需要说明的是,管理插件2112可以为虚拟机211中的容器c提供网络接入能力,且其可以直接与控制节点22进行通信。实际应用中,管理插件2112和控制节点22可以在openstack架构中实现,如管理插件2112可以为openstack中的kuryr插件,控制节点22可以包括openstack中的neutron组件,此时管理插件2112可以调用neutronpublicapi来与控制节点22进行通信。

另外,网络接口2113可以为虚拟网桥,即为一个虚拟的二层交换设备,网络接口2113可以连接到对应的网络,此时,接入该网络的容器可以通过网络接口2113来相互通信。

下面对控制节点22的结构进行说明。

参见图2b,控制节点22中可以包括容器配置模块221,容器配置模块221可以在接收到计算节点21中的虚拟机211发送的网络资源创建请求时,为目标容器分配网络资源,并将该网络资源对应的网络资源信息分别发送给计算节点21中的虚拟机211和网桥配置模块212。

需要说明的是,容器配置模块221可以直接与虚拟机211中的管理插件2112进行通信,且当控制节点22是在openstack架构中实现时,容器配置模块221可以为openstack中的neutron组件。

图3是本发明实施例提供的一种计算节点的结构示意图,该计算节点可以是图2a中所示的计算节点21。参见图3,该计算节点包括至少一个处理器301,通信总线302,存储器303以及至少一个通信接口304。

处理器301可以是一个通用中央处理器(centralprocessingunit,cpu),微处理器,特定应用集成电路(application-specificintegratedcircuit,asic),或一个或多个用于控制本申请方案程序执行的集成电路。

通信总线302可包括一通路,在上述组件之间传送信息。

存储器303可以是只读存储器(read-onlymemory,rom)或可存储静态信息和指令的其它类型的静态存储设备,随机存取存储器(randomaccessmemory,ram)或者可存储信息和指令的其它类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、只读光盘(compactdiscread-onlymemory,cd-rom)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储器303可以是独立存在,通过通信总线302与处理器301相连接。存储器303也可以和处理器301集成在一起。

通信接口304,使用任何收发器一类的装置,用于与其它设备或通信网络通信,如以太网,无线接入网(radioaccessnetwork,ran),无线局域网(wirelesslocalareanetworks,wlan)等。

在具体实现中,作为一种实施例,处理器301可以包括一个或多个cpu,例如图3中所示的cpu0和cpu1。

在具体实现中,作为一种实施例,该计算节点可以包括多个处理器,例如图3中所示的处理器301和处理器305。这些处理器中的每一个可以是一个单核处理器(single-cpu),也可以是一个多核处理器(multi-cpu)。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。

在具体实现中,作为一种实施例,该计算节点还可以包括输出设备306和输入设备307。输出设备306和处理器301通信,可以以多种方式来显示信息。例如,输出设备306可以是液晶显示器(liquidcrystaldisplay,lcd),发光二级管(lightemittingdiode,led)显示设备,阴极射线管(cathoderaytube,crt)显示设备,或投影仪(projector)等。输入设备307和处理器301通信,可以以多种方式接收用户的输入。例如,输入设备307可以是鼠标、键盘、触摸屏设备或传感设备等。

上述的计算节点可以是一个通用计算节点或者是一个专用计算节点。在具体实现中,该计算节点可以是台式机、便携式电脑、网络服务器、掌上电脑(personaldigitalassistant,pda)、移动手机、平板电脑、无线终端设备、通信设备或者嵌入式设备,本发明实施例不限定计算节点的类型。

其中,存储器303用于存储执行本申请方案的程序代码310,处理器301用于执行存储器303中存储的程序代码310。该计算节点可以通过处理器301以及存储器303中的程序代码310,来实现下文图4实施例中计算节点执行的操作。

图4是本发明实施例提供的一种容器配置方法的流程图。参见图4,该方法包括:

步骤401:计算节点中的虚拟机接收用于配置目标容器的容器配置指令,该容器配置指令中携带目标网络标识。

需要说明的是,该计算节点可以为多个计算节点中的任一计算节点,且该计算节点中可以安装有虚拟机和网桥配置模块。其中,该虚拟机中可以创建有容器;该网桥配置模块可以对该计算节点中的网桥进行配置,该网桥可以转发该虚拟机中的容器生成的数据报文。

另外,容器配置指令用于指示对该虚拟机中创建的目标容器进行配置,该容器配置指令可以由用户触发,或者可以由该计算节点自动触发。当该容器配置指令是由用户触发时,用户可以通过第一指定操作进行触发,第一指定操作可以为点击操作、滑动操作、语音操作等。

再者,目标网络标识用于唯一标识目标网络,例如,目标网络标识可以为目标网络的名称等。其中,目标网络为目标容器需要接入的网络,目标容器承载于该虚拟机上,也即是,在该虚拟机接收到该容器配置指令之前,该虚拟机中可以已经创建有目标容器,此时该虚拟机在接收到该容器配置指令时可以直接对目标容器进行配置;或者,在该虚拟机接收到该容器配置指令时,该虚拟机中可以尚未创建目标容器,此时该虚拟机可以先创建目标容器,再对目标容器进行配置。

步骤402:该计算节点中的该虚拟机生成携带有目标网络标识的网络资源创建请求,并将该网络资源创建请求发送给控制节点。

需要说明的是,该网络资源创建请求用于请求控制节点为目标容器分配目标网络的网络资源。

进一步地,为了便于后续控制节点可以将所分配的网络资源对应的网络资源信息返回给该计算节点,在步骤402之前,该虚拟机还可以获取该虚拟机的地址,继而在步骤402中,该虚拟机可以生成携带有目标网络标识和该虚拟机的地址的网络资源创建请求,并将该网络资源创建请求发送给控制节点,以便后续控制节点可以根据该虚拟机的地址将该网络资源信息准确发送给该计算节点中的该虚拟机和该网桥配置模块。

需要说明的是,该虚拟机的地址可以包括该虚拟机的网络地址(如ip地址等)、mac地址等。

步骤403:当控制节点接收到该计算节点中的该虚拟机发送的网络资源创建请求时,根据目标网络标识为目标容器分配目标网络的网络资源。

其中,控制节点根据目标网络标识为目标容器分配目标网络的网络资源时,可以根据目标网络标识获取目标网络的网络信息,并根据目标网络的网络信息为目标容器分配目标网络的网络资源。

需要说明的是,某个网络的网络信息可以包括该网络的子网信息、网络类型、网络传输标记等。例如,目标网络的网络信息可以包括目标子网信息、目标网络类型以及目标网络传输标记等。

另外,某个网络的网络传输标记用于对在该网络中传输的数据进行标记,如当该网络为vlan时,该网络的网络传输标记可以为vlan标签(即vlantag),当该网络为vxlan时,该网络的网络传输标记可以为vxlan标识(即vxlanid)。

其中,控制节点中可以预先存储网络标识与网络信息之间的对应关系,此时,控制节点根据目标网络标识获取目标网络的网络信息时,可以根据目标网络标识,从存储的网络标识与网络信息之间的对应关系中,获取对应的网络信息,并将所获取的网络信息确定为目标网络的网络信息。

其中,控制节点根据目标网络的网络信息为目标容器分配目标网络的网络资源时,可以从目标网络的网络信息包括的目标子网信息所指示的网段中选择一个网络地址,并生成一个mac地址,将该网络地址和该mac地址确定为目标容器的目标地址,将目标地址和目标网络的网络信息中除目标子网信息之外的信息确定为网络资源信息,将该网络资源信息对应的网络资源确定为为目标容器分配的目标网络的网络资源。

步骤404:控制节点将该网络资源对应的网络资源信息分别发送给该计算节点中的该虚拟机和网桥配置模块。

需要说明的是,该网络资源对应的网络资源信息为该网络资源的相关信息,且该网络资源信息可以为目标地址和目标网络的网络信息中除目标子网信息之外的信息,如该网络资源信息可以包括目标地址、目标网络类型(例如,vlan类型或者vxlan类型)以及目标网络传输标记(例如,目标vlan标签或者目标vxlan标识)等。

具体地,控制节点可以根据该计算节点中的该虚拟机的地址,将该网络资源信息发送给该虚拟机;可以根据该计算节点中的该虚拟机的地址获取该虚拟机的虚拟网卡标识,并根据该虚拟机的虚拟网卡标识获取该计算节点的物理网卡标识,根据该计算节点的物理网卡标识,将该网络资源信息发送给该计算节点中的网桥配置模块。

需要说明的是,虚拟网卡标识可以用于唯一标识虚拟网卡,如虚拟网卡标识可以为虚拟机网卡的名称等;物理网卡标识可以用于唯一标识物理网卡,如物理网卡标识可以物理网卡的名称等。

其中,控制节点中可以预先存储虚拟机地址与虚拟网卡标识之间的对应关系,此时,控制节点根据该计算节点中的该虚拟机的地址获取该虚拟机的虚拟网卡标识时,可以根据该虚拟机的地址,从存储的虚拟机地址与虚拟网卡标识之间的对应关系中,获取对应的虚拟网卡标识,并将所获取的虚拟网卡标识确定为该虚拟机的虚拟网卡标识。

其中,控制节点中可以预先存储虚拟网卡标识与物理网卡标识之间的对应关系,此时,控制节点根据该虚拟机的虚拟网卡标识获取该计算节点的物理网卡标识时,可以根据该虚拟机的虚拟网卡标识,从存储的虚拟网卡标识与物理网卡标识之间的对应关系中,获取对应的物理网卡标识,并将所获取的物理网卡标识确定为该计算节点的物理网卡标识。

步骤405:当该计算节点中的该虚拟机和该网桥配置模块接收到控制节点发送的该网络资源信息时,根据该网络资源信息对该虚拟机中创建的目标容器进行配置。

需要说明的是,根据该网络资源信息对目标容器进行配置的过程,即是为目标容器配置网络属性(如ip地址、mac地址等)、传输属性(如数据传输方式等)等的过程,配置完成后,目标容器即可使用该网络资源信息对应的网络资源来传输数据报文。

另外,本发明实施例中多个计算节点中的容器均由控制节点为其分配网络资源,也即是,该多个计算节点中的容器所使用的网络资源均由控制节点来管理,此时,该多个计算节点中的每个容器将各自拥有单独的网络资源,因而该多个计算节点中的每两个容器之间可以直接通过各自的网络资源来相互通信。在此情况下,该多个计算节点中的某个计算节点中的容器迁移到其它计算节点中时,该容器无需变更所使用的网络资源即能进行通信,从而实现了容器所使用的网络资源的持久化和迁移。

再者,本发明实施例中控制节点可以根据该多个计算节点中的各个容器所要接入的网络来为其分配网络资源,从而使得该多个计算节点中接入不同网络的容器得以隔离,而接入相同网络的容器得以直接通信,且在各个容器各自拥有单独的网络资源的情况下,接入相同网络的容器之间二层互通,各个容器的mac地址相互可见。

具体地,当该虚拟机接收到控制节点发送的该网络资源信息时,为目标容器配置该网络资源信息对应的网络资源;当该网桥配置模块接收到控制节点发送的该网络资源信息时,将该网络资源信息存储到该计算节点中的网桥中。

需要说明的是,该虚拟机为目标容器配置该网络资源信息对应的网络资源之前,可以先在该虚拟机中创建目标容器,且该虚拟机可以在接收到用于配置目标容器的容器配置指令之前,就在该虚拟机中对目标容器进行创建,或者,可以在接收到控制节点发送的该网络资源信息时,再在该虚拟机中对目标容器进行创建。

另外,该虚拟机为目标容器配置该网络资源信息对应的网络资源,即是对目标容器的网络属性进行配置,以使目标容器可以使用该网络资源来传输数据报文,而该网桥配置模块将该网络资源信息存储到该网桥中,即是对目标容器的传输属性进行配置,以使该网桥可以根据该网络资源信息对目标容器生成的数据报文进行转发。

其中,该虚拟机为目标容器配置该网络资源信息对应的网络资源时,可以先判断该虚拟机中是否存在连接到目标网络的目标网络接口;当该虚拟机中不存在目标网络接口时,根据目标网络类型,在该虚拟机中创建目标网络接口;该虚拟机以目标网络接口为父接口创建子接口作为目标容器的容器接口;该虚拟机将目标容器的容器接口的地址设置为目标地址。

需要说明的是,目标网络接口为连接到目标网络的网络接口,也即是,容器可以通过目标网络接口接入目标网络。此时,各个网络有各自单独的网络接口,而相同网络的容器可以接入相同的网络接口,从而得以实现不同网络的容器之间的隔离,实现相同网络的容器之间二层互通。

另外,以目标网络接口为父接口创建子接口作为目标容器的容器接口,即是将目标网络接口与目标容器的容器接口进行连接,此时,目标容器通过目标容器的容器接口发送的数据报文将会被传输到目标网络接口。

再者,将目标容器的容器接口的地址设置为目标地址,即是将目标容器的地址设置为目标地址,从而得以实现对目标容器的网络属性的配置。

其中,该虚拟机可以预先将网络接口的名称设置为该网络接口所连接的网络的网络标识,此时,该虚拟机判断该虚拟机中是否存在连接到目标网络的目标网络接口时,可以判断该虚拟机中是否存在名称为目标网络标识的网络接口;如果该虚拟机中存在名称为目标网络标识的网络接口,则可以确定该虚拟机中存在目标网络接口;如果该虚拟机中不存在名称为目标网络标识的网络接口,则可以确定该虚拟机中不存在目标网络接口。

其中,该虚拟机根据目标网络类型,在该虚拟机中创建目标网络接口时,可以当目标网络类型为vlan类型,目标网络传输标记为目标vlan标签时,在该虚拟机中创建用于连接vlan的网络接口,并在该网络接口中设置对应子网的vlan标签为目标vlan标签,得到目标网络接口;当目标网络类型为vxlan类型时,在该虚拟机中创建用于连接vxlan的网络接口,并将该网络接口作为目标网络接口。

需要说明的是,在该虚拟机中创建用于连接vlan的网络接口,即是在该虚拟机中创建能够为来自容器的数据报文封装vlan标签的网络接口。而在该网络接口中设置对应子网的vlan标签为目标vlan标签,即是将该网络接口能够封装的vlan标签设置为目标vlan标签,从而得到能够连接到目标网络的目标网络接口。

另外,由于当目标网络类型为vlan类型时,需要根据目标vlan标签在该虚拟机中创建目标网络接口,而当目标网络类型为vxlan类型时,无需目标vxlan标识即可直接在该虚拟机中创建目标网络接口,因此,当目标网络类型为vlan类型时,控制节点发送给该虚拟机的网络资源信息中可以携带目标网络传输标记,而当目标网络类型为vxlan类型时,控制节点发送给该虚拟机的网络资源信息中可以不携带目标网络传输标记。

其中,该网桥配置模块将该网络资源信息存储到该网桥中时,可以当目标网络类型为vxlan类型,目标网络传输标记为目标vxlan标识时,将目标地址与目标vxlan标识对应存储到该网桥中。

需要说明的是,该网桥配置模块将目标地址与目标vxlan标识对应存储到该网桥中,可以使得该网桥根据目标xlan标识,对地址为目标地址的目标容器生成的数据报文进行转发,从而得以实现对目标容器的传输属性的配置。

实际应用中,该网桥在接收到该计算节点之外的其它计算节点发送的数据报文时,还可以将该数据报文传输到目标容器,在此情况下,该网桥中需要存储有目标地址和目标vlan标签之间的对应关系,以便该网桥可以根据目标xlan标签,将目的地址为目标地址的数据报文传输到目标容器中。因而,该网桥配置模块将该网络资源信息存储到该网桥中时,还可以当目标网络类型为vlan类型,目标网络传输标记为目标vlan标签时,将目标地址与目标vlan标签对应存储到该网桥中。

进一步地,在步骤405中根据该网络资源信息对该虚拟机中创建的目标容器进行配置之后,目标容器可以对生成的数据报文进行发送。而当目标容器所接入的目标网络的网络类型不同时,目标容器发送数据报文的方式也有所不同,具体分为如下两种情况进行说明。

第一种情况:当目标容器接入的目标网络的网络类型为vlan类型时,目标容器生成的第一数据报文转发出该计算节点的过程可以包括如下步骤(1)-(3)。

(1)当目标容器接收到第一发送指令时,将生成的第一数据报文通过目标容器的容器接口传输到目标网络接口。

需要说明的是,第一发送指令用于指示对生成的第一数据报文进行发送,且第一发送指令可以由用户触发,或者可以由该计算节点自动触发。当第一发送指令是由用户触发时,用户可以通过第二指定操作触发,第二指定操作可以为点击操作、滑动操作、语音操作等。

另外,由于目标容器的容器接口以目标网络接口为父接口,因此,目标容器将生成的第一数据报文通过目标容器的容器接口发送后即可直接将第一数据报文传输到目标网络接口。

(2)当目标网络接口接收到目标容器传输的第一数据报文时,生成携带有第一数据报文和目标vlan标签的第一封装报文,并将第一封装报文传输到该网桥。

需要说明的是,为了便于后续该网桥对来自vlan或vxlan的数据报文进行区分,目标网络接口可以使用目标vlan标签对第一数据报文进行封装,以得到第一封装报文来传输给该网桥。

另外,目标网络接口生成携带有第一数据报文和目标vlan标签的第一封装报文时,可以使用目标vlan标签对第一数据报文进行封装,以在第一数据报文中附加目标vlan标签,得到第一封装报文。

再者,目标网络接口将第一封装报文传输到该网桥时,可以通过该虚拟机的虚拟网卡将第一封装报文传输到该网桥。

(3)当该网桥接收到目标网络接口传输的第一封装报文时,对第一封装报文进行转发。

需要说明的是,该网桥接收到第一封装报文后,可以先判断第一封装报文中是否携带有vlan标签,如果携带有vlan标签,则可以确定第一封装报文来自vlan,此时,该网桥可以不对第一封装报文进行操作,直接对第一封装报文进行转发即可。

另外,该网桥对第一封装报文进行转发时,可以通过该计算节点的物理网卡对第一封装报文进行转发。

进一步地,该网桥对第一封装报文进行转发之后,其它计算节点可以对第一封装报文进行接收,具体地,当其它计算节点中的网桥接收到该计算节点发送的第一封装报文时,可以根据第一封装报文携带的vlan标签,将第一封装报文传输到第一封装报文所要发往的网络接口;当该网络接口接收到第一封装报文时,可以从第一封装报文中获取第一数据报文,并根据第一数据报文的目的地址将第一数据报文传输到对应的容器。

其中,其它计算节点中的网桥根据第一封装报文携带的vlan标签,将第一封装报文传输到第一封装报文所要发往的网络接口时,可以根据第一封装报文携带的vlan标签确定目的虚拟机,并将第一封装报文传输到目的虚拟机;当目的虚拟机接收到第一封装报文时,可以根据第一封装报文携带的vlan标签确定第一封装报文所要发往的网络接口,并将第一封装报文传输到该网络接口。

其中,其它计算节点中的网桥中可以预先存储有vlan标签与容器地址之间的对应关系,此时,其它计算节点中的网桥根据第一封装报文携带的vlan标签确定目的虚拟机时,可以获取与第一封装报文携带的vlan标签对应存储的容器地址,并将地址为所获取的容器地址的容器所在的虚拟机确定为目的虚拟机。

其中,目的虚拟机根据第一封装报文携带的vlan标签确定第一封装报文所要发往的网络接口时,可以将目的虚拟机中能够为数据报文封装第一封装报文携带的vlan标签的网络接口确定为第一封装报文所要发往的网络接口。

其中,其它计算节点中的该网络接口从第一封装报文中获取第一数据报文时,可以对第一封装报文进行解封装,以从第一封装报文中去掉其所携带的vlan标签,得到第一数据报文。

第二种情况:当目标容器接入的目标网络的网络类型为vxlan类型时,目标容器生成的第二数据报文转发出该计算节点的过程可以包括如下步骤(4)-(6)。

(4)当目标容器接收到第二发送指令时,将生成的第二数据报文通过目标容器的容器接口传输到目标网络接口。

需要说明的是,第二发送指令用于指示对生成的第二数据报文进行发送,且第二发送指令可以由用户触发,或者可以由该计算节点自动触发。当第二发送指令是由用户触发时,用户可以通过第三指定操作触发,第三指定操作可以为点击操作、滑动操作、语音操作等。

另外,由于目标容器的容器接口以目标网络接口为父接口,因此,目标容器将生成的第二数据报文通过目标容器的容器接口发送后即可直接将第二数据报文传输到目标网络接口。

(5)当目标网络接口接收到目标容器传输的第二数据报文时,将第二数据报文传输到该网桥。

需要说明的是,目标网络接口将第二数据报文传输到该网桥时,可以通过该虚拟机的虚拟网卡将第二数据报文传输到该网桥。

(6)当该网桥接收到目标网络接口传输的第二数据报文时,生成携带有第二数据报文和目标vxlan标识的第二封装报文,并对第二封装报文进行转发。

需要说明的是,该网桥接收到第二数据报文后,可以先判断第二数据报文是否携带有vlan标签,如果没有携带vlan标签,则可以确定第二数据报文来自vxlan,此时,该网桥可以基于第二数据报文的源地址(即目标地址)获取目标vxlan标识,并生成携带有第二数据报文和目标vxlan标识的第二封装报文,对第二封装报文进行转发。

另外,由于该网桥中预先存储有目标地址与目标vxlan标识之间的对应关系,因此,该网桥接收到第二数据报文后,可以直接根据第二数据报文的源地址(即目标地址),获取与该源地址对应存储的目标vxlan标识。

再者,该网桥对第二封装报文进行转发时,可以通过该计算节点的物理网卡对第二封装报文进行转发。

进一步地,该网桥对第二封装报文进行转发之后,其它计算节点可以对第二封装报文进行接收,具体地,当其它计算节点中的网桥接收到该计算节点发送的第二封装报文时,可以从第二封装报文中获取第二数据报文,并根据第二封装报文携带的vxlan标识,将第二数据报文传输到第二封装报文所要发往的网络接口;当该网络接口接收到该数据报文时,可以根据该数据报文的目的地址来将该数据报文传输到对应的容器。

其中,其它计算节点中的网桥从第二封装报文中获取第二数据报文时,可以对第二封装报文进行解封装,以从第二封装报文中去掉其所携带的vxlan标识,得到第二数据报文。

其中,其它计算节点中的网桥根据第二封装报文携带的vxlan标识,将第二数据报文传输到第二封装报文所要发往的网络接口时,可以根据第二封装报文携带的vxlan标识确定目的虚拟机,并将第二数据报文传输到目的虚拟机;当目的虚拟机接收到第二数据报文时,可以根据第二数据报文的目的地址确定第二数据报文所要发往的网络接口,并将第二数据报文传输到该网络接口。

其中,其它计算节点中的网桥中可以预先存储有vxlan标识与容器地址之间的对应关系,此时,其它计算节点中的网桥根据第二封装报文携带的vxlan标识确定目的虚拟机时,可以获取与第二封装报文携带的vxlan标识对应存储的容器地址,并将地址为所获取的容器地址的容器所在的虚拟机确定为目的虚拟机。

其中,目的虚拟机根据第二数据报文的目的地址确定第二数据报文所要发往的网络接口时,可以将目的虚拟机中地址为第二数据报文的目的地址的容器所连接的网络接口确定为第二数据报文所要发往的网络接口。

进一步地,该计算节点也可以对其它计算节点发送的封装报文进行接收,且该计算节点对其它计算节点发送的封装报文进行接收的操作与上述其它计算节点对该计算节点发送的第一封装报文或第二封装报文进行接收的操作类似。

也即是,当该计算节点中的网桥接收到该计算节点之外的其它计算节点发送的封装报文时,如果该封装报文中携带vlan标签,则可以根据该vlan标签,将该封装报文传输到该封装报文所要发往的目的网络接口,当目的网络接口接收到该封装报文时,从该封装报文中获取数据报文,根据该数据报文的目的地址将该数据报文传输到对应的容器;如果该封装报文中携带vxlan标识,则可以从该封装报文中获取数据报文,并根据该vxlan标识,将该数据报文传输到该封装报文所要发往的目的网络接口,当目的网络接口接收到该数据报文时,根据该数据报文的目的地址将该数据报文传输到对应的容器。

在本发明实施例中,多个计算节点中的任一计算节点中的虚拟机在接收到容器配置指令时,可以生成网络资源配置请求,并将该网络资源配置请求发送给控制节点。控制节点接收到该网络资源配置请求后,可以为目标容器分配目标容器所要接入的目标网络的网络资源,并将该网络资源对应的网络资源信息发送给该计算节点中的该虚拟机和网桥配置模块,由该虚拟机和该网桥配置模块根据该网络资源信息对该虚拟机中创建的目标容器进行配置。由于该多个计算节点中的容器所使用的网络资源均由控制节点来管理,所以该多个计算节点中的每个容器将各自拥有单独的网络资源,因而该多个计算节点中的每两个容器之间可以直接通过各自的网络资源来相互通信。在此情况下,该多个计算节点中的某个计算节点中的容器迁移到其它计算节点中时,该容器无需变更所使用的网络资源即能进行通信,从而实现了容器所使用的网络资源的持久化和迁移。

图5是本发明实施例提供的一种计算节点的结构示意图,该计算节点为多个计算节点中的任一计算节点,该计算节点中安装有虚拟机501和网桥配置模块502,该计算节点可以为图3所示的计算节点。

参见图5,该计算节点包括:

虚拟机501,用于执行图4实施例中的步骤401;

虚拟机501,还用于执行图4实施例中的步骤402,以使控制节点执行图4实施例中的步骤403和步骤404;

虚拟机501和网桥配置模块502,用于执行图4实施例中的步骤405。

可选地,

虚拟机501,用于当接收到控制节点发送的网络资源信息时,为目标容器配置网络资源信息对应的网络资源;

网桥配置模块502,用于当接收到控制节点发送的网络资源信息时,将网络资源信息存储到网桥中,网桥用于转发目标容器生成的数据报文。

可选地,虚拟机501,用于:

当虚拟机中不存在连接到目标网络的目标网络接口时,根据目标网络类型,在虚拟机中创建目标网络接口;

以目标网络接口为父接口创建子接口作为目标容器的容器接口;

将目标容器的容器接口的地址设置为目标地址。

可选地,目标网络类型为vlan类型,目标网络传输标记为目标vlan标签;虚拟机501,用于:

在虚拟机中创建用于连接vlan的网络接口;

在网络接口中设置对应子网的vlan标签为目标vlan标签,得到目标网络接口。

可选地,目标网络类型为vxlan类型,目标网络传输标记为目标vxlan标识;网桥配置模块502,用于:

将目标地址与目标vxlan标识对应存储到网桥中。

可选地,

目标容器,用于执行图4实施例中的步骤405中的步骤(1);

目标网络接口,用于执行图4实施例中的步骤405中的步骤(2);

网桥,用于执行图4实施例中的步骤405中的步骤(3)。

可选地,

目标容器,用于执行图4实施例中的步骤405中的步骤(4);

目标网络接口,用于执行图4实施例中的步骤405中的步骤(5);

网桥,用于执行图4实施例中的步骤405中的步骤(6)。

在本发明实施例中,多个计算节点中的任一计算节点中的虚拟机在接收到容器配置指令时,可以生成网络资源配置请求,并将该网络资源配置请求发送给控制节点。控制节点接收到该网络资源配置请求后,可以为目标容器分配目标容器所要接入的目标网络的网络资源,并将该网络资源对应的网络资源信息发送给该计算节点中的该虚拟机和网桥配置模块,由该虚拟机和该网桥配置模块根据该网络资源信息对该虚拟机中创建的目标容器进行配置。由于该多个计算节点中的容器所使用的网络资源均由控制节点来管理,所以该多个计算节点中的每个容器将各自拥有单独的网络资源,因而该多个计算节点中的每两个容器之间可以直接通过各自的网络资源来相互通信。在此情况下,该多个计算节点中的某个计算节点中的容器迁移到其它计算节点中时,该容器无需变更所使用的网络资源即能进行通信,从而实现了容器所使用的网络资源的持久化和迁移。

需要说明的是:上述实施例提供的计算节点在容器配置时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的计算节点与容器配置方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,全部或部分地生成按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如:同轴电缆、光纤、数据用户线(digitalsubscriberline,dsl))或无线(例如:红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如:软盘、硬盘、磁带)、光介质(例如:数字通用光盘(digitalversatiledisc,dvd))、或者半导体介质(例如:固态硬盘(solidstatedisk,ssd))等。

以上所述为本申请提供的实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1