CN109032755B - 一种容器服务托管系统及提供容器服务的方法 - Google Patents

一种容器服务托管系统及提供容器服务的方法 Download PDF

Info

Publication number
CN109032755B
CN109032755B CN201810715742.0A CN201810715742A CN109032755B CN 109032755 B CN109032755 B CN 109032755B CN 201810715742 A CN201810715742 A CN 201810715742A CN 109032755 B CN109032755 B CN 109032755B
Authority
CN
China
Prior art keywords
container
virtual machine
application
running
resource
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201810715742.0A
Other languages
English (en)
Other versions
CN109032755A (zh
Inventor
高鹏
张苗磊
安雪艳
贺佳杰
叶理灯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ucloud Technology Co ltd
Original Assignee
Ucloud Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ucloud Technology Co ltd filed Critical Ucloud Technology Co ltd
Priority to CN201810715742.0A priority Critical patent/CN109032755B/zh
Publication of CN109032755A publication Critical patent/CN109032755A/zh
Application granted granted Critical
Publication of CN109032755B publication Critical patent/CN109032755B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种容器服务托管系统,包括:资源池,包含多台服务器,服务器上运行有预定应用程序以及优先级低于预定应用程序的虚拟机;调度模块,响应于接收到容器创建请求,在资源池中寻找匹配虚拟机并在其上创建容器,匹配虚拟机的空闲资源满足待创建容器的资源需求且所属服务器的资源利用率低于阈值;存储模块,用于存储服务器上的容器部署信息;统一接入层,从存储模块中获取容器部署信息并将对应用程序的访问请求路由至相应的容器;应用程序编程接口,响应于接收到用户的应用服务创建请求,向调度模块发送容器创建请求。本发明能够充分利用服务器的空闲资源。本发明还涉及一种提供容器服务的方法。

Description

一种容器服务托管系统及提供容器服务的方法
技术领域
本发明涉及计算机技术领域,具体涉及一种容器服务托管系统以及提供容器服务的方法。
背景技术
容器技术通过将应用程序以及所依赖的类库、运行环境打包到容器镜像中,为应用服务提供了快速迭代部署的能力。
Kubernetes是Google公司推出并开源的一套分布式容器管理服务,提供了容器的托管、编排以及部署、网络、服务发现等方面的拓展能力。Kubernetes使用高可用的分布式键值存储数据库ETCD,使用APIServer提供HTTP接口,在每个需要运行容器的服务器上部署Kubelet组件,同时还通过Kube-controller-manager、Kube-scheduler等master组件实现各类功能。
Docker Swarm是Docker公司推出的容器管理服务,提供容器管理、负载均衡、服务发现等功能,对外暴露了标准的Docker API,用户可以用和操作单个容器类似的方式,来操作一个容器集群。Docker Swarm的架构分为两个部分,第一部分是Swarm master,负责容器的调度及其他管理功能;第二部分是Swarm worker,负责运行具体的应用服务。此外,容器之间的通信,通过Overlay network技术实现。
Apache Mesos是一个开源的分布式资源管理框架,提供了两层调度的能力,通过Marathon Framework,可以提供容器管理的能力。Mesos分为三部分:每台机器上部署的Mesos-agent负责管理这台服务器上的资源,Mesos-master与Zookeeper负责管理整体的资源以及在Famework之间进行调度,Framework负责调度具体的应用服务。
然而,上述三种容器技术都需要对服务器资源拥有绝对的使用权,即服务器上容器的部署是按照服务器的硬件资源以及容器的资源需求预先规划的、是静态的,在应用程序的业务低谷期间,不会在服务器上额外部署其他容器以避免与该应用程序竞争硬件资源,保证容器中应用程序的正常使用与运行性能。因此,上述三种容器技术不能充分利用应用程序业务低谷期间的服务器资源,从而导致资源浪费。
发明内容
为了解决上述全部或部分问题,本发明提供一种容器服务托管系统以及提供容器服务的方法。
本发明的实施方式公开了一种容器服务托管系统,该系统包含:
资源池,包含多台服务器,服务器上运行有预定应用程序以及用于运行容器的虚拟机,虚拟机的优先级低于预定应用程序的优先级;
调度模块,响应于接收到容器创建请求,在资源池中寻找匹配虚拟机并在匹配虚拟机上创建容器,匹配虚拟机的空闲资源满足待创建容器的资源需求并且匹配虚拟机所属服务器的资源利用率低于阈值;
存储模块,用于存储服务器上的容器部署信息;
统一接入层,从存储模块中获取容器部署信息,并将对应用程序的访问请求路由至运行应用程序的容器;
应用程序编程接口,响应于接收到用户的应用服务创建请求,向调度模块发送容器创建请求。
在一示范例中,资源池中的服务器分布在多个地域中,调度模块、存储模块、统一接入层以及应用程序编程接口中的一个或多个为跨地域部署。
在一示范例中,调度模块响应于接收到容器创建请求,在资源池中寻找分布在多个地域中的多台匹配虚拟机创建容器。
在一示范例中,响应于匹配虚拟机所属服务器的资源利用率高于阈值,调度模块关闭匹配虚拟机上运行的容器,并寻找新的匹配虚拟机创建容器。
在一示范例中,虚拟机上部署有用于服务器资源管理的Agent程序,调度模块根据Agent程序实时上报的资源信息寻找匹配虚拟机,并通过Agent程序在匹配虚拟机上创建容器或者关闭匹配虚拟机上运行的容器。
在一示范例中,虚拟机上部署有Docker程序用于创建并运行容器。
在一示范例中,应用程序包含具有不同权重值的多个不同版本,统一接入层将对应用程序的访问请求按权重值路由至运行应用程序的各个版本的各个容器。
在一示范例中,统一接入层将对应用程序的访问请求均匀地路由至运行应用程序的各个容器。
在一示范例中,在不同的容器中运行的应用程序之间采用Overlay网络进行通信。
在一示范例中,该系统还包括Overlay-Underlay网关,存放Overlay网络与Underlay网络之间的映射关系,当在容器中运行的应用程序与处于Underlay网络中的应用程序之间发送数据包时,数据包被路由至Overlay-Underlay网关,并且Overlay-Underlay网关将数据包中的Overlay网络IP地址映射为相应的Underlay网络IP地址。
本发明的实施方式还公开了一种提供容器服务的方法,该方法包含:
在资源池中的多台服务器上创建用于运行容器的虚拟机,虚拟机的优先级低于服务器上运行的预定应用程序的优先级;
接收用户的应用服务创建请求;
响应于接收到应用服务创建请求,在资源池中寻找匹配虚拟机并在匹配虚拟机上创建容器,匹配虚拟机的空闲资源满足待创建容器的资源需求并且匹配虚拟机所属服务器的资源利用率低于阈值;
存储服务器上的容器部署信息;
接收对应用程序的访问请求;
响应于接收到对应用程序的访问请求,根据容器部署信息将访问请求路由至运行应用程序的容器。
在一示范例中,资源池中的服务器分布在多个地域中,并且响应于接收到应用服务创建请求,在资源池中寻找分布在多个地域中的多台匹配虚拟机创建容器。
在一示范例中,该方法还包含:响应于匹配虚拟机所属服务器的资源利用率高于阈值,关闭匹配虚拟机上运行的容器,并寻找新的匹配虚拟机创建容器。
在一示范例中,虚拟机上部署有用于服务器资源管理的Agent程序,根据Agent程序实时上报的资源信息寻找匹配虚拟机,并通过Agent程序在匹配虚拟机上创建容器或者关闭匹配虚拟机上运行的容器。
在一示范例中,虚拟机上部署有Docker程序,使用Docker程序创建并运行容器。
在一示范例中,应用程序包含具有不同权重值的多个不同版本,该方法还包含将对应用程序的访问请求按权重值路由至运行应用程序的各个版本的各个容器。
在一示范例中,该方法还包含将对应用程序的访问请求均匀地路由至运行应用程序的各个容器。
在一示范例中,该方法还包含存放Overlay网络与Underlay网络之间的映射关系,当在容器中运行的处于Overlay网络中的应用程序与处于Underlay网络中的应用程序之间发送数据包时,将数据包中的Overlay网络IP地址映射为相应的Underlay网络IP地址。
在本发明的容器服务托管系统以及提供容器服务的方法中,通过将容器运行在虚拟机中并限制虚拟机的优先级,以及基于服务器资源利用率进行调度,可以在不影响预定应用程序的情况下,最大限度地利用服务器的资源,避免预定应用程序的业务低谷带来的资源浪费;进一步地,通过分布在多个地域中的服务器、跨地域部署的调度模块、存储模块、统一接入层以及应用程序编程接口等,以及跨地域的调度编排,实现了容器服务跨地域的高可用;进一步地,还可以实现灰度发布与负载均衡;进一步地,通过保存Overlay-Underlay映射关系,实现了软件定义网络和基础IP网络的互通。
附图说明
图1为根据本发明实施例的容器服务托管系统的架构示意图;
图2为根据本发明实施例的容器服务托管系统跨地域部署示意图;
图3为根据本发明实施例的Overlay-Underlay网关的原理示意图;
图4为根据本发明实施例的提供容器服务的方法的流程示意图。
具体实施方式
在以下的叙述中,为了使读者更好地理解本申请而提出了许多技术细节。但是,本领域的普通技术人员可以理解,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请各权利要求所要求保护的技术方案。
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的实施方式作进一步地详细描述。
图1为根据本发明实施例的容器服务托管系统的架构示意图,如图所示,容器服务托管系统包含资源池1、调度模块2、存储模块3、统一接入层4、以及应用程序编程接口(API)5,其中资源池1中包含多台服务器(或物理机)。在本发明中,可以在充分利用服务器资源的同时实现容器服务的高可用性,高可用性表示通过系统和架构的特殊设计,即使在一些进程、容器、服务器甚至机房发生故障时,应用服务本身还是能提供正常服务。为实现高可用性,如图2所示,资源池1中的服务器可以分布在多个地域中,如分布在不同机房、区域或者地市中;另外,调度系统2、统一接入层3、存储系统4以及应用程序编程接口(API)5中的一个或多个可以为跨地域部署,各地域的部署节点之间既保持相互独立又保持相互一致,当某些地域的部署节点发生故障时,其他地域的部署节点仍能保证服务的正常提供,其中,跨地域部署表示跨不同机房、区域或者地市的部署。
资源池1中的服务器(或物理机)上运行有预定应用程序以及用于运行容器的虚拟机,通过例如cgroups的技术进行资源限制,将虚拟机的优先级限制为低于预定应用程序的优先级,以避免这台虚拟机与该预定应用程序竞争服务器的硬件资源进而影响该预定应用程序的正常使用或运行性能,其中预定应用程序具有业务高峰期和低谷期,其可以直接运行在物理机上,也可以运行在该台物理机上的其他虚拟机中。
调度模块2响应于接收到容器创建请求,在资源池中寻找匹配虚拟机并在匹配虚拟机上创建容器,其中匹配虚拟机指的是空闲资源满足待创建容器的资源需求并且所属服务器的资源利用率低于阈值的虚拟机。由于一台虚拟机的资源配额可以被多个容器共享,调度模块2接收到容器创建请求后,需要根据待创建容器所需要的资源进行虚拟机匹配,寻找空闲资源满足需求的虚拟机;为了充分利用预定应用程序业务低谷期的服务器资源,调度模块2还需要进行服务器匹配,寻找资源利用率较低的服务器来创建容器,这样也有助于保证容器内应用程序的运行性能。由于容器中已经打包了应用程序以及所依赖的类库、运行环境,容器创建完成后,容器及其中的应用程序就可以在匹配虚拟机上运行。当匹配虚拟机所在服务器上的预定应用程序迎来业务高峰期时,服务器的资源利用率将高于阈值,响应于此,调度模块关闭或销毁该台匹配虚拟机上运行的容器,并寻找新的匹配虚拟机来创建容器。为实现容器服务的高可用性,对于某个容器创建请求,调度模块2可以在资源池中寻找分布在多个地域中的多台匹配虚拟机来创建多个相同的容器。
虚拟机上可以部署用于服务器资源管理的Agent程序,调度模块可以根据Agent程序实时上报的资源信息寻找匹配虚拟机,并通过Agent程序在匹配虚拟机上创建容器或者关闭在匹配虚拟机上运行的容器。此外,为创建并运行容器,可以在虚拟机上部署Docker程序,并使容器运行在Docker的bridge网络模式下。
为了便于管理和维护,可以按照地域和/或资源配置将各虚拟机划分为多个Set,并且可以为每个Set设置标签以声明该Set的属性,如该Set内具有若干数量的CPU、GPU。在这种情况下,调度模块响应于接收到容器创建请求,可以在资源池中寻找匹配Set,其中匹配Set内包含空闲资源满足容器资源需求的虚拟机,然后在匹配Set内选择所属服务器的资源利用率低于阈值的匹配虚拟机来创建并运行容器。当匹配虚拟机所属服务器的资源利用率高于阈值时,调度模块可以将容器迁移至该Set内的其他匹配虚拟机上。此外,在应用程序运行过程中,调度模块还根据Agent程序上报的每个容器的CPU、内存等资源利用率,自动增加、减少Set以及每个Set中容器的个数,实现自动扩缩容。为实现容器服务的高可用性,调度模块响应于接收到容器创建请求,可以在资源池中寻找分布在多个地域内的多个匹配Set,然后在各匹配Set内选择所属服务器的资源利用率低于阈值的匹配虚拟机来创建并运行容器。
存储模块3,用于存储与调度模块的调度事件相关的信息,包含服务器上的容器部署信息。为实现容器服务的高可用性,存储模块3可以使用跨地域部署的etcd集群,etcd为分布式一致性键值存储仓库,其使用Raft协议维护集群内各个节点状态的一致性,每个etcd节点都存储完整的数据。
通过域名解析,对系统内应用程序的访问请求会进入统一接入层3,统一接入层3从存储模块3中获取容器部署信息,并将对应用程序的访问请求路由至运行应用程序的容器。统一接入层3可以通过模块化的方式实现不同的协议,如HTTP、GRPC等。
用户可以通过系统创建多个应用服务,即运行多个应用程序,每个应用程序可以包含多个不同版本,每个版本可以拥有独立的域名,通过域名可以访问到版本的实例,每个应用程序也可以拥有独立的域名。为实现灰度发布,可以为每个应用程序的各个版本设置不同的权重值,当访问该应用程序的域名时,统一接入层3按照权重值将访问请求路由至运行该应用程序的各个版本的各个容器。
在容器服务高可用的情形中,对于用户的每个应用服务创建请求,已经在多个地域内的多台匹配虚拟机上创建了相同的容器,因此统一接入层3可以将对应用程序的访问请求均匀地路由至运行应用程序的各个容器,以实现负载均衡。
应用程序编程接口5接收用户的应用服务创建请求,该应用服务创建请求包含创建容器所需要的所有信息,应用程序编程接口5可以将该信息以及用户的信息存储在跨地域主从同步的MySQL 10中以实现容器服务的高可用性,并将包含容器创建所需信息的容器创建请求发送给调度模块2,也可以将应用服务的域名及其各个版本的权重值发送给统一接入层3。
如图1所示,容器服务托管系统还可以包括日志模块6,其可以通过Logstash收集两种类型的日志:应用程序的日志,用户的应用程序将日志输出到标准输出中,通过dockerlogging driver进行收集;统一接入层的日志。收集的日志可以被存储到两个地方,一是Elasticsearch集群,通过Web界面11或应用程序编程接口5进行查询和分析;二是对象存储系统,用于日志的下载和长期保存。
容器服务托管系统还可以包括数据模块7,实时记录应用程序的资源消耗情况和运营数据,例如以分钟为粒度,运营数据可以包含请求成功率和请求响应时间等。其中,资源消耗情况可以通过请求调度模块获取,运营数据可以通过分析统一接入层的日志获取。用户可以通过数据模块7获取自己应用服务的CPU、内存、磁盘等资源的消耗情况,以及请求成功率、响应时间等运营数据。
容器服务托管系统还可以包括监控模块8,提供主动拨测监控,对每一个应用程序或其每个版本,模拟用户的请求进行主动拨测,匹配返回的状态码或文本,当不匹配时向用户发送报警。
用户可以通过Web页面11、命令行工具12、或直接调用应用程序编程接口5来使用系统,例如创建、删除、查询和更新应用服务,进行日志下载、数据查询、监控管理等。
容器服务托管系统还包括域名服务器DNS 13,解析域名、进行域名与相应IP地址之间的转换。
在容器服务托管系统中,各容器中运行的应用程序之间采用Overlay网络进行通信。Overlay网络是建立在基础IP网络即Underlay网络之上的虚拟网络,Overlay网络内的节点通过虚拟的或逻辑的链接进行通信,每一个虚拟的或逻辑的链接对应于Underlay网络的一条路径,数据包在Overlay网络的边缘设备处被隧道封装协议封装以在Underlay网络中转发。然而,由于系统内各虚拟机的IP地址是Overlay网络内部的IP地址,若容器中运行的应用程序与处于Underlay网络中的应用程序之间通信,虚拟机的IP地址将不能被Underlay网络中的应用程序识别。因此,在本发明中,高可用容器服务托管系统还包括Overlay-Underlay网关9,存放Overlay网络与Underlay网络之间的映射关系,当在容器中运行的应用程序与处于Underlay网络中的应用程序之间发送数据包时,该数据包被路由至Overlay-Underlay网关,Overlay-Underlay网关将数据包中的Overlay网络IP地址映射为相应的Underlay网络IP地址。Overlay-Underlay网关实现了软件定义网络和基础IP网络的互通,托管在系统上的应用程序可以直接访问部署在基础IP网络中的各类应用服务。
图3为根据本发明实施例的Overlay-Underlay网关的原理示意图。如图3所示,Overlay-Underlay网关(IP地址172.28.238.1)存放Overlay网络中的一个子网10.20.0.0/24与Underlay网络中的一个子网172.28.238.0/24之间的一一映射关系。从系统内虚拟机的宿主物理机(IP地址10.20.0.5)发出的数据包(包含源IP地址10.20.0.5,目的IP地址172.23.10.43)经过例如GRE隧道封装协议的封装后被路由至Overlay-Underlay网关(IP地址172.28.238.1),Overlay-Underlay网关解封装GRE数据包,按照映射关系将其中的源IP地址10.20.0.5替换为172.28.238.5,然后将该数据包发往目的应用服务所在目的服务器(IP地址172.23.10.43)。同样,目的服务器(IP地址172.23.10.43)返回数据包(包含源IP地址172.23.10.43,目的IP地址172.28.238.5)时,该数据包被路由至Overlay-Underlay网关,Overlay-Underlay网关按照映射关系将其中的目的IP地址172.28.238.5替换为10.20.0.5,然后将该数据包封装为GRE数据包发往虚拟机的宿主物理机(IP地址10.20.0.5)。为了实现Overlay-Underlay网关的高可用性,可以通过BGP边界网关协议对Overlay-Underlay网关进行ECMP(Equal-cost Multipath Routing,等价多路径)处理,在多台服务器上运行虚拟交换机OVS来实现多个等价Overlay-Underlay网关,如图3所示,两个等价Overlay-Underlay网关的IP地址分别为172.28.244.105和172.28.244.106。
在本发明中,由于容器的部署是动态的,要求托管在系统的应用服务是“无状态”的,即不依赖本地的运行环境、内存信息、本地存储等。
在本发明的容器服务托管系统中,通过将容器运行在虚拟机中并限制虚拟机的优先级,使用调度模块基于服务器资源利用率进行调度,可以在不影响预定应用程序的情况下,最大限度地利用服务器的资源,避免预定应用程序的业务低谷带来的资源浪费;通过分布在多个地域中的服务器、跨地域部署的调度模块、存储模块、统一接入层以及应用程序编程接口等,以及跨地域的调度编排,实现了应用服务跨地域的高可用;统一接入层还可以实现灰度发布与负载均衡;数据模块提供资源消耗情况和运营数据;日志模块提供日志的查询分析以及下载功能;监控模块提供主动拨测监控功能;Overlay-Underlay网关实现了软件定义网络和基础IP网络的互通。
图4为根据本发明实施例的提供容器服务的方法的流程示意图,如图所示,该方法包含以下步骤:
S401:在资源池中的多台服务器(或物理机)上创建用于运行容器的虚拟机,通过例如cgroups的技术进行资源限制,将虚拟机的优先级限制为低于服务器上运行的预定应用程序的优先级,以避免这台虚拟机与该预定应用程序竞争服务器的硬件资源进而影响该预定应用程序的正常使用或运行性能,其中预定应用程序具有业务高峰期和低谷期,其可以直接运行在物理机上,也可以运行在该台物理机上的其他虚拟机中;
S402:接收用户的应用服务创建请求,该应用服务创建请求包含创建容器所需要的所有信息;
S403:响应于接收到应用服务创建请求,在资源池中寻找匹配虚拟机并在匹配虚拟机上创建容器,匹配虚拟机的空闲资源满足待创建容器的资源需求并且匹配虚拟机所属服务器的资源利用率低于阈值;由于一台虚拟机的资源配额可以被多个容器共享,接收到应用服务创建请求后,需要根据待创建容器所需要的资源进行虚拟机匹配,寻找空闲资源满足需求的虚拟机;为了充分利用预定应用程序业务低谷期的服务器资源,还需要进行服务器匹配,寻找资源利用率较低的服务器来创建容器,这样也有助于保证容器内应用程序的运行性能;由于容器中已经打包了应用程序以及所依赖的类库、运行环境,容器创建完成后,容器及其中的应用程序就可以在匹配虚拟机上运行;为提供具有高可用性的容器服务,可以使资源池中的服务器分布在多个地域中,并且对于某个应用服务创建请求,可以在资源池中寻找分布在多个地域中的多台匹配虚拟机来创建多个相同的容器;
S404:存储服务器上的容器部署信息,该信息可用于路由对应用程序的访问请求;
S405:接收对应用程序的访问请求;
S406:响应于接收到对应用程序的访问请求,根据容器部署信息将访问请求路由至运行应用程序的容器。
当匹配虚拟机所在服务器上的预定应用程序迎来业务高峰期时,服务器的资源利用率将高于阈值,响应于此,可以关闭或销毁该台匹配虚拟机上运行的容器,并寻找新的匹配虚拟机来创建容器。
虚拟机上可以部署用于服务器资源管理的Agent程序,并且可以根据Agent程序实时上报的资源信息寻找匹配虚拟机,通过Agent程序在匹配虚拟机上创建容器或者关闭在匹配虚拟机上运行的容器。此外,为创建并运行容器,可以在虚拟机上部署Docker程序,并使容器运行在Docker的bridge网络模式下。
用户可以请求创建多个应用服务,即运行多个应用程序,每个应用程序可以包含多个不同版本,每个版本可以拥有独立的域名,通过域名可以访问到版本的实例,每个应用程序也可以拥有独立的域名。为实现灰度发布,可以为每个应用程序的各个版本设置不同的权重值,当访问该应用程序的域名时,可以按照权重值将访问请求路由至运行该应用程序的各个版本的各个容器。
在提供高可用的容器服务情形中,对于用户的每个应用服务创建请求,已经在多个地域内的多台匹配虚拟机上创建了相同的容器,因此可以将对应用程序的访问请求均匀地路由至运行应用程序的各个容器,以实现负载均衡。
各容器中运行的应用程序之间采用Overlay网络进行通信。然而,由于各虚拟机的IP地址是Overlay网络内部的IP地址,若容器中运行的应用程序与处于Underlay网络中的应用程序之间通信,虚拟机的IP地址将不能被Underlay网络中的应用程序识别。因此,可以存放Overlay网络与Underlay网络之间的映射关系,当在容器中运行的应用程序与处于Underlay网络中的应用程序之间发送数据包时,将该数据包中的Overlay网络IP地址映射为相应的Underlay网络IP地址。如此可以实现软件定义网络和基础IP网络的互通,容器中运行的应用程序可以直接访问部署在基础IP网络中的各类应用服务。
在本发明的提供容器服务的方法中,通过将容器运行在虚拟机中、限制虚拟机的优先级,并基于服务器资源利用率选择用于创建容器的虚拟机,可以在不影响预定应用程序的情况下,最大限度地利用服务器的资源,避免预定应用程序的业务低谷带来的资源浪费;通过分布在多个地域中的服务器以及跨地域选择匹配虚拟机,可以提供高可用的容器服务;可以实现灰度发布与负载均衡;通过存放Overlay网络与Underlay网络之间的映射关系可以实现软件定义网络和基础IP网络的互通。
需要说明的是,在本专利的权利要求和说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
虽然通过参照本发明的某些优选实施方式,已经对本发明进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。

Claims (18)

1.一种容器服务托管系统,其特征在于,所述系统包含:
资源池,所述资源池包含多台服务器,所述服务器上运行有预定应用程序以及用于运行容器的虚拟机,所述虚拟机的优先级低于所述预定应用程序的优先级;
调度模块,所述调度模块响应于接收到的容器创建请求,在所述资源池中寻找匹配虚拟机并在所述匹配虚拟机上创建容器,所述匹配虚拟机的空闲资源满足待创建容器的资源需求并且所述匹配虚拟机所属服务器的资源利用率低于阈值;
存储模块,所述存储模块用于存储所述服务器上的容器部署信息;
统一接入层,所述统一接入层从所述存储模块中获取所述容器部署信息,并将对应用程序的访问请求路由至运行所述应用程序的容器;
应用程序编程接口,所述应用程序编程接口响应于接收到用户的应用服务创建请求,向所述调度模块发送所述容器创建请求。
2.根据权利要求1所述的系统,其特征在于,所述资源池中的所述服务器分布在多个地域中,所述调度模块、所述存储模块、所述统一接入层以及所述应用程序编程接口中的一个或多个为跨地域部署。
3.根据权利要求2所述的系统,其特征在于,所述调度模块响应于接收到的所述容器创建请求,在所述资源池中寻找分布在多个地域中的多台所述匹配虚拟机创建容器。
4.根据权利要求1所述的系统,其特征在于,响应于所述匹配虚拟机所属服务器的资源利用率高于所述阈值,所述调度模块关闭所述匹配虚拟机上运行的容器,并寻找新的所述匹配虚拟机创建容器。
5.根据权利要求1至4中任一项所述的系统,其特征在于,所述虚拟机上部署有用于服务器资源管理的Agent程序,所述调度模块根据所述Agent程序实时上报的资源信息寻找所述匹配虚拟机,并通过所述Agent程序在所述匹配虚拟机上创建容器或者关闭所述匹配虚拟机上运行的容器。
6.根据权利要求1至4中任一项所述的系统,其特征在于,所述虚拟机上部署有Docker程序用于创建并运行容器。
7.根据权利要求1至4中任一项所述的系统,其特征在于,所述应用程序包含具有不同权重值的多个不同版本,所述统一接入层将对所述应用程序的访问请求按所述权重值路由至运行所述应用程序的各个版本的各个容器。
8.根据权利要求3所述的系统,其特征在于,所述统一接入层将对所述应用程序的访问请求均匀地路由至运行所述应用程序的各个容器。
9.根据权利要求1至4中任一项所述的系统,其特征在于,在不同的容器中运行的所述应用程序之间采用Overlay网络进行通信。
10.根据权利要求9所述的系统,其特征在于,所述系统还包括Overlay-Underlay网关,所述Overlay-Underlay网关存放所述Overlay网络与Underlay网络之间的映射关系,当在容器中运行的所述应用程序与处于所述Underlay网络中的所述应用程序之间发送数据包时,所述数据包被路由至所述Overlay-Underlay网关,并且所述Overlay-Underlay网关将所述数据包中的Overlay网络IP地址映射为相应的Underlay网络IP地址。
11.一种提供容器服务的方法,其特征在于,所述方法包含:
在资源池中的多台服务器上创建用于运行容器的虚拟机,所述虚拟机的优先级低于所述服务器上运行的预定应用程序的优先级;
接收用户的应用服务创建请求;
响应于接收到所述应用服务创建请求,在所述资源池中寻找匹配虚拟机并在所述匹配虚拟机上创建容器,所述匹配虚拟机的空闲资源满足待创建容器的资源需求并且所述匹配虚拟机所属服务器的资源利用率低于阈值;
存储所述服务器上的容器部署信息;
接收对应用程序的访问请求;
响应于接收到对所述应用程序的所述访问请求,根据所述容器部署信息将所述访问请求路由至运行所述应用程序的容器。
12.根据权利要求11所述的方法,其特征在于,所述资源池中的所述服务器分布在多个地域中,并且响应于接收到所述应用服务创建请求,在所述资源池中寻找分布在多个地域中的多台所述匹配虚拟机创建容器。
13.根据权利要求11所述的方法,其特征在于,所述方法还包含:响应于所述匹配虚拟机所属服务器的资源利用率高于所述阈值,关闭所述匹配虚拟机上运行的容器,并寻找新的所述匹配虚拟机创建容器。
14.根据权利要求11至13中任一项所述的方法,其特征在于,所述虚拟机上部署有用于服务器资源管理的Agent程序,根据所述Agent程序实时上报的资源信息寻找所述匹配虚拟机,并通过所述Agent程序在所述匹配虚拟机上创建容器或者关闭所述匹配虚拟机上运行的容器。
15.根据权利要求11至13中任一项所述的方法,其特征在于,所述虚拟机上部署有Docker程序,使用所述Docker程序创建并运行容器。
16.根据权利要求11至13中任一项所述的方法,其特征在于,所述应用程序包含具有不同权重值的多个不同版本,所述方法还包含将对所述应用程序的所述访问请求按所述权重值路由至运行所述应用程序的各个版本的各个容器。
17.根据权利要求12所述的方法,其特征在于,所述方法还包含将对所述应用程序的所述访问请求均匀地路由至运行所述应用程序的各个容器。
18.根据权利要求11至13中任一项所述的方法,其特征在于,所述方法还包含存放Overlay网络与Underlay网络之间的映射关系,当在容器中运行的处于所述Overlay网络中的所述应用程序与处于所述Underlay网络中的所述应用程序之间发送数据包时,将所述数据包中的Overlay网络IP地址映射为相应的Underlay网络IP地址。
CN201810715742.0A 2018-06-29 2018-06-29 一种容器服务托管系统及提供容器服务的方法 Active CN109032755B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810715742.0A CN109032755B (zh) 2018-06-29 2018-06-29 一种容器服务托管系统及提供容器服务的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810715742.0A CN109032755B (zh) 2018-06-29 2018-06-29 一种容器服务托管系统及提供容器服务的方法

Publications (2)

Publication Number Publication Date
CN109032755A CN109032755A (zh) 2018-12-18
CN109032755B true CN109032755B (zh) 2020-12-01

Family

ID=65521422

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810715742.0A Active CN109032755B (zh) 2018-06-29 2018-06-29 一种容器服务托管系统及提供容器服务的方法

Country Status (1)

Country Link
CN (1) CN109032755B (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109600380B (zh) * 2018-12-19 2020-11-10 北京创鑫旅程网络技术有限公司 数据传输方法及装置
CN109922074B (zh) * 2019-03-19 2021-06-04 北京百度网讯科技有限公司 接入带外管理网络的方法和装置、管理方法、设备、介质
CN110286996B (zh) * 2019-05-17 2023-08-18 平安科技(深圳)有限公司 容器实例ip切换方法、装置、计算机设备及存储介质
CN110333939B (zh) * 2019-06-17 2023-11-14 腾讯科技(成都)有限公司 任务混合调度方法、装置、调度服务器及资源服务器
CN110288104A (zh) * 2019-07-04 2019-09-27 北京百佑科技有限公司 运维流程系统、运维流程管理的方法及装置
CN110427204B (zh) * 2019-08-08 2023-09-19 浪潮云信息技术股份公司 一种基于容器和服务网格技术的自动化灰度发布方法
CN112416506A (zh) * 2019-08-21 2021-02-26 中移(苏州)软件技术有限公司 一种容器管理方法、设备及计算机存储介质
CN112532758B (zh) 2019-09-19 2023-04-18 贵州白山云科技股份有限公司 一种网络边缘计算系统的创建方法、装置及介质
CN112532674B (zh) * 2019-09-19 2023-07-28 贵州白山云科技股份有限公司 一种网络边缘计算系统的创建方法、装置及介质
CN111240706B (zh) * 2020-01-06 2022-05-31 苏州浪潮智能科技有限公司 一种复制应用的方法及系统
CN111614490B (zh) * 2020-04-29 2022-11-11 北京金山云网络技术有限公司 基于顶级容器集群对托管容器集群的管理系统及方法
CN111611079A (zh) * 2020-05-22 2020-09-01 西安万像电子科技有限公司 调度服务器的方法和装置
CN111796913A (zh) * 2020-07-13 2020-10-20 郑州昂视信息科技有限公司 一种拟态Web服务的轻量级虚拟化实现方法及系统
CN112379971B (zh) * 2020-11-17 2021-09-14 深圳前海微众银行股份有限公司 应用容器管理方法、装置及设备
CN113778504B (zh) * 2021-02-26 2024-05-17 西安京迅递供应链科技有限公司 一种发布方法、发布系统及路由装置
CN113067803B (zh) * 2021-03-12 2023-05-05 北京金山云网络技术有限公司 一种资源隔离系统、请求处理方法及请求处理装置
CN114995957A (zh) * 2022-06-24 2022-09-02 中国电信股份有限公司 容器组部署方法、装置、电子设备及计算机可读存储介质

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102681899B (zh) * 2011-03-14 2015-06-10 金剑 云计算服务平台的虚拟计算资源动态管理方法
US9032399B1 (en) * 2012-06-28 2015-05-12 Emc Corporation Measurement of input/output scheduling characteristics in distributed virtual infrastructure
CN104243560A (zh) * 2014-09-02 2014-12-24 赵军富 移动设备上的web服务系统
CN104158826B (zh) * 2014-09-04 2017-12-05 中电长城网际系统应用有限公司 一种面向虚拟机迁移的调度方法及其系统
CN104539708B (zh) * 2014-12-29 2018-01-23 杭州华为数字技术有限公司 一种云平台资源的缩容方法、装置与系统
CN105068874B (zh) * 2015-08-12 2018-11-30 国家电网公司 一种结合Docker技术的资源按需动态分配方法
CN106453492B (zh) * 2016-08-30 2019-05-14 浙江大学 基于模糊模式识别的Docker容器云平台下的容器调度方法
CN108205460A (zh) * 2016-12-16 2018-06-26 北京国双科技有限公司 宿主机可用资源的生成方法和装置
CN107566493B (zh) * 2017-09-06 2020-05-22 中国科学院信息工程研究所 一种面向复杂用户需求的代理节点创建方法、代理服务方法和系统

Also Published As

Publication number Publication date
CN109032755A (zh) 2018-12-18

Similar Documents

Publication Publication Date Title
CN109032755B (zh) 一种容器服务托管系统及提供容器服务的方法
CN107947961B (zh) 基于SDN的Kubernetes网络管理系统与方法
CN112532675B (zh) 一种网络边缘计算系统的创建方法、装置及介质
US8909699B2 (en) Using virtual domain name service (DNS) zones for enterprise content delivery
CN103155524B (zh) 用于在多核系统中的多个核之间共享iip地址的系统和方法
CN106464528B (zh) 用于通信网络中的无接触编配的方法、介质、及装置
US20160197834A1 (en) Architecture and method for traffic engineering between diverse cloud providers
US20160197835A1 (en) Architecture and method for virtualization of cloud networking components
US20160198003A1 (en) Architecture and method for sharing dedicated public cloud connectivity
CN110366720A (zh) 在绕过容器Linux网络堆栈的同时运行Docker容器内的用户空间网络堆栈的系统和方法
US11368407B2 (en) Failover management using availability groups
US20150195347A1 (en) Architecture and method for cloud provider selection and projection
CN107079060A (zh) 用于运营商级nat优化的系统和方法
CN107005482A (zh) 为软件定义网络,存储和计算执行操作的编译器和方法
US20150193466A1 (en) Architecture and method for cloud provider selection and projection
CN111970337B (zh) 跨云环境下的p2p网络通信构建方法、系统、介质及终端
CN113810230B (zh) 对容器集群中的容器进行网络配置的方法、装置及系统
US11671401B2 (en) Providing persistent external internet protocol address for extra-cluster services
CN104365058A (zh) 用于在多核和集群系统中高速缓存snmp数据的系统和方法
US10673694B2 (en) Private network mirroring
CN114237812A (zh) 容器网络管理系统
US20150193246A1 (en) Apparatus and method for data center virtualization
CN115086330A (zh) 跨集群负载均衡系统
WO2016109845A1 (en) Architecture and method for traffic engineering between diverse cloud providers
CN113067824B (zh) 数据调度方法、系统、虚拟主机及计算机可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant