CN109804352B - 受管理的容器实例 - Google Patents
受管理的容器实例 Download PDFInfo
- Publication number
- CN109804352B CN109804352B CN201780060731.7A CN201780060731A CN109804352B CN 109804352 B CN109804352 B CN 109804352B CN 201780060731 A CN201780060731 A CN 201780060731A CN 109804352 B CN109804352 B CN 109804352B
- Authority
- CN
- China
- Prior art keywords
- instance
- container
- type
- task
- instances
- 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
Links
- 238000000034 method Methods 0.000 claims abstract description 57
- 230000015654 memory Effects 0.000 claims description 55
- 238000004891 communication Methods 0.000 claims description 20
- 238000012545 processing Methods 0.000 claims description 14
- 230000036541 health Effects 0.000 claims description 3
- 238000007726 management method Methods 0.000 description 155
- 230000008569 process Effects 0.000 description 30
- 239000003795 chemical substances by application Substances 0.000 description 16
- 230000006870 function Effects 0.000 description 12
- 238000002955 isolation Methods 0.000 description 8
- 238000013500 data storage Methods 0.000 description 7
- 230000004044 response Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 5
- 230000000116 mitigating effect Effects 0.000 description 5
- 239000002699 waste material Substances 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000011156 evaluation Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000003936 working memory Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 239000010979 ruby Substances 0.000 description 1
- 229910001750 ruby Inorganic materials 0.000 description 1
- 230000035807 sensation Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
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
相关申请的交叉引用
本申请要求2016年9月29日提交的标题为“受管理容器实例(MANAGED CONTAINERINSTANCES)”的第15/280,807号美国专利申请的优先权,所述美国专利申请的内容以全文引用的方式并入本文中。
背景技术
现代计算机系统时常被实现为在一个或多个主机计算机系统环境内共同操作的计算机系统的分布式集合。作为此实现方式的一部分,经常使用软件容器,软件容器是用于应用程序的轻量级虚拟化执行环境。容器允许跨服务器或虚拟机集群轻松运行和管理应用程序。打包为容器的应用程序可以在各种环境中部署,例如在本地和计算服务内。计算服务可以将虚拟机供应为代表客户托管容器,从而消除了安装、操作和扩展集群管理基础架构的需要。
附图说明
将参考附图描述各种技术,其中:
图1示出使用容器管理服务来管理容器实例的示例环境;
图2示出使用容器管理服务来实例化和供应容器实例的示例环境;
图3示出使用容器管理服务选择和实例化容器实例的示例过程;
图4示出容器实例彼此隔离的示例环境;
图5示出某一容器实例上的容器彼此隔离的示例环境;
图6示出实例化和供应容器实例的示例过程;
图7示出选择合适的容器实例的示例过程;
图8示出使用容器管理服务来实例化容器实例内的容器的示例环境;
图9示出使用容器管理服务来实例化容器实例内的容器的示例环境;
图10示出使用容器实例管理器实例化容器实例的示例过程;以及
图11示出可以实现各种实施例的环境。
具体实施方式
以下公开内容描述了使用容器管理服务来管理容器实例(即,用于托管容器的虚拟机实例)的技术。提供对计算服务的访问的计算资源服务提供商的客户可以描述要使用软件容器集执行的任务。这些软件容器,也简称为“容器”,是用于应用程序的轻量级虚拟化执行环境,将应用程序封装在自身的完整文件系统中,所述文件系统含有所述应用程序所需的一切,包含软件、文件和系统库。容器管理应用程序又分配操作系统的资源来运行容器。
如上所述,可以用一个或多个容器来指定任务,所述容器执行应用程序以执行所述任务。例如,计算资源服务提供商的客户可以通过在一个容器中运行的内容管理应用程序和在另一容器中运行的数据库应用程序来指定任务。这些应用程序中的每一个协同执行,以便例如内容管理应用程序访问数据库,确定和定位所需的资源。任务在执行时启动安装了应用程序的两个容器,并使用容器来例如更新网页(即,内容管理应用程序使用数据库检查更新的内容,如果找到新内容,则更新网页)。
当指定任务时,计算资源服务提供商的客户指定用于执行任务的多个参数,包含所需的中央处理单元(“CPU”)的数量、所需的每个CPU的量、所需的内存量,以及网络参数。计算资源服务提供商的客户还可以指定应执行任务的位置(或“区”),请求与任务相关联的附加资源,例如临时存储、日志记录或安全参数。
当计算资源服务提供商的客户请求执行任务时,向所述客户提供计算机系统实例(例如,虚拟机),其中可以实例化和执行容器。在本公开中描述了用于管理这些计算机系统实例以提高提供计算机系统实例的效率的技术。
当容器管理服务从计算资源服务提供商的客户接收任务定义时,容器管理服务分析任务定义,以确定用于执行任务的最佳容器实例。根据任务定义中指定的参数,从容器实例集中选择具有足够功能的容器实例。因此,例如,如果上文描述的通过内容管理容器和数据库容器进行的网页更新任务定义包含请求如下参数:两个CPU、四千兆字节(“GB”)的内存、网络连接性(即,连接到网络的能力)以及具有最小带宽的网络连接,则容器管理服务可以选择具有至少这些功能的容器实例来执行所述任务。
尽管可以根据需要创建具有功能集的实例(即,“在运行中”),但在本公开中描述的技术中,容器管理服务改为维护运行容器实例池,所述容器实例可以分配给客户来执行任务,然后返回所述池中。每个不同类型的容器实例(即,具有功能集的容器实例)可以具有已经实例化并运行的多个实例,并且当接收到任务定义时,基于任务的参数从所述池中选择运行实例。
在任何时候,特定类型的多个容器实例可能正在池中运行并可用。例如,容器管理服务可以有五种不同类型的容器实例,标记为“A”、“B”、“C”、“D”和“E”,其中“A”具有最少的功能且“E”具有最多的功能。如果接收到可以在容器实例“B”上运行的任务定义,则可以从池中选择类型为“B”的容器实例,并提供所述容器实例为计算资源服务提供商的客户运行任务。应注意,任务可能需要多个实例,对于这样的任务,可以从池中选择多种不同类型的多个容器实例。
容器实例池最初含有每种类型的多个实例。然而,当容器实例被分配给计算资源服务提供商的客户时,一种或多种类型的实例可能变得稀缺或不可用。例如,如果有100个类型“B”实例,且95个正在使用中,则需要10个类型“B”实例的任务可能失败。为了避免任务失败,容器管理服务可能会查找等效的实例类型(即,具有相同的CPU、网络和内存参数,但可能具有与实例相关联的附加资源),并提供替代类型的实例。类似地,容器管理服务可能寻找更好的实例类型(即,具有超出参数的功能的实例类型,例如,在所描述的示例中为类型“C”、类型“D”或类型“E”的容器实例)。如果实例类型的性能特征集满足用于在所述实例类型的实例上实例化容器的参数集,则可以选择所述实例类型,其中所述性能特征包含但不限于内存、CPU和网络带宽。另外,当特定类型的实例变得稀缺(或不可用)时,容器管理服务可以通过实例化实例池中的附加实例来缓解这种稀缺性。
在之前和之后的描述中,描述了各种技术。出于解释的目的,阐述了具体配置和细节以便提供对实现这些技术的可能方式的透彻理解。然而,还应理解,下文描述的技术可以在没有所述具体细节的情况下以不同的配置实践。此外,可以省略或简化公知的特征以避免模糊所描述的技术。
图1示出根据实施例的使用容器管理服务来管理容器实例的示例环境100。在图1所示的示例中,在容器管理服务104处接收任务定义102。在一个实施例中,任务定义102是指定链接的容器集(即,当在主机计算系统上运行时,彼此相关联的容器集)的文件,所述链接的容器被指定为以群组开始。任务定义102可以指定与任务相关联的容器能够在单个物理机器上共享的磁盘和网络位置。接着任务定义102可用于启动与任务相关联的容器。任务定义102可以定义和链接分布到多个物理主机的容器。一个任务定义102可以含有并调度许多任务。在一些示例中,“任务”可以指由任务定义102指定的资源的实例化,并且可以包含一个或多个容器。可以通过将新任务定义应用于任务来修改任务。
如上所述,任务定义102指定实例化与任务相关联的容器所需的信息。任务定义102指定实例化与任务相关联的容器所需的信息,例如,如下文所描述的资源参数集(例如,CPU规范、内存规范、网络规范和/或硬件规范)。任务定义102还可以指定将与任务相关联的容器实例化为容器图像(即,先前实例化容器的图像或快照)或实例化为图像规范(即,可以用于实例化图像的图像描述)所需的信息。图像规范和/或图像可以由计算资源服务提供商的客户指定,由计算资源服务提供商指定,或由某个其它实体(例如,第三方)指定。任务定义102可以实例化提供实例和/或任务的隔离的呈集群或群组的容器。可以通过如本文中所描述的应用程序编程接口(“API”)调用来管理容器和隔离。
任务定义的示例可以为:
示例任务定义指定名为“db”的第一任务具有位于路径“postgresql”的软件图像。第一任务由容器管理服务104分配1001GB内存的处理份额。类似地,任务定义还指定名为“cms”的第二任务具有位于路径“content_manager”的软件图像。第二任务也由容器管理服务104分配1001GB内存的处理份额。任务定义指出允许第二个任务(“cms”)链接到第一任务(“db”)。注意,尽管在此示例中使用的一些单元是以固定数给出的,例如作为固定数的中央处理单元份额给出的处理能力,但是设想可以替代地使用其它单元和其它类型的值(例如,总处理能力的百分比、总内存的百分比)以允许动态资源分配。
容器管理服务104可以是计算资源的集合,其通过提供和管理可以执行任务和相关联容器的容器实例来共同操作以处理任务定义从而执行如本文中所描述的任务。被配置成处理任务定义并提供和管理可以执行任务和相关联容器的容器实例的计算资源包括以下中的至少一个:计算机系统(包含处理器和存储器的计算机系统)、网络、存储装置、可执行码、服务、流程、模块或应用程序。被配置成处理任务定义并提供和管理可以执行任务和相关联容器的容器实例的计算资源可以包含在由例如计算资源服务提供商托管的共享硬件上实现的虚拟系统。容器管理服务104可以实现为单个系统或者可以实现为分布式系统,其中多个实例共同操作以处理任务定义并提供和管理可以执行任务和相关联容器的容器实例。容器管理服务104可以使用计算资源(例如,其它服务)来操作,所述计算资源使得容器管理服务104能够接收任务定义、实例化容器实例、与容器实例通信,和/或以其它方式管理容器实例。
容器管理服务104可以是由计算资源服务提供商提供以允许计算资源服务提供商的客户使用如下文中描述的容器实例上的容器来执行任务的服务。计算资源服务提供商可以是类似于结合图2描述的计算资源服务提供商210的计算资源服务提供商,并且可以单独地或作为分布式计算机系统的服务组合向其客户提供一个或多个计算资源服务。计算资源服务提供商的一个或多个计算资源服务可以通过网络访问,并且可以包含服务,例如虚拟计算机系统服务、块级数据存储服务、加密服务、按需数据存储服务、通知服务、认证服务、策略管理服务、任务服务和/或其它此类服务。并非所描述的所有实施例都包含所描述的所有服务,并且除了明确描述的服务之外或作为其替代,可以提供附加服务。
作为一个示例,计算资源服务提供商可以是提供例如数据存储服务、虚拟计算机系统服务和/或网络服务等计算资源的实体。计算资源服务提供商的客户可以通过接口与一个或多个服务通信,所述接口可以是网络服务接口或任何其它类型的客户接口。除了公共接口之外或者作为公共接口的替代,由计算资源服务提供商提供的每个服务可以具有其自身的接口,且服务的子集可以具有对应的各个接口。
在一些示例中,容器实例(这里也称为“软件容器实例”)可以指被配置成启动和运行软件容器的计算机系统实例(虚拟或非虚拟,例如运行操作系统的物理计算机系统)。因此,容器实例可以被配置成根据客户提供的任务定义在容器中运行任务。一个或多个容器实例可以包括隔离的容器集群或群组。在一些示例中,“集群”可以指已经注册到集群(即,与集群相关联)的一个或多个容器实例的集。因此,容器实例可以是注册到集群的许多不同容器实例中的一个,并且集群的其它容器实例可以被配置成运行相同或不同类型的容器。集群内的容器实例可以具有不同的实例类型,或具有相同的实例类型。计算资源服务提供商的客户可以具有超过一个集群。因此,客户可以启动一个或多个集群,然后通过应用程序编程接口调用来管理每个集群内的容器的用户和应用程序隔离。
容器(也称为“软件容器”)可以是在包含程序、数据和系统库的计算机系统实例下运行的轻量级虚拟机实例。当容器运行(或执行)时,运行程序(即,进程)与在同一计算机系统实例中运行的其它进程隔离。因此,容器可以各自在容器实例的操作系统上运行(例如,使用由操作系统分配的内存、CPU和存储装置),并且彼此隔离地执行(例如,每个容器可以具有操作系统的文件系统的隔离视图)。每个容器可以具有其自身的命名空间,并且通过仅访问容器命名空间内可用的资源来隔离容器内运行的应用程序。因此,容器可以是在其自己的命名空间内运行一个或多个单个应用程序的有效方式。容器封装系统允许一个或多个容器在单个操作实例内运行,而没有与启动和维护用于运行单独的用户空间实例的虚拟机相关联的开销。
可以启动容器以仅具有来自分配给容器实例的资源的指定资源;也就是说,可以启动容器以具有一定量的内存并且不使用超过指定量的处理能力。例如,任务定义102可以指定两个CPU,但是用于应用程序的容器不能超过这两个CPU的50%。可以在任务定义102中指定容器的资源分配。多个容器可以同时在单个主机计算机或主机容器实例上运行,并且可以使用此系统在容器之间有效地分配主机的资源。在一个实施例中,主机支持仅从一个客户运行容器实例中的容器(这里称为“单租户”环境)。在其它实施例中,单个主机可以允许多个客户在主机上运行容器实例(这里称为“多租户”环境)。在后一种情况下,容器服务可以提供安全性,以确保客户不能访问其它人的容器、集群或容器实例。
不同类型的任务可以具有不同的资源参数并且可以具有不同的寿命。因此,容器可以被动态调度为由独立于容器实例的底层操作系统的调度程序服务运行,因此,容器实例的底层操作系统可以是非常基本的。替代地,容器可以被调度为由安装在容器实例上的调度程序运行。
当容器管理服务104接收到任务定义102时,容器管理服务104的实例选择器程序118接着可以通过从数据库中选择一个数据库来从实例池108中的运行实例中选择实例106。实例池108含有多个运行实例(这里也称为“运行实例”),其可以具有多个不同的实例类型。实例类型是按实例提供的功能类型。因此,例如,第一实例类型可以是具有两个CPU、4GB内存和千兆位网络接口的类型“A”。实例池108可以具有数十、数百或数千个已经运行且可用的类型“A”的运行实例。第二实例类型可以是具有四个CPU、8GB内存和千兆位网络接口的类型“B”。实例池108可以具有数十、数百或数千个已经运行且可用的类型“B”的运行实例。
容器管理服务104的实例选择器程序118将从实例池108的可用实例110中选择实例106。可用实例110是可用于为计算资源服务提供商的客户托管容器的实例。可用实例110是其上没有运行容器的指定类型的实例,其上没有运行来自其它客户的容器(在单租户环境中)并且具有足够资源可用于托管用于任务的容器的实例,或者其上可能有运行来自其它客户的容器(在多租户环境中)但是有足够资源可用于托管用于任务的容器的实例。当实例被分配给客户时,可以从实例池108中的可用实例110中移除所述实例。随着客户在例如实例终止时释放实例,可以将实例返回到实例池108中的可用实例110。如上所述,部分分配的实例也可以在可用实例110中。
容器管理服务104将基于任务定义102从实例池108的可用实例110中选择实例106,如本文所述。例如,任务定义102可以指定参数集,所述参数集定义可以用于实例化实例上的容器并执行在任务定义中指定的任务的资源(例如,CPU的数量、内存量、网络带宽量、专用硬件的存在等)。
在一个实施例中,容器管理服务104可以分析任务定义,并且作为此分析的结果,可以确定定义资源的参数集将导致选择的实例类型对于实例化容器供应不足。例如,任务定义102可能为任务指定不足的内存量或者不为任务指定网络接口。在此类实施例中,容器管理服务104可以基于第二参数集从实例池108的可用实例110中选择实例106,其中第二参数集中的一个或多个参数与任务定义102的一个或多个参数不同(例如,将导致选择具有比在任务定义102中指定的实例类型更多资源和/或功能的改进的实例类型)。
例如,任务定义102可能指定任务需要2GB内存,而容器管理服务104可以分析任务并确定任务需要4GB内存。在此实例中,容器管理服务104可以基于包含任务描述中的参数集的第二参数集从实例池108的可用实例110中选择实例106,但是将2GB参数替换为4GB参数。可能与任务定义102中指定的参数不同的参数的其它示例包含但不限于附加CPU、不同CPU类型、更高CPU百分比、更多网络带宽、更低延迟、附加存储装置、不同存储装置类型,或专用硬件。
在一个实施例中,容器管理服务104可以分析任务定义,并且作为此分析的结果,可以确定定义资源的参数集将导致选择的实例类型对实例化容器供应过度。在此类实施例中,容器管理服务104可以基于第二参数集从实例池108的可用实例110中选择实例106,其中第二参数集中的一个或多个参数与任务定义102的一个或多个参数不同(例如,将导致选择具有比在任务定义102中指定的实例类型更少资源和/或功能的实例类型)。例如,任务定义102可能指定任务需要4GB内存,而容器管理服务104可以分析任务并确定任务需要2GB内存。在此实例中,容器管理服务104可以基于包含任务描述中的参数集的第二参数集从实例池108的可用实例110中选择实例106,但是将4GB参数替换为2GB参数。在此实施例中也可以使用上文描述的示例参数(例如,更少CPU、不同CPU类型、更低CPU百分比、更少网络带宽、更高延迟、更少存储装置、不同存储装置类型,或移除专用硬件)。
一旦识别出所选实例,容器管理服务104就可以将实例分配112给客户,并且基于任务定义102,容器管理服务的任务启动器组件120可以在所分配的实例114上启动任务116(即,启动用于任务的容器),如本文中所描述。
图2示出如结合图1所描述且根据实施例的使用容器管理服务来实例化和供应容器实例的示例环境200。在图2所示的示例环境200中,用户202可以使用客户端计算装置204连接206到由计算资源服务提供商210提供的各种服务。用户202可以使用客户端计算装置204通过网络208(例如本文中描述的那些网络)连接206到计算资源服务提供商210。计算资源服务提供商210可以提供分布式、虚拟化和/或数据中心环境,在所述环境内可以执行一个或多个应用程序、进程、服务、虚拟机和/或其它此类计算机系统实体。用户202可以是人,或者可以是在一个或多个远程计算机系统上运行的进程,或者可以是某个其它计算机系统实体、用户或进程。
从用户202到计算资源服务提供商210的命令可以源自外部计算机系统或源自计算资源服务提供商环境内。连接206到计算资源服务提供商210的命令可以发送到计算资源服务提供商210和/或在其中的环境中操作的服务,而不需要用户202的直接干预(即,连接206到计算资源服务提供商210的命令可以响应于一个或多个事件自动地生成)。用户202可以是与计算资源服务提供商210的客户相关联的特许用户。用户202还可以是与计算资源服务提供商210相关联的特许用户。
计算资源服务提供商210可以提供对一个或多个主机的访问,可以提供对可以在其上操作的一个或多个虚拟机实例的访问,或者可以提供对其中的环境中的一个或多个服务的访问。由计算资源服务提供商210提供的一个或多个服务还可以实现为和/或可以利用一个或多个虚拟机实例,因为其可以在计算资源服务提供商210环境内操作的主机上操作。例如,计算资源服务提供商210可以向用户提供各种服务,包含但不限于用户202,并且用户可以通过例如网络服务接口之类的接口或任何其它类型的接口与计算资源服务提供商210通信。虽然图2所示的示例环境示出了到计算资源服务提供商210的单个连接或接口,但在其中的环境中操作的每个服务都可以具有其自身的接口,并且通常,除了单个接口以外或作为替代,服务的子集还可以具有对应的接口。
某种类型的服务在计算资源服务提供商210的环境内操作的示例中,虚拟计算机系统服务可以是被配置成代表例如用户202的客户实例化虚拟机实例的计算资源的集合。客户可以与虚拟计算机系统服务交互(通过适当配置和认证的API请求),以供应和操作在由计算资源服务提供商210托管和操作的物理计算装置上实例化的虚拟机实例。虚拟计算机系统服务可以通过实例化实例、配置实例以及提供资源运行实例来供应实例。虚拟计算机系统服务还可以被配置成管理虚拟机实例,以例如实例化虚拟机实例和/或管理虚拟机实例的迁移。虚拟机实例可以用于各种目的,例如用作支持网站的服务器,操作商业应用程序,或者通常用作客户的计算能力。虚拟机实例的其它应用程序可以是支持数据库应用程序、电子商务应用程序、商业应用程序和/或其它应用程序。
如上所述,计算资源服务提供商210的容器管理服务212可以首先接收任务定义214,在图2所示的示例中,用户202使用通过网络208连接206到计算资源服务提供商210的客户端计算装置204提供所述任务定义。如本文中所描述,容器管理服务212可以首先分析任务定义216,并且作为分析的结果,可以至少部分地基于任务定义214选择实例218用来执行任务。容器管理服务212所选择的实例是在实例池224中的实例。实例池224含有多种不同实例类型的多个可用实例226,如上所述。
然后,容器管理服务212将所选实例分配给任务(在此也称为分配给用户202)。然后,容器管理服务212使用所分配的实例228来启动任务220(即,在所分配的实例228上实例化任务定义214的容器)。最后,容器管理服务212可以向用户202通知222任务的状态,包含在状态改变时更新用户202。在一个实施例中,通知包含使用例如统一资源定位符(“URI”)和/或网络接口对任务和/或容器的访问。
图3示出如结合图1所描述且根据实施例的使用容器管理服务来选择和实例化容器实例的示例过程300。容器管理服务,例如结合图1描述的容器管理服务104,可以执行图3所示的示例过程300。如上所述,容器管理服务可以首先接收302任务定义,然后可以确定304执行任务所需的实例的类型和数量。
容器管理服务可以通过例如读取任务定义的要求、搜索满足那些要求的实例类型、以及选择匹配所述实例类型的实例来确定304执行任务所需的实例的类型和数量。如果超过一个实例类型匹配要求,则容器管理服务可以基于实例类型的一个或多个实例排序标准来选择实例类型,例如,最便宜的实例类型或者具有最低功能但仍然满足要求的实例类型,或者根据某些其它排序标准来选择实例类型,例如指示偏好的客户简档。容器管理服务还可以通过从例如所有实例类型开始按需要过滤可用实例类型并消除那些不满足要求的类型来确定304执行任务所需的实例的类型和数量。然后,可以根据一个或多个实例排名标准对满足要求的实例类型进行排序。
例如,可以使用最佳拟合算法将任务定义的特征与实例类型的特征相匹配。可以调整算法,使得容器管理服务尝试识别满足任务定义的所有要求的容器实例(即,具有足够的内存、存储装置、网络、CPU等)。在一个实施例中,还可以计算过量资源的量并用于选择实例。例如,容器管理服务可以量化实例类型的每种功能以及在任务定义中显式或隐式定义的每种功能,可以计算两者之间的差异,并且可以计算区域。较小的区域意味着实例类型与任务要求之间更好的匹配。然后可以对容器管理服务进行编程以选择满足要求并且是最接近匹配的实例类型,或者在其它配置中,可以对容器管理服务进行编程以选择具有一种或多种类型的功能然后是最合适的实例类型。机器学习技术、来自客户的反馈或服务提供商的实验可用于随时间调整选择过程,以调整如何对某些类别的任务执行选择操作。例如,如果可以通过相同或类似任务的运行从任务定义推断出任务类型,则可以对某些类别的实例类型进行加权。
如上所述,可以根据与任务定义相关联的实例的性能规范集确定执行任务所需的实例的类型和数量。如上所述,可以通过分析从任务定义获得的参数集来获得实例的性能规范集。例如,任务定义可以指定八个容器,并且每个容器可能需要两个CPU的50%和2GB内存来执行。根据任务的此参数集,任务定义需要能够提供八个CPU和16GB内存的实例来实例化八个容器。此资源集可以通过具有至少八个CPU和16GB内存的单个实例提供,或通过具有至少四个CPU和8GB内存的两个实例提供,或通过具有至少两个CPU和4GB内存的四个实例提供,或通过实例的组合(例如,具有两个CPU和8GB内存的一个实例和具有两个CPU和4GB内存的两个实例)提供。
实例的性能规范集可以包含实例的CPU规范(例如,所述实例要求两个CPU的50%来操作),这可以通过分析任务定义来获得。实例的性能规范集也可以包含实例的内存规范(例如,所述实例要求2GB的内存来执行),这可以通过分析任务定义来获得。实例的性能规范集也可以包含实例的网络带宽规范(例如,所述实例要求千兆位网络来执行),这可以通过分析任务定义来获得。
实例的性能规范集也可以包含实例的一个或多个要求,其可以指定实例的一个或多个附加硬件功能,包含但不限于附加硬件。例如,实例的性能规范集可以包含作为现场可编程门阵列要求的硬件要求。现场可编程门阵列要求是这样的硬件要求:现场可编程门阵列是实例的硬件规范的一部分,以及现场可编程门阵列可用于在用于任务的实例上实例化的容器。在另一实例中,实例的性能规范集可以包含作为专用集成电路要求的硬件要求,指定专用集成电路可用于在用于任务的实例上实例化的容器。在又一实例中,实例的性能规范集可以包含作为硬件安全模块要求、或图形处理单元要求、或存储器要求(例如,闪存)的硬件要求,或针对某一其它类型的专用硬件的硬件要求。可以设想,本文中描述的实例的要求示例仅仅是说明性示例,并且因此,对于实例的其它类型的要求可以被视为在本公开的范围内。
接下来,容器管理服务可以从实例池请求306所述类型和数量的实例。如果容器管理服务确定308所请求实例可用,则容器管理服务供应316所述实例,在所述实例上实例化318任务,在所述实例上实例化320容器,并向客户提供322任务访问,所有这些都在本文中详细描述。
如果容器管理服务未确定308所请求实例可用,则容器管理服务可以尝试通过例如迭代附加实例类型并确定那些附加实例类型以确定附加实例类型的实例是否具有足够的资源来选择310替代实例类型。例如,如果替代实例类型具有足够的资源来运行与任务相关联的容器,但是替代实例类型的配置不同(即,如果替代实例类型的性能特征集满足针对实例化容器指定的参数集),则可以选择所述替代实例类型。替代实例类型的一个示例是比原始所请求实例类型具有更多功能(例如,更多内存、更多或更有效的CPU、更多网络带宽,或附加资源)的实例。如果容器管理服务确定312替代实例类型可用,则容器管理服务供应316所述实例,在所述实例上实例化318任务,在所述实例上实例化320容器,并向客户提供322任务访问,所有这些都在本文中详细描述。相反,如果容器管理服务未确定312替代实例类型可用,则容器管理服务可以执行314与不可用性相关的一个或多个缓解操作,包含但不限于报告没有可用的实例来运行任务。在一个实施例中,通过实例化所请求类型的附加实例,将所述附加实例添加到实例池,并使用所述新实例化的附加实例来执行任务,容器管理服务可以执行与不可用性相关的一个或多个缓解操作。
图4示出如结合图1所描述且根据实施例的容器实例彼此隔离的示例环境400。在图4所示的示例中,如上所述,计算资源服务提供商的客户402已发送任务定义,并且已提供运行由任务定义指定的任务的若干实例。如上所述,这四个实例位于实例群组406中,所述实例群组是实例的群组或集群,提供实例的隔离。实例群组406的实例404具有到任务410的网络接口408。可以在供应实例404以执行任务410时(即,当服务供应实例时)建立网络接口408。网络接口408可以由客户402用来与任务通信(例如,以监控任务的状态和/或接收结果),在任务与计算资源服务提供商的一个或多个服务之间进行通信,或者将实例连接到客户的虚拟网络。在一个实施例中,客户的虚拟网络是虚拟专用网络,由计算资源服务提供商提供给客户,并且与计算资源服务提供商的其它客户的虚拟专用网络隔离。任务410含有一个或多个容器412,当在实例404上启动任务410时,所述一个或多个容器与任务410一起实例化,如上所述。
在图4所示的示例中,实例404具有在其上运行的代理414,所述代理例如将任务410的状态报告给容器管理服务。容器管理服务416还可以使用代理414来监控实例404以收集实例的一个或多个健康度量(即,确定潜在的硬件和/或软件问题),更新实例404或在其上运行的软件,与客户402通信,或者执行和/或提供与实例的功能相关的其它服务。在一个实施例中,代理414可以监控实例和/或在其上运行的任务,以确定与运行任务相关联的成本。例如,代理414可以监控实例的CPU和内存,并在任务执行过程中确定使用了哪些资源以及使用了多少所述资源。例如,代理414可以监控CPU和内存,以确定任务的资源使用度量(例如,任务使用了多少内存和CPU)。然后,可以使用这些资源使用度量来确定与容器或任务相关联的资源成本。接着可以基于用于任务的实际资源将此资源成本分配给客户。因此,与需要较少CPU时间或较少内存的任务相比,需要更多CPU时间或更多内存的任务可能花费更少的成本。
客户还可以在任务定义中指定定价模型,以便例如客户可以指定在某个时间完成、“不超过”值、任务的优先级(例如,较低优先级的任务可能在非工作时间执行)等等。例如,由计算资源服务提供商环境提供的附加资源可能具有与资源相关联的成本(例如,CPU时间的每秒成本、所使用的内存的每兆字节(“MB”)成本或使用网络带宽的成本)。计算资源服务提供商可以监控客户的此类资源使用,并且还可以监控提供给客户的资源,以通过例如使用实例上的代理来监控资源使用而实例化容器实例以托管容器。客户可以在任务定义中指定定价模型,所述定价模型指定可以使用任何资源来实例化容器,前提是这些资源不超过固定成本或每小时成本,或者是根据某些其它成本规范。类似地,客户可以指定可以延迟任务以例如在接下来的几天内运行,以利用在非高峰时段可能存在的用于计算资源服务提供商的较低资源成本。如上所述,任务410还可以指定对资源的请求,和/或向在计算资源服务提供商环境内操作的其它服务418提供资源。例如,任务可以通过网络接口408与数据库服务或块存储服务或一些其它服务通信,并且从所述其它服务418请求资源。这些其它服务418和/或这些其它服务418的成本限制也可以在用于任务410的任务定义中指定。
在图4所示的示例中,实例群组406中的实例彼此隔离。因此,实例404与实例群组中的另一实例422没有通信420,即使所述实例422也由客户402关联。类似地,实例422与实例群组406中的实例426没有通信428,实例426与实例404也没有任何通信424。每个实例如同在实例群组406中单独操作一样操作,仅维护任务与其它服务418之间的通信、代理414与容器管理服务416之间的通信,以及任务410与使用网络接口408的客户402之间的通信。
图5示出如结合图1所描述且根据实施例的容器实例上的容器彼此隔离的示例环境500。在图5所示的示例中,实例内的每个任务与其它任务隔离。实例502具有任务504和任务510。任务504包含容器516,如上所述。尽管图5中未示出,但是任务504可以通过网络接口508与其它服务通信,如上所述。使用网络接口508向客户506提供对任务504的访问,都如上所述。类似地,任务510包含容器518,并且也可以与其它服务通信,如上所述。也都如上所述,使用网络接口512向客户514提供对任务510的访问。
尽管任务504和任务510均在实例502上运行,并且尽管都由代理522监控,所述代理向容器管理服务524提供关于任务和实例502的状态更新,但是任务504与任务510不通信526。任务504与任务510之间的这种隔离(即,没有通信)即使在客户506和客户514是同一实体的单个租户环境中也可以存在。在一个实施例中,容器管理服务524强制执行任务之间的这种隔离,并且仅允许容器之间的通信。任务之间的这种隔离可以由容器管理服务524强制执行,以防止任务篡改或以其它方式改变其它任务。在另一实施例中,容器管理服务524强制执行容器之间的隔离,以便例如防止容器篡改或改变其它容器。
图6示出如结合图1所描述且根据实施例的实例化和供应容器实例的示例过程600。容器管理服务,例如结合图1描述的容器管理服务104,可以执行图6所示的示例过程600。如上所述,容器管理服务可以首先从实例池选择602实例。接着,容器管理服务可以将实例分配604给客户(即,可以根据任务定义将实例分配给客户以执行任务)。接下来,容器管理服务可以创建606任务框架。如本文中所使用,“任务框架”是任务(以及相关联的容器)的执行环境。任务框架维护与任务相关联的网络接口,维护与任务相关联的任何其它资源,在实例化任务中的容器时跟踪所述容器,维护容器之间的通信,维护与上述服务的通信,以及连接实例代理来监控任务。
然后,容器管理服务可以通过例如实例化网络接口并分配与所述网络接口相关联的资源(例如,硬件接口和/或硬件接口的虚拟化、地址、软件和/或与网络接口相关联的其它资源)来将网络接口附接608到任务框架。网络接口可以在任务实例化的早期点附加到任务框架,以便例如容器图像可以提供给任务框架。网络接口还可以在任务实例化的早期点附加到任务框架,以便客户可以监控任务实例化。在一个实施例中,当例如容器实例开始执行时,网络接口在任务实例化的稍后点附加到任务框架。
然后,容器管理服务可以确定610是否应该将废卷(这里也称为“临时卷”)附加到任务框架。如本文中所使用,废卷是任务(以及与任务相关联的容器)可用于存储临时数据的临时卷。废卷是临时的,因为它通常不会超出任务和相关联容器的生命周期。尽管图6中未示出,但是容器管理服务还可以确定是否将附加卷(即,附加存储装置)附接到任务框架或实例。例如,容器管理服务可以请求来自例如存储服务的共享卷在容器实例、任务、任务框架或容器之间共享,其中此类共享卷附接到实例和/或容器。容器管理服务还可以请求来自例如块存储服务的块存储卷在容器实例、任务构架或容器之间共享,并且附接到实例和/或容器,其中此类块存储卷附接到实例和/或容器。
如果容器管理服务确定610废卷应附接到任务框架,则容器管理服务可以将废卷附接612到任务框架。然后,容器管理服务可以完成614任何操作以供应实例,提供任务框架,和/或为相关联容器提供对计算资源服务提供者的服务的访问。在一个实施例中,容器管理服务可以通过例如向计算资源服务提供商的一个或多个安全群组注册实例、完成网络接口的注册和供应、或将实例上的容器连接到容器管理服务,来完成614任何操作以供应实例。相反,如果容器管理服务未确定610应该将废卷附加到任务框架,则容器管理服务接着可以完成614任何操作以供应实例,提供任务框架,和/或为相关联容器提供对计算资源服务提供者的服务的访问,如上所述。
然后,容器管理服务可以向实例代理注册616任务框架,以便例如实例代理可以监控任务和/或相关联的容器,如上所述。接下来,容器管理服务可以确定618是从容器存储库下载容器还是将容器图像卷附接到任务框架。如果容器管理服务确定618从容器存储库下载容器,则容器管理服务接下来可以定位容器图像存储库并可以从容器图像存储库下载620容器图像,如下文所描述,并且可以通过例如向客户提供实例的定位器和/或对实例上的任务的网络接口的访问而向客户提供624对任务的访问。相反,如果容器管理服务未确定618从容器存储库下载容器,则容器管理服务可以生成容器图像卷,可以将容器图像卷附接622到任务框架,如下文所描述,并且可以向客户提供624对任务的访问。
图7示出如结合图1所描述且根据实施例的选择合适的容器实例的示例过程700。容器管理服务,例如结合图1描述的容器管理服务104,可以执行图7所示的示例过程700。在图7中所示的示例过程中,容器管理服务可以首先从实例类型集中选择702实例类型。如上所述,容器管理服务接下来可以确定704所选实例类型是否与任务定义中指定的期望实例类型匹配。例如,如果所选实例类型具有足够的资源来托管任务定义中指定的容器,则容器管理服务可以确定704所选实例类型与任务定义中指定的期望实例类型匹配。
如果容器管理服务未确定704所选实例类型与任务定义中指定的期望实例类型匹配,则容器管理服务可以确定706是否存在可用于评估的下一个类型。如果容器管理服务确定706存在可用于评估的下一个类型,则容器管理服务可以选择702所述下一个实例类型并确定704所述类型是否匹配。如果容器管理服务未确定706存在可用于评估的下一个类型,则在一些实施例中,容器管理服务可以确定708是否可以使用默认实例类型来执行用于任务定义中的任务的容器。如果容器管理服务确定708可以使用默认实例类型来执行用于任务定义中的任务的容器,则容器管理服务可以确定712所述默认实例类型是否可用(即,默认实例类型正在实例池中运行且可用)。类似地,如果容器管理服务确定704所选实例类型与任务定义中指定的期望实例类型匹配,则容器管理服务可以确定712所述实例类型是否可用(即,实例类型的实例正在实例池中运行且可用)。
如果容器管理服务未确定708可以使用默认实例类型来执行用于任务定义中的任务的容器,则容器管理服务可以执行710一个或多个不可用性缓解操作,如上文结合图3所描述。
如果容器管理服务确定712所请求类型的实例可用(即,实例类型的实例正在实例池中运行且可用),则容器管理服务可以选择714实例,供应716所述实例,并且提供718对任务的访问,如上所述。相反,如果容器管理服务未确定712所请求类型的实例可用(即,实例池中没有实例类型的实例运行且可用),则容器管理服务可以确定720是否存在可以选择用来托管与任务相关联的容器的任何等效实例类型,如上所述。
如果容器管理服务未确定720存在可以选择用来托管与任务相关联的容器的任何等效实例类型,则容器管理服务可以执行710一个或多个不可用性缓解操作,包含如上所述。
相反,如果容器管理服务确定720存在可以选择用来托管与任务相关联的容器的等效实例类型,则容器管理服务可以确定722等效实例类型是否可用(即,等效实例类型的实例正在实例池中运行且可用)。如果容器管理服务确定722等效实例类型的实例可用(即,等效实例类型的实例正在实例池中运行且可用),则容器管理服务可以选择714实例,供应716所述实例,并且提供718对任务的访问,如上所述。相反,如果容器管理服务未确定722所请求类型的实例可用(即,实例池中没有等效实例类型的实例运行且可用),则容器管理服务可以确定724是否通过例如在实例池中实例化实例类型的一个或多个新实例来扩展以提供附加实例。例如,如果容器管理服务无法获取和提供例如类型“A”的任何实例,因为实例池中没有类型“A”的可用实例,则容器管理服务可以实例化实例池中类型“A”的一个或多个新实例。
附加实例的实例类型可以具有满足如由任务定义所确定的用于实例化容器的参数集的性能特征集。实例也可以具有等效的实例类型,其中等效实例类型的性能特征集满足用于在实例类型的实例上实例化容器的参数集的最小数量参数,其中在容器描述中指定所述最小数量。例如,用于在实例上实例化容器的参数集可以指定CPU的参数(即,实例的CPU规范)、内存的参数(即,实例的内存规范),或网络带宽的参数(即,实例的网络带宽规范),但容器描述可以指定这些参数中仅有两个(例如,内存和网络带宽)是绝对必需的。因此,可以替代地使用满足两个参数(即,满足用于在实例类型的实例上实例化容器的参数集的最小数量参数)的等效实例类型。
如果容器管理服务未确定724扩展以提供附加实例,则容器管理服务可以执行710一个或多个不可用性缓解操作,包含如上所述。相反,如果容器管理服务确定724扩展以提供附加实例,则管理服务可以实例化726附加实例,并且可以从附加实例中选择714实例,供应716所述实例,并且提供718对任务的访问,如上所述。
图8示出如结合图1所描述且根据实施例的使用容器管理服务来实例化容器实例内的容器的示例环境800。在图8所示的示例中,容器管理服务802可以从图像存储库806检索804容器图像822。容器图像822是可以用于实例化容器的所述容器的图像。容器图像822含有操作容器所需的软件和数据。因此,例如,容器图像822可以含有用于容器的操作系统、用于容器与容器实例对接的驱动器、可以执行的软件、数据以及一个或多个脚本,这些脚本在被执行时使容器执行与任务相关联的操作。图像存储库806是此类容器图像的可搜索存储库。
然后,容器管理服务802可以处理824容器图像,之后再将容器图像复制808到容器图像卷818。容器管理服务802可以通过例如对容器图像进行加密或压缩容器图像来处理824容器图像。容器图像卷818是物理或虚拟的并且含有一个或多个容器图像的存储装置。容器图像卷818可以安装820(即,使用实例的操作系统以操作方式附接到实例)到实例,例如实例810。然后,实例810可以使用容器图像卷818来实例化与任务814相关联的容器812。尽管图8中未示出,但任务814可以具有网络接口,如上所述。应注意,容器图像卷818可以与上文描述的废卷816(或临时卷)不同。在一个实施例中,容器图像卷818以只读方式安装在实例上(即,使得实例只能从容器图像卷818读取)。
图9示出如结合图1所描述且根据实施例的使用容器管理服务来实例化容器实例内的容器的示例环境900。在图9所示的示例中,容器管理服务902可以指示920实例910从图像存储库906检索904容器图像918。容器管理服务902可以通过例如实例910使用网络接口916提供容器图像918的资源定位符来指示920实例910从图像存储库906检索904容器图像918。图像存储库906可以使用网络接口916向在实例910上运行的任务914提供908容器图像918,如上所述。在实施例中,网络接口916不同于客户与任务通信所使用的网络接口,如上所述。然后,实例910可以使用容器图像918来实例化与任务914相关联的一个或多个容器912。尽管图9中未示出,但实例910可以具有废卷(或临时卷),如上所述。
图10示出如结合图1所描述且根据实施例的使用容器实例管理器来实例化容器实例的示例过程1000。容器管理服务,例如结合图1描述的容器管理服务104,可以执行图10所示的示例过程1000。容器管理服务可以首先接收1002任务定义,并且至少部分地基于所述任务定义,可以确定1004执行任务所需的一种或多种实例类型。容器管理服务接着可以从实例池中选择1006所需实例类型的一个或多个实例,并且可以供应1008所选实例。容器管理服务接着可以在实例上创建1010任务(即,可以创建如上所述的任务框架),可以实例化1012用于任务的容器,并且最后可以向客户提供1014对任务的访问。
可以根据以下条款描述本公开的实施例:
1.一种用于管理软件容器实例的计算机实施的方法,包括:
在配置有可执行指令的一个或多个计算机系统的控制下,
在容器管理服务处接收用于任务的任务定义,所述任务定义包含容器描述,所述容器描述包含用于实例化容器的参数集,所述参数集包含用于所述容器的CPU的数量和内存量;
至少部分地基于所述容器描述,确定可用于实例化所述容器的实例类型,所述实例类型的性能特征集满足用于实例化所述容器的所述参数集;
从实例池选择所述实例类型的实例,所述实例池包含一个或多个运行实例;
供应所述实例以执行所述任务;
在所述实例上实例化所述容器;以及
向与所述任务相关联的客户提供对所述任务的访问,所述访问允许所述客户与所述任务交互。
2.根据条款1所述的计算机实施的方法,其中所述任务定义指示所述容器将与服务通信,并且所述方法进一步包括:配置与所述实例相关联的网络接口以实现到所述服务的连接性。
3.根据条款1或2所述的计算机实施的方法,其中实例化所述容器包含在所述实例上安装容器图像卷,所述容器图像卷在其上存储有所述任务定义中指定的容器图像。
4.根据条款1至3中任一条款所述的计算机实施的方法,其中实例化所述容器包含:
使用与所述实例相关联的网络接口从容器存储库中检索容器图像;以及
使用所述容器图像实例化所述容器。
5.一种系统,包括配置有处理器和存储器的至少一个计算装置,所述存储器包含在执行时使所述系统执行以下操作的指令:
从实例池中选择实例,所述实例池包含运行实例集,所述运行实例集中的每个实例都具有对应的实例类型,所选的所述实例使得所述实例类型具有的性能特征集满足至少从任务定义中的信息获得的用于实例化容器的参数集,分配给客户的所述实例与所述容器相关联;
供应所述实例;以及
至少部分地基于所述任务定义在所述实例上实例化所述容器。
6.根据条款5所述的系统,其中使所述系统从所述实例池中选择所述实例的所述指令进一步包含在执行时使所述系统执行以下操作的指令:
分析从所述任务定义获得的所述参数集以生成所述实例的性能规范集,其中,用于所述实例的所述性能规范集包含以下中的至少一个:所述实例的CPU规范、所述实例的内存规范,或所述实例的网络带宽规范;以及
至少部分地基于所述实例从所述实例池中选择所述实例,所述实例包含满足所述性能规范集的资源。
7.根据条款6所述的系统,其中所述实例的所述性能规范集包含所述实例的硬件要求,所述实例的所述硬件要求指定以下中的至少一个:现场可编程门阵列要求、专用集成电路要求、硬件安全模块要求,或图形处理单元要求。
8.根据条款5至7中任一条款所述的系统,其中所述任务定义描述容器集,所述容器集中的每个容器对应于一个或多个容器描述。
9.根据条款5至8中任一条款所述的系统,其中所述系统通过将网络接口附接到所述实例以将所述实例连接到所述客户的虚拟网络来供应所述实例。
10.根据条款5至9中任一条款所述的系统,其中所述系统通过将临时卷附接到所述实例来供应所述实例,所述临时卷可由所述容器用来在所述容器运行时读取和写入数据。
11.根据条款5至10中任一条款所述的系统,其中所述实例的实例代理监控所述实例,并且将所述实例的一个或多个健康度量提供给由计算资源服务提供商提供的容器管理服务。
12.根据条款11所述的系统,其中所述实例代理监控所述容器的一个或多个资源使用度量,所述一个或多个资源使用度量可用于确定与所述容器相关联的资源成本。
13.一种非暂时性计算机可读存储介质,在其上存储有可执行指令,所述可执行指令由于由计算机系统的一个或多个处理器执行而使所述计算机系统至少:
确定实例类型,使得所述实例类型满足用于在所述实例类型的实例上实例化容器的参数集,用于实例化所述容器的所述参数集包含于所述容器的容器描述中;
从实例池中选择所述实例类型的实例,所述实例池包含运行实例集;
使所述实例分配给与所述容器相关联的客户;以及
在对应于所述容器描述的所述实例上实例化所述容器。
14.根据条款13所述的非暂时性计算机可读存储介质,其中使所述计算机系统确定所述实例类型的所述指令进一步包括以下指令:所述指令由于由所述一个或多个处理器执行而使所述计算机系统至少部分地基于用于所述实例类型的所述参数集确定所述实例类型,所述实例类型具有的性能特征集满足用于在所述实例类型的实例上实例化所述容器的所述参数集。
15.根据条款13或14所述的非暂时性计算机可读存储介质,其中使所述计算机系统从实例池中选择所述实例类型的实例的所述指令进一步包括以下指令:所述指令由于由所述一个或多个处理器执行而使所述计算机系统在确定所述实例池中不存在所述实例类型的实例时,从具有实例类型的实例集中选择所述实例,所述实例类型具有的性能特征集满足用于在所述实例类型的实例上实例化所述容器的所述参数集中的最小数量参数,在所述容器描述中指定所述最小数量。
16.根据条款13至15中任一条款所述的非暂时性计算机可读存储介质,其中使所述计算机系统从所述实例池中选择所述实例类型的所述实例的所述指令进一步包含以下指令:所述指令由于由所述一个或多个处理器执行而使所述计算机系统在确定所述实例池中不存在所述实例类型的实例时:
实例化所述实例池中的所述实例类型的一个或多个新实例;以及
从所述实例类型的所述一个或多个新实例中选择所述实例。
17.根据条款13至16中任一条款所述的非暂时性计算机可读存储介质,其中所述实例包含与由计算资源服务提供商提供的容器管理服务通信的实例代理,所述代理被配置成对所述实例应用安全性更新,所述安全性更新是从所述容器管理服务接收到的。
18.根据条款13至17中任一条款所述的非暂时性计算机可读存储介质,其中使所述计算机系统确定所述实例类型的所述指令进一步包括以下指令:所述指令由于由所述一个或多个处理器执行而使所述计算机系统确定所述实例类型,使得所述实例类型满足第二参数集,所述第二参数集包含与所述参数集中的一个或多个参数不同的一个或多个参数,至少部分地基于确定用于实例化所述容器的所述参数集指定供应不足的容器,选择与所述参数集中的所述一个或多个参数不同的所述一个或多个参数。
19.根据条款13至18中任一条款所述的非暂时性计算机可读存储介质,其中使所述计算机系统供应所述实例的所述指令进一步包含以下指令:所述指令由于由所述一个或多个处理器执行而使所述计算机系统将网络接口附接到所述实例,所述网络接口被配置成允许通过网络服务接口与所述容器通信。
20.根据条款13至19中任一条款所述的非暂时性计算机可读存储介质,其中所述指令进一步包括以下指令:所述指令由于由所述一个或多个处理器执行而使所述计算机系统由于所述容器被终止而将所述实例返回到所述实例池。
图11示出用于实现根据各种实施例的方面的示例环境1100的各方面。如将了解,尽管出于说明的目的使用了基于网络的环境,但是可以视需要使用不同的环境来实现各种实施例。环境包含电子客户端装置1102,其可以包含任何适当的装置,所述装置可操作以通过适当的网络1104发送和/或接收请求、消息或信息,并且在一些实施例中,将信息传送回装置的用户。这种客户端装置的示例包括个人计算机、手机、手持消息装置、膝上型计算机、平板计算机、机顶盒、个人数据助理、嵌入式计算机系统、电子书阅读器等。网络可以包含任何适当的网络,包含内联网、互联网、蜂窝网络、局域网、卫星网络或任何其它此类网络和/或其组合。用于此系统的组件可以至少部分地取决于所选网络和/或环境的类型。用于通过这种网络进行通信的许多协议和组件是众所周知的,这里不再详细论述。可以通过有线或无线连接及其组合来实现网络上的通信。在此实例中,网络包含互联网和/或其它可公开寻址的通信网络,因为环境包含用于接收请求并响应于此而提供内容的网络服务器1106,但是对于其它网络,如所属领域的普通技术人员显而易见的,可以使用服务于类似目的的替代装置。
说明性环境包含至少一个应用程序服务器1108和数据存储区1110。应理解,可以存在多个应用程序服务器、层或其它元件、过程或组件,其可以被链接或以其它方式配置,其中可以进行交互以执行任务,例如从适当的数据存储中获取数据。如本文中所使用,服务器可以以各种方式实现,例如硬件装置或虚拟计算机系统。在一些上下文中,服务器可以指在计算机系统上执行的编程模块。如本文中所使用,除非另有说明或从上下文中清楚,术语“数据存储”是指能够存储、访问和检索数据的任何装置或装置组合,其可以包含在任何标准、分布式、虚拟或集群环境中的数据服务器、数据库、数据存储装置和数据存储介质任何组合和数量。应用程序服务器可以包含任何适当的硬件、软件和固件,用于根据需要与数据存储集成,以执行客户端装置的一个或多个应用程序的各方面,处理应用程序的一些或全部数据访问和业务逻辑。应用程序服务器可以与数据存储协作地提供访问控制服务,并且能够生成内容,包含但不限于文本、图形、音频、视频和/或可用于提供给用户的其它内容,其可以由网络服务器以超文本标记语言(“HTML”)、可扩展标记语言(“XML”)、JavaScript、层叠样式表(“CSS”)、JavaScript对象表示法(JSON)和/或其它适当的客户端结构化语言对用户服务。传送到客户端装置的内容可以由客户端装置处理,从而以一种或多种形式提供内容,包含但不限于用户可听、可视和/或通过其它感觉可感知的形式。在此实例中,所有请求和响应的处理以及客户端装置1102与应用程序服务器1108之间的内容传递可以由网络服务器使用PHP:超文本预处理器(“PHP”)、Python、Ruby、Perl、Java、HTML、XML、JSON和/或其它适当的服务器端结构化语言来处理。此外,除非从上下文另外清楚,否则这里描述的由单个装置执行的操作可以由多个装置共同执行,所述多个装置可以形成分布式和/或虚拟系统。
数据存储1110可以包含若干单独的数据表、数据库、数据文档、动态数据存储方案,和/或用于存储与本公开的特定方面有关的数据的其它数据存储机制和介质。例如,所示的数据存储可以包含用于存储生产数据1112和用户信息1116的机制,其可以用于为生产方提供内容。数据存储器还被示出为包含用于存储日志数据1114的机制,其可以用于报告、分析或其它此类目的。应理解,可以存在可能需要存储在数据存储中的许多其它方面,例如页面图像信息和访问权限信息,其可以适当地存储在任何以上所列的机制中或者在数据存储1110中的其它机制中。数据存储1110可通过与其相关联的逻辑操作,以从应用程序服务器1108接收指令,并响应于此获取、更新或以其它方式处理数据。应用程序服务器1108可以响应于所接收的指令提供静态、动态或静态和动态数据的组合。动态数据,例如网络日志(博客)、购物应用程序、新闻服务和其它此类应用程序中使用的数据,可以由如本文中所描述的服务器端结构化语言生成,或者可以由在应用程序服务器上运行或在其控制下运行的内容管理系统(“CMS”)提供。在一个示例中,用户通过用户操作的装置可以提交针对特定类型的项目的搜索请求。在这种情况下,数据存储可以访问用户信息以验证用户的身份,并且可以访问目录详细信息以获取关于所述类型的项目的信息。然后可以将所述信息返回给用户,例如在用户能够通过用户装置1102上的浏览器查看的网页上的结果列表中。可以在专用页面或浏览器的窗口中查看特定感兴趣项目的信息。然而,应注意,本公开的实施例不必限于网页的上下文,而是可以更一般地适用于一般地处理请求,其中请求不一定是对内容的请求。
每个服务器通常将包含操作系统,所述操作系统提供针对所述服务器的一般管理和操作的可执行程序指令,并且通常将包含存储指令的计算机可读存储介质(例如,硬盘、随机存取存储器、只读存储器等),所述指令当由服务器的处理器执行时(即,由于被执行)允许服务器执行其预期的功能。
在一个实施例中,环境是利用若干计算机系统和组件的分布式和/或虚拟计算环境,这些计算机系统和组件使用一个或多个计算机网络或直接连接通过通信链路互连。然而,所属领域的一般技术人员将理解,这种系统可以在具有比图11中所示更少或更多数量的组件的系统中同样良好地操作。因此,图11中的示例环境1100中所示的系统的描绘应被视为本质上说明性的而不限制本公开的范围。
各种实施例还可以在各种各样的操作环境中实现,在一些情况下,这些操作环境可以包含一个或多个用户计算机、计算装置,或可以用于操作多个应用程序中的任何一个的处理装置。用户或客户端装置可以包含多种计算机中的任何一种,例如运行标准操作系统的台式计算机、膝上型计算机或平板计算机,以及运行移动软件并且能够支持多种网络和消息传递协议的蜂窝、无线和手持装置。此类系统还可以包含运行任何各种商业可用的操作系统和用于例如开发和数据库管理之类的目的的其它已知应用程序的多个工作站。这些装置还可以包含其它电子装置,例如虚拟终端、瘦客户端、游戏系统,以及能够通过网络进行通信的其它装置。这些装置还可以包含虚拟装置,例如虚拟机、超管理器,以及能够通过网络进行通信的其它虚拟装置。
本公开的各种实施例利用所属领域的技术人员熟悉的至少一种网络来支持使用各种商业可用协议中的任何协议的通信,例如传输控制协议/互联网协议(“TCP/IP”)、用户数据报协议(“UDP”)、在开放系统互连(“OSI”)模型的各个层中操作的协议、文件传输协议(“FTP”)、通用即插即用(“UpnP”)、网络文件系统(“NFS”)、通用互联网文件系统(“CIFS”)和AppleTalk。网络可以是例如局域网、广域网、虚拟专用网、互联网、内联网、外联网、公共交换电话网、红外网络、无线网络、卫星网络,以及它们的任何组合。在一些实施例中,面向连接的协议可用于网络端点之间的通信。面向连接的协议(有时称为基于连接的协议)能够在有序流中传输数据。面向连接的协议可以是可靠的或不可靠的。例如,TCP协议是可靠的面向连接的协议。异步传输模式(“ATM”)和帧中继是不可靠的面向连接的协议。面向连接的协议与面向分组的协议(如UDP)形成对比,后者在没有保证排序的情况下传输分组。
在利用Web服务器的实施例中,网络服务器可以运行各种服务器或中间层应用程序中的任何一种,包含超文本传输协议(“HTTP”)服务器、FTP服务器、公共网关接口(“CGI”)服务器、数据服务器、Java服务器、Apache服务器和商业应用程序服务器。服务器还能够例如通过执行一个或多个网络应用程序而响应于来自用户装置的请求执行程序或脚本,所述程序或脚本可以被实现为以例如C、C#或C++等任何编程语言或例如Ruby、PHP、Perl、Python或TCL等任何脚本语言以及它们的组合编写的一个或多个脚本或程序。服务器还可以包含数据库服务器,包含但不限于可从/> 和/>商业获得的数据库服务器,以及例如MySQL、Postgres、SQLite、MongoDB等任何开源服务器,以及能够存储、检索和访问结构化或非结构化数据的服务器。数据库服务器可以包含基于表格的服务器、基于文档的服务器、非结构化服务器、关系服务器、非关系服务器,或这些和/或其它数据库服务器的组合。
如上所述,环境可以包含各种数据存储和其它存储器和存储介质。这些可以驻留在各种位置,例如在一个或多个计算机本地(和/或驻留在一个或多个计算机中)或者远离网络中的任何或所有计算机的存储介质上。在一组特定实施例中,信息可以驻留在所属领域的技术人员熟悉的存储区域网络(“SAN”)中。类似地,用于执行归属于计算机、服务器或其它网络装置的功能的任何必要文件可以适当地本地和/或远程存储。在系统包含计算机化装置的情况下,每个此类装置可以包含可以通过总线电耦合的硬件元件,这些元件包含例如至少一个中央处理单元(“CPU”或“处理器”)、至少一个输入装置(例如,鼠标、键盘、控制器、触摸屏或小键盘),以及至少一个输出装置(例如,显示装置、打印机或扬声器)。此类系统还可以包含一个或多个存储装置,例如磁盘驱动器、光学存储装置,以及例如随机存取存储器(“RAM”)或只读存储器(“ROM”)的固态存储装置,以及可移动介质装置、存储器卡、闪存卡等。
此类装置还可以包含计算机可读存储介质读取器、通信装置(例如,调制解调器、网卡(无线或有线)、红外通信装置等),以及工作存储器,如上所述。计算机可读存储介质读取器可以与计算机可读存储介质连接或者被配置成接收计算机可读存储介质,所述计算机可读存储介质表示远程、本地、固定和/或可移动存储装置以及用于临时和/或更永久地包含、存储、传输和检索计算机可读信息的存储介质。系统和各种装置通常还包含位于至少一个工作存储器装置内的多个软件应用程序、模块、服务或其它元件,包含操作系统和应用程序,例如客户端应用程序或网络浏览器。此外,还可以使用定制硬件和/或可以在硬件、软件(包括便携式软件,例如小应用程序)或这两者中实现特定元件。此外,可以采用与例如网络输入/输出装置之类的其它计算装置的连接。
用于包含代码或代码部分的存储介质和计算机可读介质可以包含本领域已知或使用的任何适当介质,包含存储介质和通信介质,例如但不限于,在用于存储和/或传输例如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术中实现的易失性和非易失性、可移动和不可移动介质,包含RAM、ROM、电可擦除可编程只读存储器(“EEPROM”)、闪存或其它存储器技术、光盘只读存储器(“CD-ROM”)、数字通用光盘(DVD),或其它光学存储器、磁带盒、磁带、磁盘存储器或其它磁存储装置,或可用于存储所需信息并且可由系统装置访问的任何其它介质。基于本文中提供的公开内容和教导,所属领域普通技术人员会认识到实现本发明的其它方式和/或方法。
因此,说明书和附图应被视为说明性的而非限制性的。然而,显而易见的是,在不脱离如权利要求中所阐述的本发明的更广泛精神和范围的情况下,可以对其进行各种修改和改变。
其它变化在本公开的精神内。因此,尽管所公开的技术易于进行各种修改和替换构造,但是其某些图示的实施例在附图中示出并且已在上面详细描述。然而,应了解,无意将本发明限制于所公开的特定形式,相反,其目的是涵盖落入如所附权利要求中所限定的本发明的精神和范围内的所有修改、替代构造和等效物。
除非本文另有说明或与上下文明显矛盾,否则在描述本公开的内容中(尤其在所附权利要求书的内容中)使用术语“一”和“所述”以及类似指示物应理解为涵盖单数以及复数。除非另有说明,否则术语“包括”、“具有”、“包含”和“含有”应被解释为开放式术语(即,意味着“包含但不限于”)。术语“连接”,当未经修改且指物理连接时,应被解释为部分或全部包含在内、附着或连接在一起,即使存在某些干预。除非本文中另有说明,否则本文中对数值范围的描述仅旨在用作单独提及落入所述范围内的每个单独值的简写方法,并且每个单独的值并入本说明书中,如同其在本文中单独引用一样。除非另有说明或与上下文相矛盾,否则术语“集合”(例如,“项目集”)或“子集”的使用应被解释为包括一个或多个构成部分的非空集合。此外,除非另有说明或与上下文相矛盾,否则对应集的术语“子集”不一定表示对应集的适当子集,而是子集和对应集可以相同。
除非另有明确说明或上下文明显矛盾,否则连接语言,例如“A、B、和C中的至少一个”或“A、B和C中的至少一个”形式的短语,通过上下文以另外的方式理解为一般用于表示项目、术语等,可以是A或B或C,或A和B和C的集的任何非空子集。例如,在具有三个组成部分的集的说明性示例中,连接短语“A、B、和C中的至少一个”和“A、B和C中的至少一个”指的是以下任何集:{A}、{B}、{C}、{A,B}、{A,C}、{B,C}、{A,B,C}。因此,此类连接性通常并不意味着暗示某些实施例要求至少一个A、至少一个B和至少一个C均要存在。
除非本文另有说明或上下文明显矛盾,否则本文中所描述的过程的操作可以任何合适的顺序执行。本文描述的过程(或其变体和/或组合)可以在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可以实现为通过硬件或其组合在一个或多个处理器上共同执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用程序)。代码可以存储在计算机可读存储介质上,例如,呈包括可由一个或多个处理器执行的多个指令的计算机程序的形式。计算机可读存储介质可以是非暂时性的。在一些实施例中,代码存储在一个或多个非暂时性计算机可读存储介质的集上,其中存储有可执行指令,所述指令当由计算机系统的一个或多个处理器执行时(即,由于被执行)使计算机系统执行本文中描述的操作。所述非暂时性计算机可读存储介质的集可以包括多个非暂时性计算机可读存储介质,并且多个非暂时性计算机可读存储介质中的一个或多个单独的非暂时性存储介质可能缺少所有代码,而多个非暂时性计算机可读存储介质共同存储所有代码。此外,在一些示例中,执行可执行指令使得不同的指令由不同的处理器执行。作为说明性示例,非暂时性计算机可读存储介质可以存储指令。主CPU可以执行一些指令,并且图形处理器单元可以执行其它指令。通常,计算机系统的不同组件可以具有单独的处理器,并且不同的处理器可以执行指令的不同子集。
因此,在一些示例中,计算机系统被配置成实现单独或共同执行本文中描述的过程的操作的一个或多个服务。例如,此类计算机系统可以配置有能够执行操作的适用硬件和/或软件。此外,实现本公开的各种实施例的计算机系统在一些示例中可以是单个装置,并且在其它示例中是包括多个装置的分布式计算机系统,所述多个装置以不同方式操作,使得分布式计算机系统执行本文中描述的操作,并且单个装置可能无法执行所有操作。
除非另外要求,否则本文中提供的任何和所有示例或示例性语言(如,“例如”)的使用仅在于更好地阐明本发明的实施例,且不对本发明的范围施加限制。本说明书中的任何语言都不应理解为指示任何未要求保护的要素对于本发明的实践是必不可少的。
本文中描述了本公开的实施例,包含发明人已知的用于实施本发明的最佳模式。在阅读前面的描述后,这些实施例的变化对于所属领域的一般技术人员而言将变得显而易见。发明人期望熟练技术人员适当地采用这些变化,并且发明人意图以不同于本文具体描述的方式实践本公开的实施例。因此,本公开的范围包含适用法律所允许的所附权利要求中所叙述主题的所有修改和等效物。此外,除非本文另有说明或上下文明显矛盾,否则上述元件的所有可能变型的任何组合都包含在本公开的范围内。
本文引用的所有参考文献,包含出版物、专利申请和专利均以引用的方式并入本文中,其程度如同每个参考文献被单独且具体地指出通过引用并入并且在本文中完整地阐述一般。
Claims (16)
1.一种系统,包括配置有处理器和存储器的至少一个计算装置,所述存储器包含在执行时使所述系统执行以下操作的指令:
维护实例池,所述实例池包括一组运行实例,所述一组运行实例能够被分配给用于执行任务的容器,然后返回到所述实例池,所述一组运行实例中的每个实例都具有对应的实例类型,被选择为使得所述对应的实例类型具有一组性能特征;
获得用于实例化所述容器的参数集,所述参数集至少从任务定义中的信息获得,其中所述指令在执行时使所述系统执行以下操作中的至少一个:
(a)基于具有所述一组性能特征的所述对应的实例类型从所述实例池中选择实例,所述一组性能特征满足用于在所述对应的实例类型的实例上实例化所述容器的所述参数集中的最小数量的参数,其中所述最小数量在所述任务定义中指定;和
(b)在确定用于实例化所述容器的所述参数集指定了供应不足的实例类型时,从所述实例池中选择具有改进后的实例类型的实例,使得所述改进后的实例类型满足第二参数集,所述第二参数集包括超过所述参数集的一个或多个参数的一个或者多个参数;以及
至少部分地基于所述任务定义在所述实例上实例化所述容器。
2.根据权利要求1所述的系统,其中使所述系统从所述实例池中选择所述实例的所述指令进一步包含在执行时使所述系统执行以下操作的指令:
分析从所述任务定义获得的所述参数集以生成所述实例的性能规范集,其中用于所述实例的所述性能规范集包含以下中的至少一个:所述实例的CPU规范、所述实例的内存规范,或所述实例的网络带宽规范;以及
至少部分地基于所述实例从所述实例池中选择所述实例,所述实例包含满足所述性能规范集的资源。
3.根据权利要求2所述的系统,其中所述实例的所述性能规范集包含所述实例的硬件要求,所述实例的所述硬件要求指定以下中的至少一个:现场可编程门阵列要求、专用集成电路要求、硬件安全模块要求,或图形处理单元要求。
4.根据权利要求1所述的系统,其中所述任务定义描述容器集,所述容器集中的每个容器对应于一个或多个容器描述。
5.根据权利要求1所述的系统,其中所述系统通过将网络接口附接到所述实例以将所述实例连接到客户的虚拟网络并且通过将临时卷附接到所述实例来供应所述实例,所述临时卷能够由所述容器用来在所述容器运行时读取和写入数据。
6.根据权利要求1所述的系统,其中所述实例的实例代理监控所述实例,并且将所述实例的一个或多个健康度量提供给由计算资源服务提供商提供的容器管理服务。
7.根据权利要求6所述的系统,其中所述实例代理监控所述容器的一个或多个资源使用度量,所述一个或多个资源使用度量能够用于确定与所述容器相关联的资源成本。
8.一种方法,包括:
维护实例池,所述实例池包括一组运行实例,所述一组运行实例能够被分配给用于执行任务的容器,然后返回到所述实例池;
确定实例类型,使得所述实例类型满足用于在所述实例类型的实例上实例化容器的参数集,用于实例化所述容器的所述参数集包含于所述容器的容器描述中;
通过以下从所述实例池中选择所述实例类型的实例:基于满足用于在所述实例类型的实例上实例化所述容器的所述参数集中的最小数量的参数的实例类型从所述实例池中选择实例,其中所述最小数量在任务定义中指定;或在确定用于实例化所述容器的所述参数集指定了供应不足的实例类型时,从所述实例池中选择具有改进后的实例类型的实例,使得所述改进后的实例类型满足第二参数集,所述第二参数集包括超过所述参数集的一个或多个参数的一个或者多个参数;以及
在对应于所述容器描述的所述实例上实例化所述容器。
9.根据权利要求8所述的方法,其中确定所述实例类型进一步包括:至少部分地基于用于所述实例类型的所述参数集确定所述实例类型,所述实例类型具有的性能特征集满足用于在所述实例类型的实例上实例化所述容器的所述参数集。
10.根据权利要求8所述的方法,其中选择所述实例类型的所述实例进一步包括:在确定所述实例池中不存在所述实例类型的实例时,从具有实例类型的实例集中选择所述实例,所述实例类型具有的性能特征集满足用于在所述实例类型的实例上实例化所述容器的所述参数集中的最小数量参数,在所述容器描述中指定所述最小数量。
11.根据权利要求8所述的方法,其中选择所述实例类型的所述实例进一步包括:
实例化所述实例池中的所述实例类型的一个或多个新实例;以及
从所述实例类型的所述一个或多个新实例中选择所述实例。
12.根据权利要求8所述的方法,其中所述实例包含与由计算资源服务提供商提供的容器管理服务通信的实例代理,所述代理被配置成对所述实例应用安全性更新,所述安全性更新是从所述容器管理服务接收到的。
13.根据权利要求8所述的方法,其中确定所述实例类型进一步包括确定所述实例类型,使得所述实例类型满足第二参数集,所述第二参数集包含与所述参数集中的一个或多个参数不同的一个或多个参数,至少部分地基于确定用于实例化所述容器的所述参数集指定供应不足的容器,选择与所述参数集中的所述一个或多个参数不同的所述一个或多个参数。
14.根据权利要求8所述的方法,其中从所述实例池中选择具有所述改进后的实例类型的所述实例,所述改进后的实例类型至少部分地基于用于实例化所述容器的所述参数集指定供应不足的实例类型来确定。
15.根据权利要求8所述的方法,其中供应所述实例进一步包括将网络接口附接到所述实例,所述网络接口被配置成允许通过网络服务接口与所述容器通信。
16.根据权利要求8所述的方法,其进一步包括由于所述容器被终止,将所述实例返回到所述实例池。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/280,807 | 2016-09-29 | ||
US15/280,807 US10871995B2 (en) | 2016-09-29 | 2016-09-29 | Managed container instances |
PCT/US2017/054489 WO2018064568A1 (en) | 2016-09-29 | 2017-09-29 | Managed container instances |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109804352A CN109804352A (zh) | 2019-05-24 |
CN109804352B true CN109804352B (zh) | 2024-02-20 |
Family
ID=60043420
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780060731.7A Active CN109804352B (zh) | 2016-09-29 | 2017-09-29 | 受管理的容器实例 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10871995B2 (zh) |
EP (1) | EP3497567A1 (zh) |
JP (1) | JP6860179B2 (zh) |
CN (1) | CN109804352B (zh) |
AU (1) | AU2017337061B2 (zh) |
WO (1) | WO2018064568A1 (zh) |
Families Citing this family (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7991910B2 (en) | 2008-11-17 | 2011-08-02 | Amazon Technologies, Inc. | Updating routing information based on client location |
US7962597B2 (en) | 2008-03-31 | 2011-06-14 | Amazon Technologies, Inc. | Request routing based on class |
US9154551B1 (en) | 2012-06-11 | 2015-10-06 | Amazon Technologies, Inc. | Processing DNS queries to identify pre-processing information |
US10097448B1 (en) | 2014-12-18 | 2018-10-09 | Amazon Technologies, Inc. | Routing mode and point-of-presence selection service |
US10831549B1 (en) * | 2016-12-27 | 2020-11-10 | Amazon Technologies, Inc. | Multi-region request-driven code execution system |
US10938884B1 (en) | 2017-01-30 | 2021-03-02 | Amazon Technologies, Inc. | Origin server cloaking using virtual private cloud network environments |
US10419553B2 (en) * | 2017-01-31 | 2019-09-17 | Cisco Technology, Inc. | Dynamic docker pool recycling |
US10459769B2 (en) * | 2017-08-04 | 2019-10-29 | Unisys Corporation | Elastic container management system |
US10761871B2 (en) * | 2017-11-14 | 2020-09-01 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and apparratus for secrets injection into containers |
US11340933B2 (en) | 2017-11-14 | 2022-05-24 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and apparatus for secrets injection into containers for 5G network elements |
WO2020043734A1 (en) * | 2018-08-28 | 2020-03-05 | Novo Nordisk A/S | Systems and methods for providing container based medication dose guidance to treat diabetes |
WO2020046981A1 (en) * | 2018-08-28 | 2020-03-05 | Amazon Technologies, Inc. | Automated code verification service and infrastructure therefor |
US10664379B2 (en) | 2018-09-05 | 2020-05-26 | Amazon Technologies, Inc. | Automated software verification service |
US10977111B2 (en) | 2018-08-28 | 2021-04-13 | Amazon Technologies, Inc. | Constraint solver execution service and infrastructure therefor |
US10664265B2 (en) | 2018-08-30 | 2020-05-26 | International Business Machines Corporation | Generating target configuration containers providing computer environments based on a configuration container |
FR3085774B1 (fr) * | 2018-09-12 | 2021-02-19 | Bull Sas | Methode de stockage securise dans un reseau d'une image de conteneur dans un registre de conteneurs |
JP6759317B2 (ja) * | 2018-12-13 | 2020-09-23 | 株式会社日立製作所 | コンテナ提供支援システムおよびコンテナ提供支援方法 |
US10896067B2 (en) | 2019-01-11 | 2021-01-19 | Hewlett Packard Enterprise Development Lp | Determining the cost of container-based workloads |
US10853084B2 (en) * | 2019-02-13 | 2020-12-01 | Abb Schweiz Ag | System and method for coordinating resources |
US10887380B2 (en) | 2019-04-01 | 2021-01-05 | Google Llc | Multi-cluster ingress |
US11748178B2 (en) * | 2019-04-02 | 2023-09-05 | Intel Corporation | Scalable and accelerated function as a service calling architecture |
US20200389352A1 (en) * | 2019-06-04 | 2020-12-10 | Microsoft Technology Licensing, Llc | Automated upgrade of multiple hosts |
US11669365B1 (en) | 2019-08-26 | 2023-06-06 | Amazon Technologies, Inc. | Task pool for managed compute instances |
US11392422B1 (en) * | 2019-11-27 | 2022-07-19 | Amazon Technologies, Inc. | Service-managed containers for container orchestration service |
US11422844B1 (en) | 2019-11-27 | 2022-08-23 | Amazon Technologies, Inc. | Client-specified network interface configuration for serverless container management service |
CN113821214A (zh) * | 2020-06-19 | 2021-12-21 | 中兴通讯股份有限公司 | 应用部署方法、应用蓝图生成方法、平台、终端和介质 |
US11403150B1 (en) | 2020-06-23 | 2022-08-02 | Amazon Technologies, Inc. | Replenishment-aware resource usage management |
US11573816B1 (en) | 2020-06-26 | 2023-02-07 | Amazon Technologies, Inc. | Prefetching and managing container images using cluster manifest |
US11487591B1 (en) | 2020-06-29 | 2022-11-01 | Amazon Technologies, Inc. | Automatically configuring execution of a containerized application |
CN112084002B (zh) * | 2020-08-03 | 2022-09-02 | 同济大学 | 云环境下微服务系统的弹性伸缩方法、系统、介质及设备 |
CN111857977B (zh) * | 2020-09-21 | 2020-12-25 | 腾讯科技(深圳)有限公司 | 弹性伸缩方法、装置、服务器和存储介质 |
CN112148489B (zh) * | 2020-09-22 | 2024-07-23 | 网易(杭州)网络有限公司 | 游戏资源调度方法、装置、设备及存储介质 |
US11853807B1 (en) | 2020-12-01 | 2023-12-26 | Amazon Technologies, Inc. | Cluster scaling based on task state information |
US12039314B2 (en) * | 2021-01-15 | 2024-07-16 | Palantir Technologies Inc. | System and methods for using container layers to facilitate cloud resource sharing and decrease startup times |
US20220261270A1 (en) * | 2021-02-17 | 2022-08-18 | Connectify, Inc. | Reusing software application containers |
US11797287B1 (en) | 2021-03-17 | 2023-10-24 | Amazon Technologies, Inc. | Automatically terminating deployment of containerized applications |
US11995466B1 (en) | 2021-06-30 | 2024-05-28 | Amazon Technologies, Inc. | Scaling down computing resource allocations for execution of containerized applications |
US11892418B1 (en) | 2021-06-30 | 2024-02-06 | Amazon Technologies, Inc. | Container image inspection and optimization |
US11989586B1 (en) | 2021-06-30 | 2024-05-21 | Amazon Technologies, Inc. | Scaling up computing resource allocations for execution of containerized applications |
CN113296868B (zh) * | 2021-07-27 | 2021-11-23 | 杭州筋斗腾云科技有限公司 | 应用平台及应用管理方法 |
JP7496807B2 (ja) | 2021-09-28 | 2024-06-07 | Kddi株式会社 | コンテナ実行基盤におけるコンテナネットワーク方式最適化方法およびシステム |
US12045584B2 (en) | 2021-10-14 | 2024-07-23 | Red Hat, Inc. | Undeployed topology visualization for improving software application development |
JP2023102641A (ja) * | 2022-01-12 | 2023-07-25 | 株式会社日立製作所 | 計算機システム及びスケールアップ管理方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104620222A (zh) * | 2012-08-23 | 2015-05-13 | 亚马逊技术有限公司 | 扩展虚拟机实例 |
CN105027108A (zh) * | 2013-01-22 | 2015-11-04 | 亚马逊科技公司 | 实例主机配置 |
US9256467B1 (en) * | 2014-11-11 | 2016-02-09 | Amazon Technologies, Inc. | System for managing and scheduling containers |
CN105335207A (zh) * | 2014-05-29 | 2016-02-17 | 国际商业机器公司 | 用于管理虚拟机实例的方法和装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8661120B2 (en) | 2010-09-21 | 2014-02-25 | Amazon Technologies, Inc. | Methods and systems for dynamically managing requests for computing capacity |
US10193963B2 (en) * | 2013-10-24 | 2019-01-29 | Vmware, Inc. | Container virtual machines for hadoop |
US9413626B2 (en) | 2014-12-05 | 2016-08-09 | Amazon Technologies, Inc. | Automatic management of resource sizing |
US9471775B1 (en) | 2015-02-04 | 2016-10-18 | Amazon Technologies, Inc. | Security protocols for low latency execution of program code |
US20170060609A1 (en) * | 2015-08-28 | 2017-03-02 | International Business Machines Corporation | Managing a shared pool of configurable computing resources which has a set of containers |
US10812582B2 (en) * | 2016-03-10 | 2020-10-20 | Vmware, Inc. | Management of applications across nodes using exo-clones |
US10891547B2 (en) * | 2016-08-23 | 2021-01-12 | International Business Machines Corporation | Virtual resource t-shirt size generation and recommendation based on crowd sourcing |
-
2016
- 2016-09-29 US US15/280,807 patent/US10871995B2/en active Active
-
2017
- 2017-09-29 EP EP17781371.4A patent/EP3497567A1/en not_active Ceased
- 2017-09-29 CN CN201780060731.7A patent/CN109804352B/zh active Active
- 2017-09-29 WO PCT/US2017/054489 patent/WO2018064568A1/en unknown
- 2017-09-29 AU AU2017337061A patent/AU2017337061B2/en active Active
- 2017-09-29 JP JP2019516173A patent/JP6860179B2/ja active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104620222A (zh) * | 2012-08-23 | 2015-05-13 | 亚马逊技术有限公司 | 扩展虚拟机实例 |
CN105027108A (zh) * | 2013-01-22 | 2015-11-04 | 亚马逊科技公司 | 实例主机配置 |
CN105335207A (zh) * | 2014-05-29 | 2016-02-17 | 国际商业机器公司 | 用于管理虚拟机实例的方法和装置 |
US9256467B1 (en) * | 2014-11-11 | 2016-02-09 | Amazon Technologies, Inc. | System for managing and scheduling containers |
Also Published As
Publication number | Publication date |
---|---|
EP3497567A1 (en) | 2019-06-19 |
US20180088993A1 (en) | 2018-03-29 |
AU2017337061A1 (en) | 2019-04-11 |
CN109804352A (zh) | 2019-05-24 |
JP2019530095A (ja) | 2019-10-17 |
US10871995B2 (en) | 2020-12-22 |
AU2017337061B2 (en) | 2020-03-12 |
WO2018064568A1 (en) | 2018-04-05 |
JP6860179B2 (ja) | 2021-04-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109804352B (zh) | 受管理的容器实例 | |
RU2751576C2 (ru) | Система управления и диспетчеризации контейнеров | |
US10657061B1 (en) | Resource distribution using attributes of versioned hash rings | |
US11296941B2 (en) | Standby instances for auto-scaling groups | |
CA2919839C (en) | Virtual computing instance migration | |
US20200007459A1 (en) | Background processes in update load balancers of an auto scaling group | |
US10938668B1 (en) | Safe deployment using versioned hash rings | |
US10409649B1 (en) | Predictive load balancer resource management | |
US9798566B2 (en) | Metadata-based virtual machine configuration | |
JP6068670B2 (ja) | リソーススタックを構築するための方法およびリソーススタックを管理するためのコンピュータシステム | |
US10341426B2 (en) | Managing load balancers associated with auto-scaling groups | |
US10810049B2 (en) | Using scripts to bootstrap applications with metadata from a template | |
US11616686B1 (en) | Cluster management | |
US10735281B1 (en) | Application focused provisioning system | |
US20160323188A1 (en) | Managing state for updates to load balancers of an auto scaling group | |
US10997538B1 (en) | Resource management | |
US11080097B1 (en) | User defined logical spread placement groups for computing resources within a computing environment | |
CN115039089A (zh) | 用于搜索服务的暖层存储 | |
US10705945B1 (en) | Computing system testing service | |
US10095545B1 (en) | Automated and configurable fleet refresh | |
EP3740869B1 (en) | Automated distribution of models for execution on a non-edge device and an edge device | |
US11669365B1 (en) | Task pool for managed compute instances | |
US10630767B1 (en) | Hardware grouping based computing resource allocation | |
US10411960B1 (en) | Detaching instances from auto-scaling group | |
US10846115B1 (en) | Techniques for managing virtual instance data in multitenant environments |
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 |