您好,欢迎来到筏尚旅游网。
搜索
您的当前位置:首页一种基于云平台的大规模容器调度系统及方法[发明专利]

一种基于云平台的大规模容器调度系统及方法[发明专利]

来源:筏尚旅游网
(19)中华人民共和国国家知识产权局

(12)发明专利申请

(10)申请公布号 CN 107426034 A(43)申请公布日 2017.12.01

(21)申请号 201710712465.3(22)申请日 2017.08.18

(71)申请人 国网山东省电力公司信息通信公司

地址 250001 山东省济南市市中区经三路

17号

申请人 国家电网公司(72)发明人 曲延盛 严莉 韩圣亚 汤耀庭 

张宾 李明 刘范范 张丞 于展鹏 (74)专利代理机构 济南诚智商标专利事务所有

限公司 37105

代理人 李修杰(51)Int.Cl.

H04L 12/24(2006.01)H04L 29/08(2006.01)

权利要求书2页 说明书10页 附图2页

G06F 9/455(2006.01)

CN 107426034 A()发明名称

一种基于云平台的大规模容器调度系统及方法

(57)摘要

本发明公开了一种基于云平台的大规模容器调度系统及方法,系统包括:控制节点,用以接受客户端发出的请求并解析后发送给云平台;云平台,用以对容器进行管理以及创建容器所使用的底层资源,为容器提供底层云平台的虚拟化资源。方法包括以下步骤:获取客户端的发出请求;容器资源调度模块转发请求;控制节点的API网关转发请求并创建容器集群;应用集群API网关转发请求;调度器向代理发送指令;代理执行指令;容器引擎构建容器集合;副本控制器实现弹性伸缩;创建对应服务及端口;运行时动态调整。本发明不仅可以管理容器本身,而且还可以为容器自动提供底层云平台的虚拟化资源。

CN 107426034 A

权 利 要 求 书

1/2页

1.一种基于云平台的大规模容器调度系统,其特征是,包括:控制节点,用以接受客户端发出的请求,并把客户端传递来的请求解析后发送给云平台;

云平台,用以对容器进行管理以及创建容器所使用的底层资源,为容器提供底层云平台的虚拟化资源;容器所使用的底层资源包括主节点和从节点,所述主节点运行容器管理的服务,来实现任务调度,所述从节点为实际运行任务的节点。

2.如权利要求1所述的一种基于云平台的大规模容器调度系统,其特征是,所述控制节点包括容器资源调度模块,所述容器资源调度模块用以把云平台的概念、容器的概念都抽象出来集成在一起,并以模板的形式组织起来,从而把容器的功能集成到了云平台的界面统一管理。

3.如权利要求1所述的一种基于云平台的大规模容器调度系统,其特征是,所述云平台包括:

应用集群API网关,用以接收客户端发出的请求,并将请求发送到云平台集群内的调度模块;

容器调度器,用以配置各种调度规则,为需要部署的容器集合筛选合适的节点;副本控制模块,用以确保容器集合的一定数量的份数在运行;键值数据库,用以所有的持久性状态都保存在Etcd键值数据库中;代理,用以负责维护在特定主机上运行的一组容器;服务发现模块,用以为每个容器集合或者每个副本控制器创建对应服务及端口,其他的容器或者外部通过这个服务访问该容器集合;

容器网络模块,用以驱动不同类型的网络;容器存储模块,用以为容器提供共享存储。

4.如权利要求1至3任意一项所述的一种基于云平台的大规模容器调度系统,其特征是,所述云平台为为容器提供的虚拟化资源包括:虚拟机实例、共享存储、虚拟网络、虚拟负载均衡、IP和操作系统。

5.一种基于云平台的大规模容器调度方法,其特征是,包括以下步骤:步骤1,获取客户端的发出请求:客户端通过界面输入参数并转成模板,或者直接输入模板的方式发出应用集群的请求;

步骤2,容器资源调度模块转发请求:容器资源调度模块解析模板,将云平台的资源请求转发给控制节点的API网关,将容器的资源请求转发给应用集群API网关,同时调度模块会将此容器集群的信息写入到控制节点的数据库中;

步骤3,控制节点的API网关转发请求并创建容器集群:控制节点的API网关将请求分类,转发给不同的功能模块,云云平台的功能模块相互协作根据客户端输入的参数,创建容器集群的主节点和从节点并为容器创建虚拟化资源;

