一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

容器网络管理系统的制作方法

2022-03-26 12:15:43 来源:中国专利 TAG:
1.本技术涉及计算机网络和云计算
技术领域
:,特别是涉及一种容器网络管理系统。
背景技术
::2.kubernetes(简称k8s)是基于容器技术的分布式架构方案,通常,k8s本身不提供网络功能,而是由网络插件来提供对应的网络解决方案。例如,网络插件可以是容器网络接口(containernetworkinterface,cni)插件,通过cni可以为k8s集成不同的网络解决方案。3.以解决跨主机通信问题为例,相关技术中,cni解决跨主机通信问题时,根据与宿主机网络的依赖关系,网络解决方案的实现模式包括但不限于:overlay模式、路由模式以及underlay模式。其中,underlay模式作为与底层依赖最强的网络模式,在网络性能方面占据优势。实际应用中,underlay的网络实现方案通常可以采用macvlan网络模式。4.然而,相关技术中,在macvlan网络模式中构建容器时,无法对容器的ip地址进行有效管理。技术实现要素:5.基于此,有必要针对上述技术问题,提供一种能够对容器集群中各容器的ip地址进行有效管理的容器网络管理系统,该系统包括:网络管理模块和至少一个容器集群,容器集群包括多个计算节点,各计算节点上部署有容器网络接口插件和资源对象;6.网络管理模块根据各计算节点的ip地址,划分多个ip地址池;多个ip地址池之间相互隔离;7.各计算节点根据资源对象的容器配置文件,调用容器网络接口插件从多个ip地址池中确定资源对象对应的目标ip地址。8.在其中一个实施例中,容器集群还包括主节点,主节点包括ip地址管理单元;各计算节点包括节点管理单元,容器网络接口插件包括ip地址管理插件;9.各计算节点根据资源对象的容器配置文件,调用容器网络接口插件从多个ip地址池中确定资源对象对应的目标ip地址,包括:10.节点管理单元调用ip地址管理插件,向ip地址管理单元发送ip地址请求;ip地址请求中携带资源对象的容器配置文件;11.ip地址管理单元根据资源对象的容器配置文件从多个ip地址池中确定目标ip地址,并将目标ip地址返回至节点管理单元。12.在其中一个实施例中,容器集群还包括资源状态数据库,多个ip地址池位于资源状态数据库中;13.ip地址管理单元根据资源对象的容器配置文件从多个ip地址池中确定目标ip地址,包括:14.ip地址管理单元根据资源对象的容器配置文件,确定资源对象的ip地址规划信息;15.ip地址管理单元根据ip地址规划信息,从资源状态数据库中确定目标地址池,并从目标地址池中获取目标ip地址。16.在其中一个实施例中,从目标地址池中获取目标ip地址,包括:17.若容器配置文件中存在指定ip地址,则ip地址管理单元将目标地址池中与指定ip地址相同的ip地址确定为目标ip地址;18.若容器配置信息中不存在指定ip地址,则ip地址管理单元根据ip地址查找策略,从目标地址池中确定目标ip地址。19.在其中一个实施例中,ip地址查找策略包括:按照ip地址的释放时间进行排序,若资源对象的当前状态是重启状态,则将目标地址池中释放时间最晚的ip地址确定为目标ip地址;若资源对象的当前状态是新建状态,则将释放时间最早的ip地址确定为目标ip地址。20.在其中一个实施例中,系统还包括:21.各计算节点对各自节点中的至少两个物理网卡进行绑定,得到一个逻辑网卡;逻辑网卡的ip地址空间存储于资源状态数据库中,用于创建多个ip地址池;22.各计算节点在逻辑网卡上创建多个虚拟局域网接口;多个虚拟局域网接口用于对各计算节点上的多个资源对象进行网络隔离。23.在其中一个实施例中,各计算节点在逻辑网卡上创建多个虚拟局域网接口,包括:24.各计算节点采用物理网卡虚拟化方式在逻辑网卡上创建多个虚拟局域网接口。25.在其中一个实施例中,系统还包括:26.各计算节点将多个虚拟局域网接口的ip地址分配给计算节点上的多个资源对象;其中,连接同一个虚拟局域网接口的资源对象通过虚拟局域网接口进行通信。27.在其中一个实施例中,网络管理模块根据各计算节点的ip地址,划分多个ip地址池,包括:28.网络管理模块从资源状态数据库中读取各计算节点的逻辑网卡的ip地址空间,将容器集群中多个计算节点的逻辑网卡的ip地址空间作为总地址池;29.网络管理模块根据预设的地址池划分策略,从总地址池中划分出多个ip地址池;30.其中,总地址池用于供多个ip地址池扩容。31.在其中一个实施例中,地址池划分策略包括应用部署需求和容器部署需求,多个ip地址池包括应用池、网络空间池和默认池;32.网络管理模块根据预设的地址池划分策略,从总地址池中划分出多个ip地址池,包括:33.网络管理模块根据应用部署需求,从总地址池中划分出应用地址池;34.网络管理模块根据容器部署需求,从总地址池中划分出网络空间池和默认池;35.其中,应用池、网络空间池和默认池之间相互隔离;应用地址池中的ip地址为目标应用的预留地址,网络空间池中的ip地址为目标容器的候选地址,默认池中的ip地址为非目标容器的候选地址。36.在其中一个实施例中,系统还包括:37.若容器集群为双栈集群,则部署在各计算节点上的容器网络接口插件同时支持第一网际协议和第二网际协议;38.其中,第一网际协议和第二网际协议为不同协议,且计算节点中存储第一网际协议和第二网际协议的对应关系。39.本技术提供的容器网络管理系统包括网络管理模块和至少一个容器集群,容器集群包括多个计算节点,各计算节点上部署有容器网络接口插件和资源对象。其中,网络管理模块根据各计算节点的ip地址,划分多个ip地址池;各计算节点根据资源对象的容器配置文件,调用容器网络接口插件从多个ip地址池中确定资源对象对应的目标ip地址。在该系统中,通过容器网络接口插件来部署容器集群的网络架构,统一了各容器集群内的网络模式。另外,网络管理模块预先划分有多个ip地址池,且多个ip地址池之间相互隔离,如此,通过网络管理模块预先划分地址池,在租户应用下实现了ip资源的隔离和网络区域的隔离,同时,在各资源对象重启或新建时,通过预先划分的地址池,可以快速且精准获取目标ip地址,达到了对容器集群中ip地址进行有效管理的技术效果。附图说明40.图1为一个实施例中cni模型的应用示意图;41.图2为一个实施例中容器网络管理系统的结构示意图;42.图3为另一个实施例中容器网络管理系统的结构示意图;43.图4为一个实施例中目标ip地址的获取流程示意图;44.图5为另一个实施例中容器网络管理系统的结构示意图;45.图6为另一个实施例中目标ip地址的获取流程示意图;46.图7为一个实施例中ip地址划分方法的流程示意图;47.图8为一个实施例中ip地址池划分示意图;48.图9为一个实施例中计算节点网卡虚拟化的流程示意图;49.图10为一个实施例中macvlan组网方案示意图。具体实施方式50.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。51.云计算资源通常采用由管理平台(例如,开源的云计算管理平台openstack)统一管理多项资源,并同时提供给多个租户使用的运行方式。建立在openstack基础上的开源项目kubernetes(简称为k8s)是目前应用最广的容器集群管理系统之一,它让企业可以像使用一台计算机一样使用集群的云计算资源,提高了计算机资源的使用效率,解决了应用的自动化部署、弹性伸缩、生命周期管理等诸多问题。52.由于k8s自身不提供网络功能,其网络解决方案由网络插件来提供,这些网络插件通过配置容器网络(containernetworkinterface,cni)的接口规范来完成k8s容器集群中的网络通信。53.图1是本技术提供的一种cni模型的应用示意图。如图1所示,容器集群中各计算节点上的容器运行环境与各种网络插件(plugin)通过cni进行连接,网络插件包括:回路(loopback)插件、桥(bridge)插件、精确时间协议(precisiontimeprotocol,ptp)插件、ip虚拟局域网络(ipvirtuallocalareanetwork,ipvlan)插件、媒体接入控制层虚拟局域网络(mediaaccesscontrolvirtuallocalareanetwork,macvlan)插件和其他第三方插件。54.基于图1所示的cni模型,在容器运行环境中的一个容器可以通过cni绑定多个网络插件,进而加入多个网络中。cni仅关注在创建容器时分配网络资源,和在销毁容器时删除网络资源,这使得cni规范非常轻巧,且易于实现,得到广泛的应用。55.其中,在cni模型中只涉及两个概念:容器(container)和网络(network)。容器是拥有独立linux网络命名空间的环境,容器需要拥有自己的linux网络命名空间,这是加入网络的必要条件。网络表示可以互连的一组实体,这些实体拥有各自独立且唯一的ip地址,这些实体可以是容器、物理机或者其他网络设备(比如路由器)等。56.cni对容器网络的设置和操作都通过插件进行具体实现,cni插件包括两种类型:cni插件和ip地址管理(ipaddressmanagement,ipam)插件。cni插件负责为容器配置网络资源,ipam插件负责对容器的ip地址进行分配和管理。其中,ipam插件作为cni插件的一部分,与cni插件协同工作。57.在实际应用中,cni在完成k8s容器集群中的网络通信时,需要解决两个问题:一是如何建立基础容器(即infra容器)网络栈;二是如何解决跨主机通信。58.针对第一个问题,构建容器网络栈需要ip地址和相应的网关路由信息,因此,可以通过cni插件中的ipam插件来实现。具体地,在cni插件在运行时,调用ipam插件获取相应的ip地址传递给属于容器的网络命名空间(networknamespace,netns)。59.针对第二个问题,cni解决跨主机通信问题有多种实现模型,根据与宿主机(即部署容器的计算节点)网络的依赖关系将其划分为三种模型:覆盖网络模型(即overlay网络模型)、路由网络模型和底层物理网络模型(即underlay网络模型)。60.(1)overlay网络模型61.overlay网络模型最主要的特征是在宿主机之间创建隧道,通过隧道转发的方式来实现跨主机的网络通信。隧道转发的本质是将容器双方的通信报文分别封装成各自宿主机之间的报文,借助宿主机的网络隧道完成数据交换。这种虚拟网络的基本要求是各宿主机只需支持隧道协议即可,对于底层网络没有特殊要求。在此虚拟网络中,容器集群对于ip地址拥有高度自治权,容器所使用的ip段独立于主机,不抢占主机的ip资源。一旦网络流量出容器所在宿主机,则会被封装成宿主机之间的数据包,不依赖于底层网络。overlay模型典型代表有:flannal的vxlan网络模式、calico的ipip模式、weave等。62.其中,flannel是为k8s中的一种容器网络示例,在实现更好的容器间和主机间网络。flannel将所有的pod都组织在同一个子网的虚拟大二层{开放系统互连(opensystemsinterconnections,osi)网络模型的数据链路层,第二层网络会处理网络上两个相邻节点之间的帧传递}网络中,flannel支持的后端转发方式包括(virtualextensiblelocalareanetwork,vxlan)和host-gw。上述pod是k8s创建或部署的最小/最简单的基本单位,一个pod代表集群上正在运行的一个进程。一个pod可封装一个或多个应用容器、存储资源、一个独立的网络ip以及管理控制容器运行方式的策略选项。63.calico是一个纯三层的网络插件,calico包括ipip和bgp两种网络模式。weave一种k8scni的网络选项,weave在容器集群中的每个节点之间创建网状overlay网络,参与者之间可以灵活路由。64.(2)路由网络模型65.路由网络模型主要通过路由打通来实现跨主机的通信,容器与宿主机属于不同网段,路由模式与overlay模式最主要的区别就是无需建立隧道进行通信。但是需要底层网络有二层可达的能力,对底层网络具有一定的依赖性,其典型代表有flannel的host-gw网络模式、calico的bgp网络模式等。66.(3)underlay网络模型67.underlay网络模型中,容器与宿主机在同一层网络,与宿主机共享ip资源,容器间的通信强依赖于底层网络。其典型代表有sr-iov模式和macvlan模式等。68.其中,sr-iov全称为singlerooti/ovirtualization,即单层i/o虚拟化,是一种sr-iov技术是一种基于硬件的虚拟化解决方案,可提高性能和可伸缩性。sr-iov标准允许在虚拟机之间高效共享快速外设组件互连(peripheralcomponentinterconnectexpress,pcie)设备,并且它是在硬件中实现的,可以获得能够与本机性能媲美的i/o性能。69.macvlan技术本质上是一个网卡虚拟化技术,它不需要创建linux网桥,而是在物理以太网口创建虚拟子接口,每个子接口都有自己的mac地址,在逻辑上这些虚拟子接口是和物理网卡对等的。使用macvlan技术带来的效果是一块物理网卡上可以绑定多个ip地址,每个ip地址都有自己的mac地址。70.然而,macvlan在开源社区的功能实现较弱,只支持所有pod共享一个父接口,无任何隔离,不支持服务(service)通信,不支持ipv6,也没有相应的ip管理插件等。71.其中,service定义了这样一种抽象:一个pod的逻辑分组,一种可以访问它们的策略。也即是,这一组pod能够被service访问到,service可以视为是一组提供相同服务的pod的对外接口。72.对于传统架构,从虚拟化平台迁移到容器平台,需要保持一些旧的习惯,比如基于ip做安全策略,容器化之后业务所占用的ip不能发生改变。那么,如何最大限度的兼容虚拟化向容器迁移,保持极致的网络性能,统一的网络资源管理是容器平台需要解决的核心问题。本技术在上述方案所存在的问题上选择macvlan模式,解决了相关技术中macvlan模式中网络区域无任何隔离的问题,并实现相应的ip地址管理功能,同时增加控制平面管理不同cni插件下的ip地址池,最大化兼容传统应用向容器化改造。73.在一个实施例中,如图2所示,提供了一种容器网络管理系统,该系统100包括网络管理模块110和至少一个容器集群120,容器集群120包括多个计算节点121,各计算节点121上部署有容器网络接口插件1211和资源对象1212;网络管理模块110根据各计算节点120的ip地址,划分多个ip地址池;多个ip地址池之间相互隔离;各计算节点120根据资源对象1212的容器配置文件,调用容器网络接口插件1211从多个ip地址池中确定资源对象1212对应的目标ip地址。74.其中,容器网络可以是基于k8s的网络系统,资源对象可以为pod和/或容器。75.如图2所示,容器网络管理系统包括一个容器网络管理模块和至少一个容器集群,网络管理模块可以对各容器集群的ip地址单独进行管理,划分地址池。也可以对至少一个容器集群的ip地址统一进行管理,本技术实施例对此不做限制。76.作为一个示例,容器网络管理模块可以部署于交换机、路由器或者终端设备中,至少一个容器集群中的多个计算节点部署于多个服务器上,每个计算节点对应一台服务器。各计算节点内提供容器运行环境,可以部署多个pod,每个pod中可以创建一个或多个容器。需要说明的是,本技术对容器集群中的计算节点、pod和容器的数目不做限制,可以根据实际需求部署或创建。77.在一种可能的实现方式中,网络管理模块在划分多个地址池时,可以将不同ip地址放入同一个ip地址池中供一个租户下的应用使用。也即是,一个租户的所有应用部署在一个ip地址池内,实现不同租户下的ip资源的隔离。也可以将不同ip地址放入不同的ip地址池中,供同一个租户下的应用使用。也即是,一个租户的不同应用部署在不同的ip地址池中,实现网络区域之间的隔离。78.进一步地,本技术还可以将ip地址池和底层vlan结合,将不同vlan下的ip地址分配给不同的ip地址池,可实现不同vlan的二层网络隔离。79.另外,计算节点中的容器在重启和新建时都需要获取对应的ip地址,因此,计算节点根据该容器所属的资源对象的容器配置文件,调用cni插件来获取目标ip地址。80.其中,容器配置文件包括但不限于:计算节点名、pod的名称和ip地址、容器数目、部署应用。cni插件包括但不限于macvlan插件和ipam插件。81.在本技术实施例中,容器网络管理系统包括网络管理模块和至少一个容器集群,容器集群包括多个计算节点,各计算节点上部署有容器网络接口插件和资源对象。其中,网络管理模块根据各计算节点的ip地址,划分多个ip地址池;各计算节点根据资源对象的容器配置文件,调用容器网络接口插件从多个ip地址池中确定资源对象对应的目标ip地址。在该系统中,通过容器网络接口插件来部署容器集群的网络架构,统一了各容器集群内的网络模式。另外,网络管理模块预先划分有多个ip地址池,且多个ip地址池之间相互隔离,如此,通过网络管理模块预先划分地址池,在租户应用下实现了ip资源的隔离和网络区域的隔离,同时,在各资源对象重启或新建时,通过预先划分的地址池,可以快速且精准获取目标ip地址,达到了对容器集群中ip地址进行有效管理的技术效果。82.基于上述图2所示的容器网络管理系统,在一个实施例中,如图3所示,在该系统100中,容器集群120还包括主节点122,主节点122包括ip地址管理单元1221;各计算节点121包括节点管理单元1213,cni插件1211包括ip地址管理插件。83.其中,主节点用于管理该容器集群中的多个计算节点的应用部署,以将pod部署到合适的计算节点上。主节点的个数可以为一个,部署于一台服务器上,也可以为多个,分别部署在多台服务器上;另外,主节点还用于提供k8s的应用程序接口(applicationprogramminginterface,api)服务,作为系统管理指令的统一入口,对资源对象的增删改查等操作均由api服务器处理后再进行存储。84.在实际实施时,计算节点中的节点管理单元可以通过预先部署的kubelet软件实现,kubelet用于维护和管理计算节点上的所有容器,以使pod的运行状态和期望的状态一致。k8s目前支持的容器运行环境包括docker和rocket等。85.另外,本技术中为了对ip地址进行有效管理,部署的cni插件为ip地址管理插件,即上述ipam插件,在具体应用时通过ipam插件来获取目标ip地址。86.一种实施例中,如图4所示,各计算节点根据资源对象的容器配置文件,调用容器网络接口插件从多个ip地址池中确定资源对象对应的目标ip地址的实现过程,包括以下步骤:87.步骤410:节点管理单元调用ip地址管理插件,向ip地址管理单元发送ip地址请求;ip地址请求中携带资源对象的容器配置文件。88.在一种可能的实现方式中,节点管理单元在从主节点监听到应用下发和pod创建事项时,调用cni接口,进而调用本地/opt/cni/bin目录下已解压的macvlan和ipam二进制文件,启用ipam插件。然后,节点管理单元读取资源对象的容器配置文件,向ip地址管理单元发送ip地址请求。89.步骤420:ip地址管理单元根据资源对象的容器配置文件从多个ip地址池中确定目标ip地址,并将目标ip地址返回至节点管理单元。90.在一种可能的实现方式中,ip地址管理单元从资源对象的容器配置文件中读取ip指示信息,根据ip指示信息从多个ip地址池中确定目标ip地址所属的唯一一个ip地址池,进而从该唯一确定的ip地址池中获取目标ip地址。并且,ip地址管理单元在获取到目标ip地址后,将目标ip地址返回给节点管理单元,以使节点管理单元将目标ip地址分配给资源对象。91.在本实施例中,节点管理单元管理各计算节点中的各资源对象的部署,在创建或重启容器时,节点管理单元根据各资源对象的容器配置文件,调用ip地址管理插件,向ip地址管理单元发送ip地址请求,进而由ip地址管理单元从多个地址池中确定该资源对象的目标ip地址。如此,通过ip地址管理单元,可以准确有效的为各资源对象确定目标ip地址。92.基于上述图3所示的容器网络管理系统,在一个实施例中,如图5所示,在该系统100中,容器集群120还包括资源状态数据库123,多个ip地址池位于资源状态数据库123中。93.其中,资源状态数据库用于存储多个计算节点的可用ip资源,网络管理模块根据各计算节点的ip地址,在资源状态数据库中划分多个ip地址池,多个ip地址池之间相互隔离。当各计算节点启动或新建资源对象时,通过ip地址管理单元从资源状态数据库中获取该资源对象对应的目标ip地址。94.在引入资源状态数据库后,在一种实施例中,如图6所示,上述步骤420中ip地址管理单元根据资源对象的容器配置文件从多个ip地址池中确定目标ip地址的实现过程,包括以下步骤:95.步骤610:ip地址管理单元根据资源对象的容器配置文件,确定资源对象的ip地址规划信息。96.其中,ip地址规划信息可以包括ip地址指定信息和/或ip地址池指定信息。97.作为一个示例,当ip地址规划信息为ip地址池指定信息时,指定ip地址池的相关信息可以写入资源对象的元数据的注解中。元数据是用于描述资源对象的数据,包含一组由不同名称定义的属性,这些属性可以为标签、注解、命名空间等。注解(annotation)是不具有标识性的元数据,用于将任何非标识的元数据附加到资源对象。98.步骤620:ip地址管理单元根据ip地址规划信息,从资源状态数据库中确定目标地址池,并从目标地址池中获取目标ip地址。99.其中,资源状态数据库中包括多个地址池,目标地址池为资源状态数据库中的任一地址池。100.作为一个示例,资源状态数据库可以为etcd数据库,etcd是一种高可用的分布式键值(key-value)数据库。101.在本实施例中,容器网络管理系统包括资源状态数据库,通过资源状态数据库存储多个网络管理模块划分的ip地址池,保证了ip地址的安全性和统一分配。如此,ip地址管理单元在接收到资源对象的容器配置文件后,可以根据资源对象的ip地址规划信息从资源状态数据库中确定目标地址池,以从目标地址池中获取目标ip地址。102.在一个实施例中,本技术还提供了一种ip地址池划分方法,应用于上述任一容器网络管理系统中,其执行主体可以为网络管理模块。如图7所示,网络管理模块根据各计算节点的ip地址,划分多个ip地址池,包括以下步骤:103.步骤710:网络管理模块从资源状态数据库中读取各计算节点的逻辑网卡的ip地址空间,将容器集群中多个计算节点的逻辑网卡的ip地址空间作为总地址池。104.其中,网络管理模块管理多容器集群的ip地址,向下对接ipam插件的ipamserver端。server端对应的是资源状态数据库,作为整个容器集群ip管理的入口。105.在该步骤中,网络管理模块将容器集群中多个计算节点的逻辑网卡的ip地址空间作为总地址池,并从总地址池中划分多个ip地址池。因此,ip地址管理单元在获取资源对象的目标ip地址时,可以先从多个ip地址池中确定目标地址池,然后再从目标地址池中获取资源对象的目标ip地址。如此,ip地址管理单元获取目标ip地址无需查询资源状态数据库中的总地址池,可以快速精确地从目标地址池中获取目标ip地址,减少了查询时间,提高了目标ip地址的获取效率。106.步骤720:网络管理模块根据预设的地址池划分策略,从总地址池中划分出多个ip地址池。107.其中,总地址池用于供多个ip地址池扩容,是不做任何分配/预留操作的池子。无论什么情况下都不会在总地址池中获取ip地址,该总地址池可随着容器水平扩展(horizontalpodautoscaling,hpa)动态地为多个ip地址池提供可弹性扩缩的ip地址。108.需要说明的是,本技术在网络管理模块中引入网络空间(netspace)的概念,网络空间可以根据应用需要,进行灵活划分,不同的网络空间之间相互隔离。基于此概念,本技术从总地址池划分出多个ip地址池,一个ip地址池即为一个网络空间,各ip地址池之间相互隔离。109.在一种可能的实现方式中,地址池划分策略包括应用部署需求和容器部署需求,多个ip地址池包括应用池、网络空间池和默认池。110.进一步地,网络管理模块根据预设的地址池划分策略,从总地址池中划分出多个ip地址池的实现过程可以为:网络管理模块根据应用部署需求,从总地址池中划分出应用地址池;网络管理模块根据容器部署需求,从总地址池中划分出网络空间池和默认池。应用池、网络空间池和默认池之间相互隔离;应用地址池中的ip地址为目标应用的预留地址,网络空间池中的ip地址为目标容器的候选地址,默认池中的ip地址为非目标容器的候选地址。111.需要说明的是,应用可以分为有状态应用和无状态应用,区别在于状态信息是由请求方负责保存还是由响应方负责保存,由于请求方负责保存为无状态,由响应方保存则为有状态。无状态应用不关心响应方是谁,需不需要同步各个响应方之间的信息,响应服务可随时被删除也不会影响别人,容错性高,分布式服务的负载均衡失效不会丢数据,无内存消耗,直接部署上线即可使用。有状态应用需要及时同步数据,可能存在数据同步不完全丢失数据,消耗内存资源保存数据等。112.因此,本技术实施例中,根据应用部署需求,对于有状态应用,为其提供应用池,以从应用池中获取其对应的目标ip地址;对于无状态应用,则需要进一步根据运行该应用的容器的部署需求,确定目标地址池。113.作为一个示例,如图8所示,网络管理模块将ip地址池做了如下划分:总地址池用于多个ip地址池扩容,从总地址池中划分的多个ip地址池包括应用池、网络空间池和默认池。其中,限定应用池要么在总地址池中,要么在某一个网络空间池中,不会在默认池中,也不会涉及跨ip地址池的情况。114.在本实施例中,网络管理模块根据预设的地址池划分策略,从总地址池中划分出多个ip地址池,各ip地址池之间相互隔离,实现了ip地址在网络区域的隔离。另外,对于想要固定ip的有状态应用,可通过网络管理模块将ip地址预留给该应用,应用启动会从应用池中获取预留的ip地址,并且重启之后依旧获取原有ip地址。如此,通过网络管理模块可以对容器集群内的ip地址进行有效管理,也提高了目标ip地址的获取效率。115.进一步地,基于上述划分的多个地址池,在一个实施例中,步骤620中从目标地址池中获取目标ip地址的实现过程可以为:若容器配置文件中存在指定ip地址,则ip地址管理单元将目标地址池中与指定ip地址相同的ip地址确定为目标ip地址;若容器配置信息中不存在指定ip地址,则ip地址管理单元根据ip地址查找策略,从目标地址池中确定目标ip地址。116.其中,ip地址查找策略包括:按照ip地址的释放时间进行排序,若资源对象的当前状态是重启状态,则将目标地址池中释放时间最晚的ip地址确定为目标ip地址;若资源对象的当前状态是新建状态,则将释放时间最早的ip地址确定为目标ip地址。117.作为一个示例,资源状态数据库中包括三个地址池:应用池、网络空间池和默认池,则ip地址管理单元在多个ip地址池中确定目标ip地址时,主要包括筛选和绑定两个步骤。118.(1)筛选ip地址需要满足以下条件:119.第一种条件:若应用预留了ip地址,则容器配置文件中存在指定ip地址。因此,可以根据指定的ip地址,在应用池中选择该指定ip地址,作为资源对象对应的目标ip地址。120.第二种条件:若容器配置文件yaml文件的spec.template.metadata.annotations下定ipam.com/netspace字段,则从网络空间池中确定目标ip地址;若yaml文件的spec.template.metadata.annotations下未指定ipam.com/netspace字段,则从默认地址池中确定目标ip地址。121.其中,spec描述了资源对象所需的状态;元数据(metadata)用于描述资源对象的数据,注解(annotation)用于将任何非标识的元数据附加到对象,注解(annotation)可包含一组或多组键/值(key/value)。122.(2)绑定ip地址需要满足ip亲和性:123.对于有状态应用(statefulset),依据ip地址的占用信息,获取原有ip地址;对于无状态应用,在网络空间池和默认池中按照ip地址的释放时间进行筛选,以确定目标ip地址。124.在本实施例中,基于预先划分的多个地址池和容器配置文件,ip地址管理单元通过筛选操作,可以从多个ip地址池中确定目标地址池;进一步地,ip地址管理单元通过绑定操作,从目标地址池中确定目标ip地址,并和资源对象绑定。如此,通过划分地址池,大大提高了ip地址的确定效率。125.基于上述任一容器网络管理系统100,在一个实施例中,如图9所示,容器网络管理系统100中的计算节点还执行以下步骤:126.步骤910:各计算节点对各自节点中的至少两个物理网卡进行绑定,得到一个逻辑网卡;逻辑网卡的ip地址空间存储于资源状态数据库中,用于创建多个ip地址池。127.其中,一个计算节点上可以部署多个物理网卡,本技术实施例对于计算节点上部署的物理网卡的实际数目不做限制。128.在一种可能的实现方式中,步骤910的实现过程可以为:选用物理网卡两个接口做主备绑定(bond),绑定后得到一个总的逻辑网卡,不再使用物理网卡,而是通过逻辑网卡创建虚拟局域网接口,来部署网络框架。129.另外,需要说明的是,若容器集群为双栈集群,则部署在各计算节点上的容器网络接口插件同时支持第一网际协议和第二网际协议;第一网际协议和第二网际协议为不同协议,且计算节点中存储第一网际协议和第二网际协议的对应关系。130.作为一个示例,第一网际协议可以为网际协议第四版(internetprotocolversion4,ipv4),第二网际协议可以为网际协议第六版(internetprotocolversion6,ipv6),计算节点的物理网卡中预先存储ipv4和ipv6的对应关系。131.如此,容器网络接口插件中的macvlan插件在ipam插件可以同时支持ipv4和ipv6,macvlan插件在ipam插件中获取pod的ipv4地址和ipv6地址后,会在netns中开启支持ipv6模式,pod最终会在eth0网卡上绑定ipv4和ipv6地址,使得pod既可以通过ipv4访问,也可以通过ipv6访问,支持两种网络协议通信。132.步骤920:各计算节点在逻辑网卡上创建多个虚拟局域网接口;多个虚拟局域网接口用于对各计算节点上的多个资源对象进行网络隔离。133.在一种可能的实现方式中,各计算节点采用物理网卡虚拟化方式在逻辑网卡上创建多个虚拟局域网接口。进一步地,各计算节点将多个虚拟局域网接口的ip地址分配给计算节点上的多个资源对象;其中,连接同一个虚拟局域网接口的资源对象通过虚拟局域网接口进行通信。134.其中,macvlan是物理网卡上的虚拟化技术,在步骤920中,通过在逻辑网卡上创建多个mac层vlan接口,实现二层网络隔离,同时也可以有效限制由于集群规模过大创建一个大二层而造成网络风暴问题。135.也即是,各资源对象的eth0虚拟网卡的父接口为每台计算节点上逻辑网卡的vlan子接口,同一个vlan中的资源对象,其二层网络是互通的,可以不经过宿主机直接通信。不同vlan中的资源对象则需要开通网络策略才能互通。136.作为一个示例,图10为本技术提供的一种macvlan组网方案示意图。参见图10,资源对象为pod,计算节点1和计算节点2上各有2个物理网卡,接口分被为ens1f0和ens1f1,2个物理网卡通过绑定,形成一个bond虚拟网卡。在bond虚拟网卡上采用macvlan创建2个虚拟局域网接口bond0.910和bond0.920。虚拟局域网接口作为父接口,可以连接到不同pod的虚拟网卡eth0。137.其中,macvlan选择bridge模式,在该模式下,macvlan子接口与宿主机不能直接通信,子接口之间能够直接进行通信。利用此特性,在宿主机的逻辑网卡上创建macvlan子接口,称为vmac。同时,将pod的虚拟网卡eth0的vlan子接口上的ip地址给vmac。138.可选地,macvlan还包括ipv4网址和对应的ipv6网址,以及路由信息。139.在实际通信时,同一个局域网中的pod可以不经过宿主机(即pod所在的计算节点)直接通信,比如,图10中的pod1、pod2和pod4,其对接均为虚拟局域网接口bond0.910,属于macvlan1,因此,pod1、pod2和pod4之间的通信,可以通过macvlan2充当网关来进行转发。同理,pod3和pod5对接的均为虚拟局域网接口bond0.920,属于macvlan2,因此,pod3和pod5之间的通信,可以通过macvlan2充当网关来进行转发。不属于同一个macvlan的pod之间的通信,必须经过宿主机的物理网卡进行转发。140.作为一个示例,在pod中设置目的地址为service_cidr,网关为vmac对应的ip地址。则当pod中访问service时,通过vmac进行流量转发,将pod中的流量转发到宿主机上,再通过iptables规则/ipset规则,与端点(endpoints)建立链接。端点提供服务service和pod之间的衔接,通过endpoint对pod进行访问。141.在本实施例中,对于容器网络接口插件中二层mac网络,通过引入vlan技术对macvlan容器网络进行安全隔离,同时,对ip资源做ipv4和ipv6一对一的映射关系,实现支持ipv4和ipv6双栈网络,同时最大化兼容ipv4单栈容器网络。142.应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。143.本领域普通技术人员可以理解实现上述系统中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-onlymemory,rom)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(randomaccessmemory,ram)或外部高速缓冲存储器。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(staticrandomaccessmemory,sram)或动态随机存取存储器(dynamicrandomaccessmemory,dram)等。144.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。145.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献