步骤4,应用集群API网关转发请求:应用集群API网关接收到转发的请求后,等待云平台的资源准备就绪后对客户端发出的请求进行解析,并分别发送到调度器和副本控制器,同时将请求内的参数为“键-值”的方式存储到Etcd数据库中;

步骤5,调度器向代理发送指令:调度器接收请求中关于调度策略的参数,并在容器集群的从节点中过滤节点,并给选中者所在的代理发送指令;

2

CN 107426034 A

权 利 要 求 书

2/2页

步骤6,代理执行指令:从节点的代理收到调度器发送来的指令时,主动到Etcd键值数据库里Watch配置,将请求与配置集成为指令下发给容器引擎和服务发现模块;

步骤7,容器引擎构建容器集合:容器引擎会根据指令创建容器和容器集合,对接网络和存储;

步骤8,副本控制器实现弹性伸缩:副本控制器监控容器集合的副本数,当现有的副本数低于定义时,主动触发调度器重新创建一个容器集合,当现有的副本数高于定义时,也会主动的杀掉多余的副本;

步骤9,创建对应服务及端口:服务发现模块为每个容器集合或者每个副本控制器创建对应服务及端口,其他的容器或者外部通过这个服务访问这个容器集合;

步骤10,运行时动态调整:当容器、容器集合构建完成,通过副本控制器控制弹性伸缩,并通过服务发现模块创建对应服务及端口后,系统进入运行时。

6.如权利要求5所述的一种基于云平台的大规模容器调度方法,其特征是,为容器创建的虚拟化资源包括:虚拟机实例、共享存储、虚拟网络、虚拟负载均衡、IP和操作系统。

7.如权利要求5所述的一种基于云平台的大规模容器调度方法,其特征是,服务发现模块为每个容器集合或者每个副本控制器创建对应服务的具体过程为:运行相同业务的容器集合、副本控制器和服务被打上相同的标签,将这个配置存放在Etcd键值数据库中,当新的副本创建时,将新的副本注册在DNS服务器中,并告知负载均衡,新的访问即可被分发到新的副本上。

8.如权利要求5所述的一种基于云平台的大规模容器调度方法,其特征是,所述动态调整包括以下两个层次动态调整:一是调整容器集群的规模,一是调整应用集群的规模。

3

CN 107426034 A

说 明 书

一种基于云平台的大规模容器调度系统及方法

1/10页

技术领域

[0001]本发明涉及一种基于云平台的大规模容器调度系统及方法,属于电力系统云数据处理技术领域。

背景技术[0002]随时“互联网+能源”战略的推进,电力应用也在转向互联网,传统应用架构无法适应这种大规模的分布式应用,也无法适应互联网快速迭代的需求,为适应发展,容器技术应运而生。目前主流的容器技术Docker实现了一个开源的应用容器引擎,能实现一次构造,随时随地运行,能通过简单的“构造、运输、运行”将开发环境与运行环境打通,实现简化部署、快速启动、易于迁移;这很好的解决了对分布式类型应用的支撑问题。

[0003]由于容器承载的分布式类型应用(或者说是互联网应用)的特点所决定,少量的容器并没有太大的意义,一定是大规模的使用才能体现容器的价值,而容器本身不提供容器集群的管理机制。另一方面,容器需要运行在物理机中或者虚拟机中,当容器运维在物理机中时灵活性受到物理机的,而云计算平台中虚拟机本身具备很高的灵活性,容器如果能够充分的利用虚拟资源的灵活性,将极大的提供容器的适用范围。[0004]但是,现在还没有出现具备集群管理机制和充分调度利用资源的容器技术。发明内容

[0005]针对现有技术的不足,本发明提出了一种基于云平台的大规模容器调度系统及方法,其不仅可以管理容器本身,而且还可以为容器自动提供底层云平台的虚拟化资源。[0006]本发明解决其技术问题采取的技术方案是:

[0007]本发明实施例提供的一种基于云平台的大规模容器调度系统,它包括:[0008]控制节点,用以接受客户端发出的请求,并把客户端传递来的请求解析后发送给云平台;

[0009]云平台,用以对容器进行管理以及创建容器所使用的底层资源,为容器提供底层云平台的虚拟化资源;容器所使用的底层资源包括主节点和从节点,所述主节点运行容器管理的服务,来实现任务调度,所述从节点为实际运行任务的节点。[0010]作为本实施例一种可能的实现方式,所述控制节点包括容器资源调度模块,所述容器资源调度模块用以把云平台的概念、容器的概念都抽象出来集成在一起,并以模板的形式组织起来,从而把容器的功能集成到了云平台的界面统一管理。[0011]作为本实施例一种可能的实现方式,所述云平台包括:[0012]应用集群API网关,用以接收客户端发出的请求,并将请求发送到云平台集群内的调度模块;

[0013]容器调度器,用以配置各种调度规则,为需要部署的容器集合筛选合适的节点;[0014]副本控制模块,用以确保容器集合的一定数量的份数(replica)在运行;[0015]键值数据库,用以所有的持久性状态都保存在Etcd键值数据库中;

4

CN 107426034 A[0016]

说 明 书

2/10页

代理,用以负责维护在特定主机上运行的一组容器;

[0017]服务发现模块,用以为每个容器集合或者每个副本控制器创建对应服务及端口,其他的容器或者外部通过这个服务访问该容器集合;[0018]容器网络模块,用以驱动不同类型的网络;[0019]容器存储模块,用以为容器提供共享存储。[0020]作为本实施例一种可能的实现方式,所述云平台为为容器提供的虚拟化资源包括:虚拟机实例、共享存储、虚拟网络、虚拟负载均衡、IP和操作系统。[0021]本发明实施例提供的一种基于云平台的大规模容器调度方法,它包括以下步骤:[0022]步骤1,获取客户端的发出请求:客户端通过界面输入参数并转成模板,或者直接输入模板的方式发出应用集群的请求;[0023]步骤2,容器资源调度模块转发请求:[0024]容器资源调度模块解析模板,将云平台的资源请求转发给控制节点的API网关,将容器的资源请求转发给应用集群API网关,同时调度模块会将此容器集群的信息写入到控制节点的数据库中;[0025]步骤3,控制节点的API网关转发请求并创建容器集群:控制节点的API网关将请求分类,转发给不同的功能模块,云云平台的功能模块相互协作根据客户端输入的参数,创建容器集群的主节点和从节点并为容器创建虚拟化资源;[0026]步骤4,应用集群API网关转发请求:应用集群API网关接收到转发的请求后,等待云平台的资源准备就绪后对客户端发出的请求进行解析,并分别发送到调度器和副本控制器,同时将请求内的参数为“键-值”的方式存储到Etcd数据库中;[0027]步骤5,调度器向代理发送指令:调度器接收请求中关于调度策略的参数,并在容器集群的从节点中过滤节点,并给选中者所在的代理发送指令;[0028]步骤6,代理执行指令:从节点的代理收到调度器发送来的指令时,主动到Etcd键值数据库里Watch配置,将请求与配置集成为指令下发给容器引擎和服务发现模块;[0029]步骤7,容器引擎构建容器集合:容器引擎会根据指令创建容器和容器集合,对接网络和存储;[0030]步骤8,副本控制器实现弹性伸缩:副本控制器监控容器集合的副本数,当现有的副本数低于定义时,主动触发调度器重新创建一个容器集合,当现有的副本数高于定义时,也会主动的杀掉多余的副本;[0031]步骤9,创建对应服务及端口:服务发现模块为每个容器集合或者每个副本控制器创建对应服务及端口,其他的容器或者外部通过这个服务访问这个容器集合。[0032]步骤10,运行时动态调整:当容器、容器集合构建完成,通过副本控制器控制弹性伸缩,并通过服务发现模块创建对应服务及端口后,系统进入运行时。[0033]作为本实施例一种可能的实现方式,为容器创建的虚拟化资源包括:虚拟机实例、共享存储、虚拟网络、虚拟负载均衡、IP和操作系统。[0034]作为本实施例一种可能的实现方式,服务发现模块为每个容器集合或者每个副本控制器创建对应服务的具体过程为:运行相同业务的容器集合、副本控制器和服务被打上相同的标签,将这个配置存放在Etcd键值数据库中,当新的副本创建时,将新的副本注册在DNS服务器中,并告知负载均衡,新的访问即可被分发到新的副本上。

5

CN 107426034 A[0035]

说 明 书

3/10页

作为本实施例一种可能的实现方式,所述动态调整包括以下两个层次动态调整:

一是调整容器集群的规模(即虚拟机个数),一是调整应用集群的规模(即容器集合的个数),实现对容器的动态调整。

[0036]本发明实施例的技术方案可以具有的有益效果如下:[0037]针对容器的技术背景,本发明的实施例技术方案提供了一种基于云平台的大规模容器调度方案,不仅可以管理容器本身,还可以为容器自动提供底层云平台的虚拟化资源。本发明的实施例技术方案包括两大方面,一是设计一种管理和调度机制,这个机制要按照互联网应用松耦合的理念来设计,要保证在大规模应用场景下的并发性与性能,又要保证管理的自动化与便利性;二是遵照所设计的机制实现一种方法,通过这种方法可以与现有环境中的云平台结合,实现应用集群、容器集群的两级调度。[0038]与现有技术相比较,本公开的实施例提供的技术方案具有以下特点:[0039](1)获得灵活定义的容器集合

[0040]使研发人员可以灵活的自定义几个容器为一个容器集合,可定义的属性包括数量,二是容器所运行的应用,三是各个容器之间的服务调用,应用调度的最小单元是容器集合,而不是单个容器,便于管理和应用的快速迭代。[0041](2)实现跨宿主机的容器通信

[0042]打破了容器之间只能在同宿主机内的局限性,提供了一个可扩展的网络模块,可以对接云平台的网络技术,在同一个容器集合内可以通过内部机制通信,不同宿主机之间容器之间可以通过灵活的方式通信且不损失容器的功能。[0043](3)实现跨宿主机的存储共享

[0044]打破了容器之间只能在同宿主机内的局限性,提供了一个可扩展的存储模块,可以对接云平台的存储技术,在云平台的资源池内共享相同的存储数据。[0045](4)解决应用集群的服务发现[0046]实现了应用集群的弹性伸缩,当新的容器集合被创建时,可以动态的注册在负载均衡器上,新的访问请求可以分发到新的容器上。[0047](5)方便的冗余管理解决高可用问题[0048]容器管理的最小单元是容器集合,应用可以通过这个冗余管理来调整容器集合的副本数,从而实现方便的多副本管理,一键伸缩等功能。[0049](6)调度云平台的虚拟资源[0050]通过一个调度模块,可以将容器管理平台与云平台结合,容器管理平台直接调用云平台里的虚拟机、云存储、云网络、虚拟负载均衡等资源,大大扩展了容器的灵活度。附图说明

[0051]图1是根据一示例性实施例示出的一种基于云平台的大规模容器调度系统的框图;

[0052]图2是根据一示例性实施例示出的一种基于云平台的大规模容器调度方法的流程图。具体实施方式

6

CN 107426034 A[0053]

说 明 书

4/10页

为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发

明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地本发明。[00]现有的容器技术由于没有集群管理机制和充分调度利用资源的,存在如下问题:[0055](1)单个容器调度复杂,无法形成有效群集[0056]容器都是的单元,而相对一个应用来说,只有几个组件相互关联才能实现一个功能,调度机制只调度一个容器会导致其依赖的组件缺失无法运行,而如果强制的规定固定数目的容器做为一个整体又会失去灵活性。[0057](2)容器之间缺乏通信管理

[0058]单个容器可以通过共享宿主机的网络来与外界通信,与其他虚拟化一样可以使用桥接、NAT(Network Address Translation,网络地址转换)、主机独享等模式,当每一台宿主机上都有成百上千个容器时现有的机制无法实现与不同宿主机上的容器通信,无法企业级使用。[0059](3)容器无法共享存储[0060]容器具备很高的灵活性,可以像虚拟机一样随时创建、销毁或者在宿主机之间迁移,容器集合内可以通过挂载宿主机的文件系统来实现存储共享,容器本身无法解决跨宿主机之间的存储共享,比如当在宿主机A故障时,容器被迁移到宿主机B上,但其数据在B上没有保存,就无法运行;[0061](4)无法弹性伸缩

[0062]单个容器可以直接对外提供服务,当应用负载上升时,要创建多个功能相同的容器,这组相同的容器可以使用负载均衡实现通过一个统一的入口对外提供服务,但当容器在运行的创建、销毁的过程中,现有的负载均衡无法监测到后端资源池的变化实现动态调整,导致访问请求无法分配到新创建的容器中。[0063](5)没有高可用管理机制

[00]即当一个物理机或者虚拟机故障时不影响整个集群的正常运行,容器本身没有提供相应的办法,只能手工的维护容器的冗余,这在企业级应用中效率是非常低的。[0065](6)容器无法调度云平台的资源[0066]宿主机的环境是固定的,当宿主机的资源成为瓶颈时容器无法解决,而这是互联网应用一个经常发生的场景,比如国网商城的促销日、月底的电费缴纳日等,互联网用户的体验将会大大折扣。

[0067]容器是一个轻量级的虚拟化技术,需要一个集群管理工具,同时容器也要有承载的底层资源,针对容器的技术背景,本发明提供了一种基于云平台的大规模容器调度方法,其通过对容器本身的管理、以及对容器所依赖的资源的管理,实现了容器的大规模应用的编排管理和底层资源深度结合。

[0068]图1是根据一示例性实施例示出的一种基于云平台的大规模容器调度系统的框图。如图1所示,所述基于云平台的大规模容器调度系统可以包括:

7

CN 107426034 A[0069]

说 明 书

5/10页

控制节点,用以接受客户端发出的请求,并把客户端传递来的请求解析后发送给

云平台;

[0070]云平台,用以对容器进行管理以及创建容器所使用的底层资源,为容器提供底层云平台的虚拟化资源;容器所使用的底层资源包括主节点和从节点,所述主节点运行容器管理的服务,来实现任务调度,所述从节点为实际运行任务的节点。[0071]在一种可能的实现方式中,所述控制节点包括容器资源调度模块,所述容器资源调度模块用以把云平台的概念、容器的概念都抽象出来集成在一起,并以模板的形式组织起来,从而把容器的功能集成到了云平台的界面统一管理。[0072]在一种可能的实现方式中,所述云平台包括:[0073]应用集群API网关,用以接收客户端发出的请求,并将请求发送到云平台集群内的调度模块;

[0074]容器调度器,用以配置各种调度规则,为需要部署的容器集合筛选合适的节点;[0075]副本控制模块,用以确保容器集合的一定数量的份数(replica)在运行;[0076]键值数据库,用以所有的持久性状态都保存在Etcd键值数据库中;[0077]代理,用以负责维护在特定主机上运行的一组容器;[0078]服务发现模块,用以为每个容器集合或者每个副本控制器创建对应服务及端口,其他的容器或者外部通过这个服务访问该容器集合;[0079]容器网络模块,用以驱动不同类型的网络;[0080]容器存储模块,用以为容器提供共享存储。[0081]在一种可能的实现方式中,所述云平台为为容器提供的虚拟化资源包括:虚拟机实例、共享存储、虚拟网络、虚拟负载均衡、IP和操作系统。

[0082]本发明实施例的技术方案设计了一种松偶的调度机制,各个模块之间的调用是异步的方式,这样可以保证大并发时的性能。为了简化大规模容器部署的管理,在调度机制中引入了以下几个重新设计的概念:[0083](1)容器集合:几个相互关联共同完成一个功能或者服务的容器的集合。[0084](2)服务:容器集合对外提供服务时所暴露的接口。[0085](3)应用集群:由容器组成的集群,是针对应用层面的概念。[0086](4)容器集群:由宿主机组成的集群,这是针对容器运行所依赖的底层环境的概念。[0087](5)模板:是把各种资源以编排的方式写入一个文件,这种编排要求有固定的格式、规范、语义,并通过一个编排引擎实现资源的部署。[0088]下面对所述系统的架构进行详细说明.

[00]本发明实施例的技术方案是将容器运行在虚拟化环境中。其中可以分为两个层面,底层是云平台层面,可以为容器提供各种资源,上层是容器层面,是一个面向应用的管理与调度层。

[0090]其中云平台的物理服务器分为两种角色,一种是控制节点,一种是云平台(即计算节点),控制节点运行的是云平台关键的服务,计算节点则运行了云平台的虚拟机。[0091]控制节点内增加了专门为容器管理所设计的“容器资源调度模块”,可以接受客户端发出的请求,这样就把容器的功能也集成到了云平台的界面统一管理。这个模块把云平

8

CN 107426034 A

说 明 书

6/10页

台的概念、容器的概念都抽象出来集成在一起,并以模板的形式组织起来,把客户端传递来的模板解析后分别传递给云平台的API(Application Programming Interface,应用程序编程接口)网关和应用集群API网关。

[0092]云平台后端的机制会自动的创建容器所使用的底层资源,而对容器的管理来说,有主节点与从节点,主节点运行容器管理的服务,实现任务调度,而从节点则是实际运行任务的节点。

[0093]云平台的几个主要模块为:[0094](1)应用集群API网关

[0095]负责接收客户端发出的请求,实际上一个对外提供服务的HTTP/HTTPS服务器,只做简单的路由,将请求发送到主节点集群内的调度模块。数据最终存储在分布式一致的etcd(一种分布式环境下的key/value存储服务)存储内,API网关本身是无状态的,提供了这些数据访问的认证鉴权、缓存、api版本适配转换等一系列的功能。[0096](2)容器调度器

[0097]可以配置各种调度规则,以实现容器在从节点上的按需分配,正常情形下调度器通过算法为容器集合筛选合适的节点,然后绑定节点和容器集合的关系,相应节点上的代理读取到绑定信息才会拉起容器集合。在这个过程中调度器的职责很明确,就是为需要部署的容器集合筛选合适的节点,调度器是插件的形式,所以用户可以自定义调度策略。[0098](3)副本控制模块[0099]副本控制器确保容器集合的一定数量的份数(replica)在运行。如果超过这个数量,控制器会杀死一些,如果少了,控制器会启动一些。控制器也会在节点失效、维护的时候来保证这个数量。所以强烈建议即使我们的份数是1,也要使用复制控制器,而不是直接创建容器集合。[0100](4)键值数据库

[0101]使用Etcd键值数据库,所有的持久性状态都保存在etcd中。Etcd同时支持watch(检测命令),这样组件很容易得到系统状态的变化,从而快速响应和协调工作。[0102](5)代理

[0103]运行在从节点上.代理的二进制程序负责维护在特定主机上运行的一组容器。它从配置文件或是从etcd服务器上同步容器配置清单。容器配置清单是描述一个容器集合的文件,代理采用一组使用各种机制提供的清单并确保这些清单描述的容器被启动并持续运行,管理容器集合和它们的容器、镜像和卷等信息。[0104](6)服务发现模块

[0105]每个代理节点都运行了一个代理进程。这个进程从服务进程那边拿到服务和端口对象的变化。对每一个服务它在本地打开一个端口。到这个端口的任意连接都会代理到后端容器集合中的一个容器集合IP和端口。在创建了服务后,服务端口模型会体现后端容器集合的IP和端口列表,代理就是从这个端口维护的列表中选择服务后端的。[0106](7)容器网络模块

[0107]可以支持不同的网络解决方案,以driver(驱动)的方式驱动不同类型的网络,比如直接使用云平台提供的网络,IP以容器集合为单位分配,而不是以容器为单位,一个容器集合内的容器可以通过共享同一个Linux Namespace(命名空间),包括IP地址、网络设备、

9

CN 107426034 A

说 明 书

7/10页

端口等。集群中的所有容器可以直接和其他容器进行通信,不通过NAT;任意node节点可以和任意容器进行通信,不通过NAT;任意容器的IP地址,和外界看到它的IP地址一致。网络模块是插件形式,可以支持多种方案,比如flannel(一种针对Kubernetes设计的一个覆盖网络Overlay Network工具)、calico(对于容器虚拟网络、网络安全的一种新的实现方法)、contiv(一种通用型网络插件,是Cisco的开源项目)等。[0108](8)容器存储模块

[0109]可以支持不同的存储解决方案,以dr iver的方式驱动不同类型的网络,比如直接使用云平台提供的存储。存储模块可以提供两种存储:Volume(普通卷)和Persistent Volume(永久卷)。Volume与容器集合的生命周期相同,当容器集合销毁时,Volume也随之销毁;Persistent Volume于容器集合的生命周期,可实现持久化,多个容器集合共享存储需要通过Persistent Volume。Volume与Persistent Volume都是插件形式,可以支持很多种存储,比如Cinder(openstack实现块存储的组件)、RBD(RBD是Ceph面向块存储的接口)、GlusterFS(一个开源的分布式文件系统)、FC(FiberChannel,光纤通道)、NFS(Network File System,即网络文件系统)等。

[0110]本发明的实施例技术方案不仅可以管理容器本身,还可以为容器自动提供底层云平台的虚拟化资源。其主要包括两大方面,一是设计一种管理和调度机制,这个机制要按照互联网应用松耦合的理念来设计,要保证在大规模应用场景下的并发性与性能,又要保证管理的自动化与便利性;二是遵照所设计的机制实现一种方法,通过这种方法可以与现有环境中的云平台结合,实现应用集群、容器集群的两级调度。

[0111]图2是根据一示例性实施例示出的一种基于云平台的大规模容器调度方法的流程图。如图2所示,所述基于云平台的大规模容器调度方法可以包括以下步骤:[0112]步骤1,获取客户端的发出请求:客户端通过界面输入参数并转成模板,或者直接输入模板的方式发出应用集群的请求;[0113]步骤2,容器资源调度模块转发请求:[0114]容器资源调度模块解析模板,将云平台的资源请求转发给控制节点的API网关,将容器的资源请求转发给应用集群API网关,同时调度模块会将此容器集群的信息写入到控制节点的数据库中;[0115]步骤3,控制节点的API网关转发请求并创建容器集群:控制节点的API网关将请求分类,转发给不同的功能模块,云云平台的功能模块相互协作根据客户端输入的参数,创建容器集群的主节点和从节点并为容器创建虚拟化资源;[0116]步骤4,应用集群API网关转发请求:应用集群API网关接收到转发的请求后,等待云平台的资源准备就绪后对客户端发出的请求进行解析,并分别发送到调度器和副本控制器,同时将请求内的参数为“键-值”的方式存储到Etcd数据库中;[0117]步骤5,调度器向代理发送指令:调度器接收请求中关于调度策略的参数,并在容器集群的从节点中过滤节点,并给选中者所在的代理发送指令;[0118]步骤6,代理执行指令:从节点的代理收到调度器发送来的指令时,主动到Etcd键值数据库里Watch配置,将请求与配置集成为指令下发给容器引擎和服务发现模块;[0119]步骤7,容器引擎构建容器集合:容器引擎会根据指令创建容器和容器集合,对接网络和存储;

10

CN 107426034 A[0120]

说 明 书

8/10页

步骤8,副本控制器实现弹性伸缩:副本控制器监控容器集合的副本数,当现有的

副本数低于定义时,主动触发调度器重新创建一个容器集合,当现有的副本数高于定义时,也会主动的杀掉多余的副本;[0121]步骤9,创建对应服务及端口:服务发现模块为每个容器集合或者每个副本控制器创建对应服务及端口,其他的容器或者外部通过这个服务访问这个容器集合。[0122]步骤10,运行时动态调整:当容器、容器集合构建完成,通过副本控制器控制弹性伸缩,并通过服务发现模块创建对应服务及端口后,系统进入运行时。[0123]在一种可能的实现方式中,为容器创建的虚拟化资源包括:虚拟机实例、共享存储、虚拟网络、虚拟负载均衡、IP和操作系统。[0124]在一种可能的实现方式中,服务发现模块为每个容器集合或者每个副本控制器创建对应服务的具体过程为:运行相同业务的容器集合、副本控制器和服务被打上相同的标签,将这个配置存放在Etcd键值数据库中,当新的副本创建时,将新的副本注册在DNS服务器中,并告知负载均衡,新的访问即可被分发到新的副本上。[0125]在一种可能的实现方式中,所述动态调整包括以下两个层次动态调整:一是调整容器集群的规模(即虚拟机个数),一是调整应用集群的规模(即容器集合的个数),实现对容器的动态调整。[0126]利用本实施例示出的一种基于云平台的大规模容器调度方法对容器集群进行管理的具体流程如下。[0127](1)客户端发出请求

[0128]客户端发出应用集群的请求,可以是通过界面输入参数,或者直接输入模板,这个模板里包括了对底层云平台的资源定义,也包括了对应用集群的资源的定义。[0129](2)容器资源调度模块转发请求[0130]容器资源调度模块解析模板,将云平台的资源请求转发给云平台的API网关,将容器的资源请求转发给应用集群API网关,同时调度模块会将此容器集群的信息写入到云平台的数据库中。[0131](3)云平台API网关转发请求并创建容器集群[0132]云平台的API网关将请求分类,转发给不同的功能模块,云平台的功能模块相互协作根据客户端输入的参数,创建容器集群的主节点、从节点还有其他的资源,目前云平台可以提供给容器的资源包括:虚拟机实例、共享存储、虚拟网络、虚拟负载均衡、IP和操作系统。[0133](4)应用集群API网关转发请求

[0134]应用集群API网关接收到转发的请求后,会等待云平台的资源准备就绪,当云平台通知资源就绪后,将请求解析,分别发送到调度器和副本控制器,同时将请求内的参数为“键-值”的方式存储到Etcd数据库中。[0135](5)调度器向代理发送指令[0136]调度器接收请求中关于调度策略的参数,并在容器集群的从节点中过滤节点,并给选中者所在的代理发送指令。[0137](6)代理执行指令

[0138]从节点的代理收到调度器发送来的指令时,会主动的到Etcd键值数据库里Watch

11

CN 107426034 A

说 明 书

9/10页

配置,并将请求与配置集成为指令下发给容器引擎和服务发现模块。[0139](7)容器引擎构建容器集合

[0140]容器引擎会根据指令创建容器、创建容器集合,对接网络、存储等。并启动副本控制器。[0141](8)副本控制器实现弹性伸缩[0142]副本控制器是一个虚拟化服务,并不存在这个实体,实际上是一个进程,这个服务会监控容器集合的副本数,当现有的副本数低于定义时,主动触发调度器重新创建一个容器集合,当现有的副本数高于定义时,也会主动的杀掉多余的副本,所以管理员可以手动的调整这个定义来实现弹性伸缩。[0143](9)创建对应服务及端口

[0144]服务发现模块为每个容器集合或者每个副本控制器创建对应服务及端口,其他的容器或者外部可以通过这个服务访问这个容器集合,这个模块实际上是一个负载均衡器,比如也可以合作haproxy(一种软件实现的负载均衡)、硬件负载均衡等实现。服务的自动发现是通过DNS配合标签实现的,运行相同业务的容器集合、副本控制器、服务会被打上相同的标签,这个配置存放在Etcd中,当新的副本创建时,可以自动的注册在DNS服务器中,并告知负载均衡,新的访问即可被分发到新的副本上。[0145](10)运行时动态调整[0146]当容器、容器集合构建完成,通过副本控制器控制弹性伸缩,并通过服务发现模块创建对应服务及端口后,系统进入运行时。在此状态下,可以通过两个层次动态调整,一是调整容器集群的规模(即虚拟机个数),一是调整应用集群的规模(即容器集合的个数),实现对容器的动态调整。

[0147]与现有技术相比较,本公开的实施例提供的技术方案具有以下特点:[0148](1)获得灵活定义的容器集合

[0149]使研发人员可以灵活的自定义几个容器为一个容器集合,可定义的属性包括数量,二是容器所运行的应用,三是各个容器之间的服务调用,应用调度的最小单元是容器集合,而不是单个容器,便于管理和应用的快速迭代。[0150](2)实现跨宿主机的容器通信

[0151]打破了容器之间只能在同宿主机内的局限性,提供了一个可扩展的网络模块,可以对接云平台的网络技术,在同一个容器集合内可以通过内部机制通信,不同宿主机之间容器之间可以通过灵活的方式通信且不损失容器的功能。[0152](3)实现跨宿主机的存储共享

[0153]打破了容器之间只能在同宿主机内的局限性,提供了一个可扩展的存储模块,可以对接云平台的存储技术,在云平台的资源池内共享相同的存储数据。[01](4)解决应用集群的服务发现[0155]实现了应用集群的弹性伸缩,当新的容器集合被创建时,可以动态的注册在负载均衡器上,新的访问请求可以分发到新的容器上。[0156](5)方便的冗余管理解决高可用问题[0157]容器管理的最小单元是容器集合,应用可以通过这个冗余管理来调整容器集合的副本数,从而实现方便的多副本管理,一键伸缩等功能。

12

CN 107426034 A[0158]

说 明 书

10/10页

(6)调度云平台的虚拟资源

[0159]通过一个调度模块,可以将容器管理平台与云平台结合,容器管理平台直接调用云平台里的虚拟机、云存储、云网络、虚拟负载均衡等资源,大大扩展了容器的灵活度。[0160]以上所述只是本发明的优选实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也被视为本发明的保护范围。

13

CN 107426034 A

说 明 书 附 图

1/2页

图1

14

CN 107426034 A

说 明 书 附 图

2/2页

图2

15

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- efsc.cn 版权所有 赣ICP备2024042792号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务