CN116601606A - 计算平台上的多租户控制平面管理 - Google Patents
计算平台上的多租户控制平面管理 Download PDFInfo
- Publication number
- CN116601606A CN116601606A CN202180082682.3A CN202180082682A CN116601606A CN 116601606 A CN116601606 A CN 116601606A CN 202180082682 A CN202180082682 A CN 202180082682A CN 116601606 A CN116601606 A CN 116601606A
- Authority
- CN
- China
- Prior art keywords
- control plane
- cluster
- cluster control
- api
- api request
- 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.)
- Pending
Links
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/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- 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/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/505—Clust
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
Abstract
用于管理多租户云计算平台的方法、***、设备和计算机可读存储介质。在一个或多个节点上实现的云提供者控制平面可以以按需方式管理集群控制平面的创建、分配、执行和销毁,而不是为每个租户分离地维护集群控制平面。计算资源可以被更有效地使用,至少因为资源没有被充分利用。添加附加的租户可以以每租户的零或小边际成本来完成,因为用于为租户的请求服务的集群控制平面是响应于请求而执行的,但在平面的租户空闲时被销毁。可以在每租户的基础上生成和修改实现平台API以在平台的设备和计算资源的集群之间通信的API服务器的多个实例。
Description
相关申请的交叉引用
本申请是2020年12月15日提交的美国专利申请No.17/122,177的继续申请,其公开内容通过引用并入本文。
背景技术
云计算平台是由提供者维护的计算机***,用于向一个或多个用户提供计算资源和服务。该平台可以为用户分配不同数量的计算资源,用户又可以使用分配的资源来执行任务,诸如在分配的资源上托管他们自己的服务和软件应用。云计算平台可以提供用户购买和直接维护可能非常昂贵的计算资源。平台可以提供平台硬件和平台用户之间的一系列抽象。对平台用户的抽象可以以诸如基础设施即服务(IaaS)、平台即服务(PaaS)或软件即服务(SaaS)范例的不同的形式出现。
平台的不同用户,诸如与平台交互的个人、组织或程序,可以共同被表示为租户(tenant)。租户可以包括一个或多个平台用户、与租户相关联的计算资源、以及一个或多个标识计算资源应该如何被一个或多个平台用户访问的策略。计算资源可以包括分配给租户的一个或多个工作者节点,以及为租户执行集群控制平面而保留的一个或多个计算设备。集群控制平面可以被配置以促进响应租户的平台用户针对租户读取或写入数据的请求。
平台可以分配计算资源以在平台的相同共享计算资源上备置每个租户。然而,在这种多租户方法中管理平台可能产生问题,特别是当不同租户的计算资源在表示计算资源的同一节点集群上共享时。计算资源的分配也可能难以在其分配的计算资源与其他租户的计算资源共址的租户之间有效地隔离。
另一方面,为每个集群控制平面指定分离的节点可能是低效且昂贵的。一个原因是因为计算平台上的节点通常根据固定的最小大小进行离散分区,诸如单个虚拟机的可用计算资源的最小设置、或者以处理器周期或存储器大小测量的计算资源的最小分配。另一原因可能是集群控制平面可以各自有固定的开销成本来实现,所述固定的开销成本不随着一次执行的集群控制平面的数量而减少。集群上只有几个节点的租户的集群控制平面可能通常无法充分利用,即使是可用于执行对应控制平面的最小可用节点。
发明内容
本公开提供在计算平台上管理多个租户,每个租户具有专用控制平面。云提供者控制平面可以将相应租户的每个控制平面管理为执行多个线程的进程的一个或多个线程。云提供者控制平面可以接收来自租户的请求以修改与租户的计算资源对应的集群的状态。云提供者控制平面可以确定当前集群控制平面对于请求租户是否是激活的。如果不是,则云提供者控制平面可以引发一个或多个线程,这些线程执行集群控制平面以管理与请求租户相对应的节点。作为执行集群控制平面的一部分,云提供者控制平面可以生成在计算平台上实现并被配置为处理根据平台API形成的传入请求的修改的应用编程接口(API)服务器的一个或多个实例。云提供者控制平面可以为API服务器的不同实例管理二进制文件或其他可执行软件,这些实例可以以不同的方式被修改。如本文所述,响应于API请求,集群控制平面引擎可以引发线程以执行API服务器实例,API服务器实例根据在多租户进程中运行的需要进行修改并提供有特定租户的配置数据。
本公开的方面可以被实现为多租户计算平台,或者被实现为单租户计算平台的修改以允许多租户功能。平台可以是容器化环境,其中平台被配置为编排在平台上执行的不同容器的创建、分配和销毁。在一些实施方式中,平台可以针对对象存储服务(OSS)进行配置,以允许代表不同平台用户存储数据。在那些实施方式中,平台可以实现本公开的各方面来以多租户方式提供OSS。
当前未配置用于多租户的计算平台可以如本文所述被修改以实现多租户操作。计算平台可以包括服务于对计算平台的请求的单个API服务器,其可以根据本公开的方面被修改以提供服务于具有与计算平台交互的不同要求的不同租户的API请求。修改现有平台可能有利于利用现有基础设施和集成,而不是从头开始实施新平台。
以这种方式,云提供者控制平面可以在计算资源上实现,该计算资源随着对云提供者控制平面的需求在聚合中扩缩,因为存在与备置单独租户相关联的零或很小边际成本。与执行单独集群控制平面相关的固定成本可以被分摊到大量租户,每个租户对应于相应的集群控制平面。换句话说,云提供者控制平面可以有效地处置多个租户的多个集群控制平面,同时保持租户之间的隔离,如根据以下公开的各方面所描述的。
通常,本说明书中描述的主题的一个创新方面提供了一种***,包括:一个或多个处理器;以及与一个或多个处理器通信的一个或多个存储设备,一个或多个存储设备存储指令,指令当由一个或多个处理器执行时,使一个或多个处理器执行操作,包括:维护多个集群控制平面,每个集群控制平面包括应用编程接口(API)服务器的软件的一个或多个相应实例,其中每个集群控制平面被配置为接收API请求并使用API服务器的软件的一个或多个相应实例来处理API请求;接收API请求以修改或读取计算平台的计算资源的集群的状态;以及响应接收API请求:标识与API请求对应的多个集群控制平面中的集群控制平面,以及使所标识的集群控制平面根据API请求来修改或读取集群的状态。
根据本公开的方面配置的平台可以在同一硬件上管理多个集群控制平面,并且在没有附加的计算资源分配的情况下管理附加的租户,而不是在专门分配的硬件上维护分离的控制平面。
使所标识的集群控制平面修改或读取集群的状态可包括使所标识的集群控制平面修改与集群控制平面相关联的一个或多个工作者节点的执行。
API请求可以是第一API请求,并且操作还可以包括:接收第二API请求以修改或读取集群的状态,其中第二API请求指定不同于第一API请求的计算资源的计算资源;确定多个集群控制平面不包括对应于在第二API请求中标识的租户的集群控制平面,并且响应于该确定,引发一个或多个线程以执行被配置为根据第二API请求修改集群的状态的API服务器实例。
执行一个或多个相应实例的所引发的一个或多个线程可以被配置为跨一个或多个通道传送数据,其中每个线程被配置为使用一个或多个通道在其他线程中通信,其中每个通道是被配置为存储线程之间传送的数据的数据结构。
不是通过租户的数量来扩缩集群控制平面,而是可以根据传入API请求的数量来放大或缩小用于执行API功能的API服务器软件的实例。扩缩可以通过线程的引发或销毁来完成,而不是作为每个集群控制平面的专用节点。附加租户的零边际成本或少量边际成本至少可以归因于将多个集群控制平面作为一个或多个相应线程进行管理。可以添加新线程,而无需分配附加的计算资源来维护多个集群控制平面。
操作还可包括在执行第二集群控制平面以修改或读取集群的状态之后的预定时间段之后销毁一个或多个所引发的线程中的至少一个线程。空闲租户的集群控制平面可以在预定时间段后被销毁,并且可以分配新线程来在此期间服务其他API请求。以这种方式,可以释放和重新分配计算资源,而不是拥有可能长时间段保持空闲的专用集群控制平面,尤其是对于较小的租户。
使集群控制平面修改或读取集群的状态可以包括:维护控制器池,每个控制器包括一个或多个线程,该线程被配置为修改或读取一个或多个集群的状态;配置控制器池中的第一控制器以修改或读取包括一个或多个目标节点的集群的状态;从控制器池中移除第一个控制器;使所标识的集群控制平面使用第一控制器修改或读取集群的状态;并在使用第一控制器后销毁第一控制器。
集群可以包括计算资源的多个离散部分,其中集群的多个离散部分中的每个离散部分可以包括唯一标识集群的计算资源的离散部分的资源标识符;其中API请求可以包括元数据,元数据包括资源标识符;并且其中标识集群控制平面可以包括标识对应于其标识符与API请求的元数据中的资源标识符相匹配的资源的集群控制平面。以这种方式,可以在适当时强制执行租户边界,这与传统方法相反,在传统方法中在相同节点上执行的多个集群控制平面面临着一个租户与另一租户的服务干扰的风险。
计算资源的多个离散部分可以包括应用、服务、负载平衡器、节点、舱或容器中的至少一个。
维护多个集群控制平面可以进一步包括:将在多个集群控制平面中共享的数据存储在多个集群控制平面可访问的共享缓存存储器中,其中数据被不可变地存储。
多个集群控制平面中的每个可以对应于计算平台的租户,并且其中操作还可以包括:生成包括API服务器的实例的集群控制平面,其中生成包括根据与集群控制平面对应的租户指定的配置执行API服务器的实例。
通过保持用于在计算平台上执行一个或多个API的软件的分离实例,多个集群控制平面可以独立地提供对不同请求的服务,同时允许租户根据接口一致集合与平台交互。换句话说,该平台可以管理租户如何定义租户与平台之间的交互的改变,同时只为该租户而不是任何其他租户强加这些改变。
用于执行一个或多个API的软件的分离实例还可以使对一个租户的后续修改更容易,至少因为修改可以独立于其他租户的API服务器实例的执行而进行。不同的实例可以作为分离的线程但在同一进程上执行,而不是为每个单独租户所需的每个API服务器运行整个分离的进程。
维护多个集群控制平面还可以包括在存储器的分离缓存中存储对于多个集群控制平面中的每个独特的相应数据,其中存储在多个集群控制平面的第一集群控制平面的分离缓存中的一个中的数据不能由多个集群控制平面中的第二控制平面访问。
平台可以利用不可变数据的共享缓存来减少执行分离的集群控制平面的总体存储器要求,同时确保平台对一个租户的服务不干扰对另一租户的服务。
前述方面的其他实施方式可以包括在计算设备上执行的计算机实现的方法、装置和记录在一个或多个计算机可读存储介质上的计算机程序。
附图说明
图1是根据本公开的方面实现云提供者控制平面的示例云计算平台的框图。
图2是实现云提供者控制平面的用户计算设备和服务器计算设备的框图。
图3是集群控制平面引擎接收和处理来自用户计算设备的请求的框图。
图4是与集群通信的云提供者控制平面的框图。
图5是示出用于管理集群控制平面和处理修改或读取一个或多个目标节点的状态的请求的示例过程的流程图。
附图中相同的附图标记指示相同的元件。
具体实施方式
概述
云计算平台可以实现用于管理平台的多个租户的云提供者控制平面。云提供者控制平面可以将相应租户的每个集群控制平面管理为执行多个线程的进程的一个或多个线程。云提供者控制平面可以包括集群控制平面引擎,其被配置为生成API服务器的一个或多个实例,API服务器被配置为处理由在计算平台上实现平台API的API服务器原始定义的传入请求。原始平台API可以指云计算平台定义的用于单租户操作的API。根据本公开的方面,本文描述的计算平台可以从实现平台API并被配置用于单租户操作的现有平台来实现。
实例可以是在平台上实现的本地平台API的修改并且可以允许多租户操作,其中计算平台原始被配置用于单租户操作。对于每个进程,该进程可以包括用于特定租户的集群控制平面的相应实例,所述集群控制平面的相应实例本身可以跨计算平台的一个或多个计算设备运行零个或更多个API服务器实例。API服务器实例可以执行平台API的修改版本,但被配置为接收根据平台API格式化的API请求。修改版本可以提供由计算平台实现的原始平台API提供的至少一些功能,包括使用相似或相同的语法或机制,诸如电汇机制。以这种方式,平台用户可以使用平台API与云提供者控制平面通信,但可以跨实现多个不同API服务器实例的一个或多个集群控制平面引擎来处置单独请求。
如图1所示,平台用户可以通过云提供者控制平面102与计算平台的资源进行交互。通常,云提供者控制平面102通过平台API暴露计算平台的资源,平台API本身可以是一个或多个分离定义的API。如本文所述,平台API可以为平台用户和租户定义一个或多个API以通过云提供者控制平面与平台通信,但这些API未被各种API服务器实例修改。以这种方式,租户和租户的平台用户可以以通用方式——诸如通过一个或多个集群API——与云提供者控制平面102交互,同时允许集群控制平面引擎生成修改的API服务器的实例,其依赖平台API的修改来提供多租户操作。通过平台API与计算平台交互的平台用户可以与租户相关联。集群控制平面引擎可以维护被配置为处理由相应租户的平台用户发送到计算平台的请求的API服务器的一个或多个实例。实例可以形成特定于处置来自每个租户的传入请求的集群控制平面的一部分。集群控制平面引擎可以并行执行多个集群控制平面,每个集群控制平面不同于暴露计算平台的资源的云提供者控制平面102。
集群控制平面引擎可以接收来自租户的请求以修改指派给作为集群的一部分的租户的计算资源的状态。集群控制平面引擎可以确定当前集群控制平面对于请求租户是否是激活的,诸如API服务器的一个或多个实例是否正在为当前租户执行。如果集群控制平面处于激活状态,则至少一个API服务器实例正在进程的一个或多个线程上运行。如果集群控制平面未正运行,则没有当前为租户执行的API服务器实例。除了API服务器实例之外,集群控制平面还可以包括指定租户特征的配置数据,包括用于租户的API服务器实例应该如何执行的参数,如本文所述。
如果集群控制平面是不激活的,则集群控制平面引擎可以引发执行对应于请求租户的API服务器实例的一个或多个线程。API服务器实例在计算平台上实现,且被配置为处理根据平台API形成的传入请求。API服务器实例是相对于API服务器软件的主副本被修改。修改并不特定于发送API请求的租户,且可以提前进行并被编译以快速执行。当需要租户的API实例时,云提供者控制平面102的集群控制平面引擎可以导致执行对应于请求租户的预编译的修改的API服务器软件的一个或多个线程引发。
主API服务器软件可以从原始不是为多租户操作设计的计算平台获得,诸如从不同租户接收具有不同参数的API请求以用于以减轻或防止不同租户之间的服务中断的方式与平台进行通信。原始不是为多租户操作设计的计算平台可以根据本公开的方面被修改以实现多租户操作,但不导致每增加的租户的边际计算资源成本。云提供者控制平面102可以在相对于集群控制平面引擎的总体需求的资源分配上有效地处置多个租户的多个集群控制平面,以服务多个租户的传入请求。
用于操作云提供者控制平面102的计算资源的分配是相对于来自计算平台的各个租户的传入API请求的数量,而不相对于租户本身的数量。分配可以根据该要求被放大或缩小以在聚合中服务于请求,但平台不需要为每个附加的租户扩缩计算资源。在一些实施方式中,分配是固定的。然而平台分配集群控制平面节点以实现集群控制平面引擎100,平台105可以保持租户之间的隔离,如根据以下公开的各方面所描述的。
这种隔离至少部分是由于云提供者控制平面102的集群控制平面引擎被配置为将多个API服务器实例维护为一个或多个进程的单独线程。云提供者控制平面102的集群控制平面引擎不是将多个租户的每个集群控制平面作为单独的进程或在平台的单独节点上维护,而是可以按需并根据传入请求来监测、引发、执行和销毁线程。换句话说,云提供者控制平面可以根据来自不同租户的当前请求所需来维护集群控制平面以修改包含为每个租户指派的相应计算资源的一个或多个集群的状态。
例如,如果没有传入请求以修改对应于租户的集群的状态,则租户的集群控制平面将执行零个API服务器实例。之后,租户可以开始向平台发送请求,诸如通过对应于租户的平台用户。作为响应,并且如本文所述,云提供者控制平面可以使一个或多个API服务器实例执行,这些实例根据服务特定租户的要求被修改。当租户在诸如两分钟的预定时间段后停止发送请求时,云提供者控制平面可以销毁执行一个或多个API服务器实例的线程,直到计算平台开始接收新请求。
如果给定租户的集群控制平面的一个或多个实例在一段时间内空闲,则云提供者控制平面可以销毁对应于空闲实例的线程,并使执行云提供者控制面的一个或多个节点的计算资源可用于其他租户。此外,租户的添加或减少不需要添加或减少指派给实现云提供者控制平面的节点的计算资源,诸如RAM、处理周期。此外,服务附加租户的附加资源消耗与租户自身的请求的性质和数量有关。对于不向计算平台发送很多请求的租户,至少因为资源仅被分配以响应请求,可以减少分配给租户的浪费的计算资源量,并且浪费的计算资源量然后可以稍后被重新分配以用于其他地方。
线程可以是作为进程的一部分执行一个或多个编程指令的常规操作***线程。云提供者控制平面的集群控制平面引擎还可以实现在执行集群控制平面引擎的节点的操作***级别之上执行的修改线程。称为“软件线程”的这些类型的线程可以包括用户级别线程。软件线程还可以指配置为跨一个或多个通道传送数据的线程。通道是由集群控制平面引擎维护的数据结构,用于存储在线程之间通信的特定类型的数据。通过通道传送的软件线程可以由云提供者控制平面以类似于在操作***级别生成的线程——诸如内核级别线程——的方式以编程方式进行调度,以减轻阻塞行为。此外,集群控制平面引擎可以配置为引发单个操作***线程——每个集群控制平面一个操作***线程——其执行一个或多个软件线程。这样的软件线程的示例是Go编程语言中的goroutine。
云提供者控制平面可以响应于修改多租户集群的状态的传入请求,跨一个或多个集群控制平面引擎通过协调的线程引发和销毁来创建和执行集群控制平面。同时,云提供者控制平面还可以在共享缓存中管理每个正在运行的API服务器实例共有的不可变数据。不可变数据防止对一个正在运行的API服务器实例独特的数据的修改被另一个正在运行的API服务器实例改变。与每个集群控制平面在分离节点上运行的传统方法相比,共享缓存可以附加减少运行云提供者控制平面所需的总存储器量。本说明书中描述的这种不变性和其他功能可以帮助云提供者控制平面在每个租户之间强制执行隔离,同时仍然保持存储器高效。
从向云提供者控制平面发送请求的发送方的角度来看,云提供者控制平面出现并且可以作为专用API服务器与之交互,尽管云提供者控制平面运行主API服务器的分离实例。这种抽象可以允许在已经为平台API实现API服务器的现有云平台上更容易地实现如本文所述的云提供者控制平面,至少因为云提供者控制平面可以钩连到平台中并根据用于接收和响应API服务器的现有协议被传送。
示例***和方法
图1是根据本公开的各方面的实现集群控制平面引擎100的示例云计算平台的框图。如本文所述,云提供者控制平面102可以操作集群控制平面引擎100并在引擎100上实行API请求,如本文所述。集群控制平面引擎100可以操作一个或多个集群控制平面,每个平面对应于特定租户。集群控制平面可以包括API软件的一个或多个修改实例,供应修改的API以使计算平台的控制器驱动云提供者控制平面102的各方面。
用户计算设备120通过网络125通信地耦合到计算平台105。用户计算设备120可以是多种设备中的任何一种,诸如膝上型计算机、台式计算机、移动设备如电话或平板电脑、或旨在佩戴的设备,诸如手表、耳塞、眼镜或头盔。一个或多个用户计算设备也可以与云105和/或一个或多个计算平台116按顺序、同时或前述的某种组合进行通信。
为了便于描述,将参考与计算平台105交互的用户计算120。应当理解,典型的计算平台可以包括大量连接的服务器计算设备、许多存储设备和/或位于一个或多个物理站点或位置的许多数据中心。
平台105可以被提供给云提供者和由云提供者维护。云提供者可以是个人或个人组织。平台105的维护至少部分地由适当配置的软件和/或硬件自动化。平台用户可以是个人、具有多于一个个人的组织和/或配置为与计算平台105通信的至少部分自动化的软件和/或硬件。通常,平台用户通过用户计算设备120、121与计算平台105交互。平台用户可以直接与平台105交互,例如通过用户界面或API。
在一些实施方式中,平台用户还可以使用用于自动化平台105与执行一个或多个程序或技术的设备之间的交互的一个或多个程序或其他技术与云平台105交互。在那些实施方式中,设备可以使用对应于平台用户的凭证来行动。例如,从计算平台105和与平台用户的租户对应的工作者节点的角度来看,该设备看起来是由其凭证正在被使用的平台用户直接操作的。
平台105可以有时以金钱费用提供一套服务和应用,用于为平台用户提供必要的资源,以开发和托管他们自己的应用或服务。应用可以是根据诸如HTTP的特定协议来接收和传输信息的服务和支持软件——诸如托管网站的Web服务器——的集合。服务可以是专门的程序,它作为正在运行的应用的一部分执行一个或多个操作。例如,邮件服务器的服务可以是根据诸如POP3或IMAP的特定协议读取传入邮件的服务。
计算平台105被配置为向租户备置一个或多个用户可访问的工作者节点。用户可访问的工作者节点可以是备置给租户的节点,并且可以由对应于租户的平台用户访问。租户表示一个或多个平台用户、分配给租户的一个或多个工作者节点、一个或多个平台用户如何与云提供者和一个或多个工作者节点交互的策略。集群可以包括多个工作者节点和一些集群控制平面。集群控制平面可以在一个或多个离散的控制平面节点上实现,其可以是由集群控制平面引擎100提供的聚合服务的一部分,如本文所述。节点可以操作容器或容器的舱(pod)。节点是指派给执行服务或应用的物理或虚拟计算资源的离散单元。
如本文所述,每个租户对应于由集群控制平面引擎100管理的集群控制平面。集群控制平面引擎100可以被实现在一个或多个集群控制平面节点上,这些节点可以由计算平台105预留用于执行集群控制平面引擎100。替代地,集群控制平面引擎100可以通过直接运行在平台105的计算资源上来实现,而不将资源划分为虚拟化节点。
作为物理计算资源,节点可以跨计算平台105的一个或多个数据中心114包括一个或多个服务器计算设备112、115的一个或多个处理器和/或一个或多个存储设备。作为虚拟计算资源,节点可以包括一个或多个虚拟机,每个虚拟机使用计算平台105的物理处理器和存储设备操作。虚拟机可以提供物理计算资源和平台用户之间的抽象级别,并且不同平台用户的多个虚拟机可以在共享的物理计算资源上操作。然而,从平台用户的角度来看,节点可以表现为专用的物理硬件集合,诸如平台用户直接在硬件上执行应用或者其他程序。
计算平台105可以提供租户和计算平台105之间的接口。该接口可以以多种方式实现。例如,计算平台105可以实现被显示在连接到用户计算设备120的显示器上的用户界面。
计算平台105还可以提供平台API以允许用户计算设备120、121和计算平台105之间的编程通信,诸如使用根据平台API编写的软件。平台API是定义计算平台105和用户计算设备120、121和/或通信地耦合到计算平台105的其他设备之间的特定交互的功能的集合。通常,平台API包括用于修改由平台105指派和维护的一个或多个节点集群的状态的功能的集合。平台API可以包括用于执行不同功能的一个或多个不同的API,如本文更详细描述的。
集群的状态可以指在集群上处理的数据和存储的数据,以及在集群上操作的当前应用或服务,诸如在容器或容器的舱中。平台API可以定义用于修改存储什么数据、处理什么数据以及在什么条件下为给定集群处理数据的功能。如下面更详细地描述的,平台105可以实现API服务器的实例,该API服务器的实例被配置为根据由集群控制平面引擎100接收的API请求来执行集群的状态修改。
在一些实施方式中,平台API可以指与平台105相关联的多于一个API。每个API可以对应于通常可以被归类为定义平台105上的特定类型的操作的功能的集合。例如,一个API可以包括用于向平台105发送请求以请求添加新租户的功能。API还可以包括用于为新租户指定不同特征的功能和参数,诸如要与租户关联的平台用户和/或对一个或多个工作者节点的初始分配请求。
作为示例,由平台API定义的用于根据API请求执行状态修改和/或读取集群状态的功能可以被抽象为一个或多个集群API。为租户修改集群状态而定义的功能可以被分组为一个或多个集群API的一部分。集群API可以定义可由平台105的不同平台用户执行的服务和/或应用调用的功能。为了防止作为整体的对平台API的修改中断依赖于API的应用和/或服务,平台API可以定义分离的API,如即使其他API被修改也可以保持不改变的集群API。
平台用户和租户可以根据集群API形成API请求。可以接收API请求并将其路由到实现相应API服务器实例的相应集群控制平面引擎。API服务器实例可以被修改为执行与由平台API为针对单个租户操作配置的计算平台原始定义的API相比修改的或不同的API的集合,但被配置为转换API请求并执行一个或多个操作以服务于请求。平台API可以命令式方式指定请求,而API请求路由到的API服务器实例可以被配置为以声明方式执行一个或多个操作。换句话说,API请求可以指定对集群当前状态的修改,而计算平台将API请求转换成一个或多个操作以执行API请求指定的修改。
API的另一示例可以包括如何在租户的工作者节点上执行某些应用或服务的功能。API还可以包括功能和参数用于指定应在工作者节点上执行多少给定应用或服务的实例,以及应将多少分配给租户的计算资源专用于执行给定应用或服务。在一些实施方式中,可以是用户定义的参数也可以是预先确定的并且在未提供时自动应用。例如,计算平台105可以接收由平台API定义的为给定应用启动新实例的请求,并且可以自动提供要分配用于执行给定应用的计算资源的参数值。
在一些实施方式中,计算平台105可以被配置成将租户指派给具有零个工作者节点的集群。这样做的一个原因可能是因为,除了可用于租户运行他们自己的应用或服务的物理或虚拟化计算资源之外,与租户相关联的平台用户可能想要访问在计算平台105上可用的其他类型的资源。例如,租户的平台用户可能希望利用由计算平台105提供并由平台API暴露的现有应用或服务,诸如虚拟化存储设备、网络路由设备、诸如图形处理单元(GPU)或张量处理单元(TPU)的专用硬件、或由平台105管理的域名***(DNS)。
计算平台105包括数据中心110,并且在一些实施方式中包括一个或多个附加数据中心114。数据中心110、114可以位于一个或多个物理位置并且容纳用于执行计算平台105的平台用户可用的各种应用和服务的物理硬件。数据中心110可以包括服务器计算设备115,并且可选地包括一个或多个其他服务器计算设备112。
设备112、115、120和121可以能够通过网络125进行直接和间接通信。例如,使用网络套接字,用户计算设备120可以通过互联网协议连接到在服务器计算设备115上操作的服务。服务器计算设备115可以设置可以接受用于发送和接收信息的发起连接的监听套接字。网络125本身可以包括各种配置和协议,包括互联网、万维网、内联网、虚拟专用网络、广域网、本地网络和使用一个或多个公司专有的通信协议的专用网络。网络125可以支持各种短距离和长距离连接。短距离和长距离连接可以通过诸如2.402GHz至2.480GHz(通常与标准相关)、2.4GHz和5GHz(通常与/>通信协议相关)的不同的带宽进行;或采用各种通信标准,诸如用于无线宽带通信的/>标准。此外或替代地,网络125还可以支持设备112、115、120和121之间的有线连接,包括通过各种类型的以太网连接。
服务器计算设备115可以实现集群控制平面引擎100。如下更详细地描述,集群控制平面引擎100被配置为维护集群控制平面,每个集群控制平面对应于分配给租户的一个或多个工作者节点。集群控制平面引擎100本身可以实现在由计算平台105分离分配的一个或多个集群控制平面节点上。在一些实施方式中,集群控制平面引擎100可以直接实现在服务器计算设备115上,而不生成集群控制平面节点。
图2是实现集群控制平面引擎100的用户计算设备120、121和服务器计算设备115的框图。用户计算设备120、121和服务器计算设备115可以通信地耦合到一个或多个存储设备230。存储设备230可以形成可用于指派给不同租户的各种工作者节点的计算资源的至少一部分。存储设备230可以是易失性和非易失性存储器的组合,并且可以与服务器计算设备115、112处于相同或不同的物理位置。
例如,存储设备230可以包括一个或多个永久性磁盘,用于维护计算平台105上各种集群的状态记录。存储设备230还可以存储与指派给不同平台用户的集群相关的数据和元数据,以及指派给各种平台用户的集群独特的配置的数据。例如,存储设备230可以包括能够存储信息的任何类型的非暂时性计算机可读介质,诸如硬盘驱动器、固态驱动器、磁带驱动器、光存储器、存储卡、ROM、RAM、DVD、CD-ROM、可写和只读存储器。
服务器计算设备115可以包括一个或多个处理器212和存储器214。存储器214可以存储处理器212可访问的信息,包括可以由处理器212执行的指令216。存储器214可以还包括可以由处理器212检索、操纵或存储的数据218。存储器214可以是一种非暂时性计算机可读介质,其能够存储处理器212可访问的信息,诸如易失性和非易失性存储器。处理器212可以包括一个或多个中央处理单元(CPU)、图形处理单元(GPU)、现场可编程门阵列(FPGA)和/或专用集成电路(ASIC),诸如张量处理单位(TPU)。
指令216可以是一个或多个指令,当由计算平台105的一个或多个处理器执行时,使一个或多个处理器执行指令定义的动作。指令216可以以目标代码格式存储以供处理器212直接处理,或以其他格式存储,包括可解释脚本或独立源代码模块的合集,这些模块按需解释或被预先编译。指令216包括用于执行与本公开的方面一致的集群控制平面引擎100的指令。可以使用处理器212和/或使用远离服务器计算设备115的其他处理器来执行集群控制平面引擎100。
数据218可以根据指令216由处理器212检索、存储或修改。数据218可以存储在计算机寄存器中、关系数据库或非关系数据库中,作为具有多个不同字段和记录的表,或者作为JSON、YAML、proto或XML文档。数据218也可以被格式化为计算机可读格式,诸如但不限于二进制值、ASCII或Unicode。此外,数据218可以包括足以标识相关信息的信息,诸如数字、描述性文本、专有代码、指针、对存储在包括其他网络位置的其他存储器中的数据的引用、或由功能使用来计算相关数据的信息。
用户计算设备120也可以被配置为类似于服务器计算设备115,具有一个或多个处理器213、存储器215、指令217和数据219。用户计算设备120还可以包括用户输出部222,以及用户输入部224。用户输入部224可以包括用于接收来自用户的输入的任何合适的机制或技术,诸如键盘、鼠标、机械致动器、软致动器、触摸屏、麦克风和传感器。
用户计算设备120还可以包括用户输出部225。服务器计算设备115可以被配置为向用户计算设备120传输数据,并且用户计算设备120可以被配置为将接收数据的至少一部分显示在作为用户输出部225的一部分实现的显示器上。用户输出部225还可以用于显示用户计算设备120和服务器计算设备115之间的接口。用户输出部225可以替代地或附加地包括一个或多个扬声器、换能器或其他音频输出部、触觉接口或其他触觉反馈,其向用户计算设备120的平台用户提供非视觉和非听觉信息。
虽然图2将处理器212、213和存储器214、215图示为在计算设备115、120内,包括处理器212、213和存储器214、215本说明书中描述的组件可以包括多个处理器和存储器,它们可以在不同的物理位置操作而不是在同一计算设备内。例如,指令216、217和数据218、219中的一些可以被存储在可移动SD卡上,而其他的在只读计算机芯片内。指令和数据中的一些或全部可以被存储在物理上远离处理器212、213但仍可由处理器212、213访问的位置。类似地,处理器212、213可以包括可以并发和/或顺序操作的处理器的合集。计算设备115、120可各自包括一个或多个提供定时信息的内部时钟,其可用于计算设备115、120运行的操作和程序的时间测量。
图3是集群控制平面引擎100接收和处理来自用户计算设备120的请求301的框图。通常,集群控制平面引擎100可以包括集群控制平面315,以及一个或多个附加的集群控制平面327。集群控制平面315可以被配置为处理用于修改集群350和可选的一个或多个附加集群351的状态的API请求。
集群控制平面引擎100可以在一个或多个物理或虚拟化节点上实现。在一些实施方式中,集群控制平面引擎100可以直接在一个或多个计算设备的计算资源上实现,例如通过被配置为实现如本文所述的集群控制平面引擎100的计算设备的一个或多个处理器。
计算平台105可以被配置为实现集群控制平面引擎100的一个或多个实例,诸如集群控制平面引擎100和集群控制平面引擎101。计算平台105可以响应于诸如在短时间内增加API请求301的业务模式而实现集群控制平面引擎100的多个实例。计算平台105还可以响应于由计算平台105服务的租户的平台用户的一般使用行为和需求来实现集群控制平面引擎100的多个实例。
集群控制平面引擎100、101可以在诸如图3所示的具有服务器计算设备115上的集群控制平面引擎100和服务器计算设备309上的集群控制平面引擎101的分离的服务器计算设备上实现。虽然在不同的设备上示出,但是在一些实施方式中,集群控制平面引擎的多个实例可以在同一节点或计算资源上实施。
集群控制平面引擎100、101可以管理相同或不同的租户。例如,且如图3所示,集群控制平面引擎100可以包括API服务器实例319,它是集群控制平面315的一部分。集群控制平面引擎101可以包括API服务器实例317,它也是集群控制平面315的一部分。云提供者控制平面102的不同的集群控制平面引擎可以响应于对平台105的传入API请求的增加或减少,为不同的集群控制平面执行多个API服务器实例。
用户计算设备120可以将API请求301发送到代理305和可选的一个或多个附加代理316。代理305、316可以在与每个代理相同或不同的计算资源上实现,和/或相对于集群控制平面引擎100实现。例如,在图3中,代理305、316在可以在是计算平台105的一部分的服务器计算设备306上实现。代理305、316被配置为接收来自用户计算设备120、121的传入API请求301,并向具有处置API请求的能力的可用集群控制平面引擎转发API请求。代理305可以从对应于与具有集群控制平面315的平台105相关联的租户的平台用户接收API请求。作为响应,代理305可以将API请求发送到集群控制平面引擎100或者集群控制平面引擎101,因为两个平面100、101都可以代表租户和/或租户的平台用户执行动作。
作为另一示例,代理305可以接收标识与集群控制平面315相关联的租户的API请求。集群控制平面315在接收到API请求时可能只有一个在集群控制平面引擎100上执行的API服务器实例318。因此,代理305可以将API请求转发到集群控制平面引擎100。
代理305可以以集群控制平面引擎100、101无法提供服务的速率接收API请求301,而不扩缩平面100、101可用的资源。代理305可以使云提供者控制平面102实施集群控制平面引擎的附加实例以处置接收请求的增加的速率。稍后,代理305可以向平台105发送API请求的速率已减慢的指示。作为响应,计算平台105可以消除集群控制平面引擎的附加实例。
API请求301可以包括数据和元数据,其可以对应于用于修改或读取与API请求301中标识的租户对应的集群状态的配置数据,和/或通常租户的集群控制平面的配置数据。API请求301还可以指定要执行的动作以修改或读取集群350、351的状态,例如存储在集群控制平面中的其他集群配置数据、其上容器或容器的舱、或工作者节点的状态。
由API请求301指定的配置数据可以包括由云计算平台105为不同节点、舱、集群350、351和/或集群控制平面315本身维护的一个或多个属性的值,如本文所述。租户可以跨平台105的一个或多个集群被指派计算资源。
可以根据API请求301中指定的配置数据修改或读取集群控制平面315的配置数据360。可以将配置数据360表示和存储为集群控制平面315中的一个或多个数据对象或数据结构。配置数据360可以包括关于集群控制平面315和/或集群350、351以及集群350、351的节点、容器、负载平衡器、虚拟存储设备和/或舱的信息和设置。配置数据360一起定义了集群的状态。配置数据360可以被存储在计算平台105可访问的持久性存储器中,诸如耦合到服务器计算设备115或服务器计算设备309的存储器中。
配置数据360可以指定在集群的节点上运行的应用或其他工作负载的类型。例如,状态可以定义正在运行什么应用、正在运行的应用的版本以及有多少执行应用的实例的容器正在运行。例如,关于由计算平台105提供给集群350、351的服务的配置数据360信息,诸如由一个或多个负载平衡器进行的负载平衡。配置数据360还可以包括如何与集群350、351交互的指令、规则和/或参数。这些可以包括例如响应于对集群控制平面315的API请求的增加或减少,对控制器的用于自动增加或减少由集群控制平面315管理的舱的数量的指令。
通常,API请求301可以根据集群控制平面315的配置数据指定用于修改集群350、351的状态的配置数据。在本说明书中,指定用于修改节点、舱、集群和/或集群的集群控制平面的配置数据的API请求在本说明书中通常被称为修改给定集群或多个集群的状态的请求。集群的状态可以指集群的特征,诸如作为集群节点的一部分运行的硬件,以及运行在集群节点上的软件和代表集群分配的平台资源,诸如负载平衡器、虚拟存储设备或托管数据库。
对状态的修改可以包括运行的应用的软件版本的改变、运行的实例数量的改变和容器数量的改变,和/或其他配置设置。API请求301可以包括指定集群350的期望状态或控制器320可以工作以实现的计算平台资源的期望状态的配置文件(有时称为“清单”),如本文所描述的。
API请求301可以包括标识符,诸如标识一个或多个目标资源的资源标识符,诸如根据主机名、网络上的URL路径前缀或集群控制平面引擎100被配置以处理来确定响应于API请求310中指定的配置数据针对集群控制平面315要改变什么配置数据的一些其他属性。示例资源包括:与租户相关联的集群的节点、容器、负载平衡器、虚拟存储设备和/或舱。例如,API请求301可以包括标识请求的来源的标识符,诸如租户ID。例如,资源标识符可以对应于提供给指派给发出API请求301的租户的一个或多个资源的名称。资源标识符可以包括子标识符以标识已标识资源内的容器或容器的舱。示例资源包括
集群控制平面引擎100可以响应于API请求301的成功或不成功处理向用户计算设备120发送响应302。响应302可以是对用户计算设备120的对集群的状态的改变的指示。在失败的情况下,响应302可以包括错误的列表或一些其他表示或API请求301未完成的原因。
在一些情况下,API请求301可以包括读取配置数据的请求360。在那些情况下,集群的状态可能不被修改,但是一个或多个控制器可以被配置为监测集群以维护集群的当前状态,如以下详细描述的。
代理305、316可以被配置为认证API请求301,诸如,验证API请求301正确地标识用户计算设备或具有向计算平台105发送API请求的适当认证的其他实体。适当认证可以指用于认证诸如平台用户、用户操作的设备和/或诸如代表平台用户操作的控制器的自动化程序的实体的凭证。适当认证可以包括表示发送API请求的实体的授权服务账户。例如,代理305可以确定平台用户、设备和/或自动化程序具有用于发送API请求的适当凭证,并且作为响应通过集群控制平面引擎100传递API请求。代理305也可以被配置为充当负载平衡器。代理305可以为API请求301标识在API请求301中指定的集群控制平面。代理305可以将具有标识的集群控制平面的指示的API请求301传递给线程管理器310。
线程管理器310可以接收API请求以修改或读取一个或多个目标节点的集群状态。线程管理器310可以从代理305、316接收API请求301,如上所述,代理305、316可以被配置为认证API请求301并标识请求租户。
如本文所述,集群控制平面315可以包括零个或更多个API服务器实例,诸如API服务器实例319、317。API服务器实例319、317可以作为由线程管理器310引发的一个或多个相应线程被执行。线程管理器310被配置为引发、管理和销毁线程。例如当在诸如2分钟的预定时间段之后没有针对对应于该集群控制平面的租户的传入API请求时,集群控制平面可以包括零个API服务器实例。
本说明书中的线程可以指操作***线程或软件线程。两种类型的线程都可以配置为执行进程的一个或多个指令。进程是指由计算平台105的一个或多个节点执行计算机程序。
诸如用户级别线程的软件线程可以并发地执行一个或多个编程指令,并且通常比操作***线程更容易生成和在它们之间切换,操作***线程在执行进程的节点的内核或操作***级别运行。软件线程可以编程方式生成,诸如使用为并发编程配置的编程语言。多个软件线程可以作为单个操作***线程的一部分运行。如下所述,集群控制平面引擎100可以在单个操作***线程上引发多个软件线程以执行请求租户的集群控制平面。
所引发的线程可以并行运行并共享存储器。因此,线程可能遇到并发问题,诸如尝试同时读取/写入存储器中同一位置的数据。操作***线程可以包括内核级别线程,软件线程可以包括用户级别线程,当出现并发问题时,它们两者的行为可能不同。例如,当内核级别“阻塞”——例如,由于另一线程当前正在写入该位置而无法访问存储器中的某个位置——时,内核级别线程可以***作***切换到另一内核级别线程。
线程管理器310可以针对每个集群控制平面315和327引发一个或多个线程来执行API服务器实例。线程相对于进程通常低廉得多并且更容易引发或销毁。随着访问集群350、351的租户数量扩大或收缩,线程管理器310可以适应性地引发或销毁对应于不同集群控制平面的更多或更少API服务器实例的线程。线程管理器310可以销毁执行用于空闲集群控制平面的API服务器实例的软件线程,然后随后根据需要引发新线程,而不是为每个集群控制平面维护专用的计算资源。如果集群控制平面的所有API服务器实例的线程都被销毁,那么对应集群控制平面是挂起的,直到进一步的请求使附加的API服务器实例被引发,如本文所述。平台105可以存储集群控制平面的配置数据,以在接收到来自租户的请求时用作为租户的新集群控制平面执行API服务器实例的一部分。
与为处理来自不同租户的传入API请求所需的每个集群控制平面的专用分离多个集群控制平面节点相比,为多个API服务器实例引发和销毁线程通常在计算上更便宜。一个原因是因为线程管理器310可以按需引发和销毁线程,这意味着当租户当前没有在诸如两分钟的预定空闲时间段内发送API请求时,则线程管理器310销毁线程并替代地允许新线程代替它们执行来为激活的租户提供服务。当传入API请求以其集群控制平面先前因空闲而被销毁的租户的节点为目标时,线程管理器310可以引发新线程来为该租户的集群控制平面执行新的API服务器实例。从平台用户的角度来看,集群控制平面始终可用。然而,如果平台用户的租户空闲,则集群控制平面引擎100、101中没有一个可能正在执行集群控制平面的API服务器实例。相反,资源被释放用于为其他租户的集群控制平面执行API服务器实例。
与为平台105上的每个添加的租户运行附加的API服务器实例相关联的边际成本可能为零或很少。边际成本可以指与服务平台105的附加的租户相关联的计算资源。因为线程被按需引发,平台105不在给定租户的平台用户的API请求的预期上浪费空闲资源。在传统***中,实现多租户的平台可以分配固定的最小量的计算资源,诸如一到三个集群控制平面节点,以实现每个租户的相应集群控制平面。对于较小的租户,这个固定的最小值经常被浪费,至少因为被发送到实现较小租户的集群控制平面的集群控制平面节点和从该集群控制平面节点发送的API请求和响应的业务通常不需要平台所给的固定的最小分配。此外,当租户处于空闲时,租户未充分利用计算资源来执行相应的集群控制平面。此外,在不同租户的集群控制平面可以以其他方式安全地彼此共享存储或工作的情况下,位于分离的控制平面节点上阻止这种共享。能够在集群控制平面之间安全地存储数据可以包括为一个集群控制平面存储不可变数据使得数据不能被另一集群控制平面修改的能力。
一个或多个引发的线程可以包括执行多个软件线程的操作***线程。可以廉价地生成软件线程,例如每个执行线程的进程有200,000个线程或更多。集群控制平面引擎100可以实现具有特殊属性的软件线程,以减轻在分离的线程的执行期间由并发问题引起的阻塞。例如,软件线程可以被配置为跨一个或多个通道传送数据。通道是被配置为存储线程之间传送的数据的数据结构。通道可以配置为接受或传输特定类型的数据。一些线程可以配置为将该类型的数据发送到通道,而其他通道则配置为从通道读取该类型的数据。
线程管理器310可以利用廉价的软件线程,同时仍然维持以更通常与操作***线程——特别是内核级别线程——相关联的方式响应阻塞行为的灵活性。例如,平台105可以被配置为引发和执行软件线程作为Go编程语言中的goroutine,其可以包括调度不同goroutine的执行。
线程管理器310可以确定对于在目标节点的API请求中指定其配置数据将被修改的节点、舱或集群不存在集群控制平面。这可能发生,例如,因为租户空闲超过预定时间段。作为响应,线程管理器310可以销毁用于执行先前用于响应来自空闲租户的平台用户的API请求301的现有集群控制平面的线程。线程管理器310可以引发一个或多个线程来执行集群控制平面并修改如在API请求中指定的集群的状态。作为这样做的一部分,集群控制平面可以生成一个新的API服务器实例。API服务器实例的生成在下面更详细地描述。
集群控制平面引擎100可以被实现为单个进程或被实现为同时多个进程。集群控制平面引擎100被实现为的进程的数量取决于实现集群控制平面引擎100的硬件的性质。进程的数量可以取决于例如执行集群控制平面引擎100的底层硬件同时运行多个进程的能力。值得注意的是,一旦多个进程的数量和计算资源被分配给一个或多个进程,执行根据本公开各方面的集群控制平面引擎100的总分配不随着被服务的租户的数量而变化。相反,分配给集群控制平面引擎100的计算资源可以与接收到的API请求的数量成比例地变化。至少因为与管理附加租户相关联的固定成本,集群控制平面引擎100通常需要比管理附加租户所需的更少的附加计算资源来处理更多请求,如本文所述。
请求处置引擎330可以接收由代理305、316转发的API请求301。请求处置引擎330可以将API请求转发到其租户在请求中被标识的适当的实例。请求处置引擎330可以确定由集群控制平面引擎100执行的当前数量的API服务器实例是否可以处置传入请求。请求处置引擎330可以与线程管理器310通信以使线程管理器310响应于接收到API请求的速率来引发或销毁附加或更少的API服务器实例的线程。
计算平台105被配置为确定控制器320的控制器是否可用于对API请求中指定的集群的状态执行修改以服务于API请求301。控制器320可以在与集群控制平面引擎相同或不同的服务器计算设备上实现。如图3所示,控制器320在服务器计算设备311上实现。然而,应当理解,通常每个控制器可以在一个或多个位置的一个或多个设备上实现并被耦合到计算平台105。
一个或多个控制器可以负责为给定租户启动集群控制平面。在此示例中,API请求301可以来自特定租户的平台用户。如果计算平台105确定控制器可用并且正在监测对应于集群控制平面的集群的状态。监测控制器可以执行一个或多个动作以使得由控制器监测的集群根据API请求301被修改,如本文所描述的。在进行必要的修改之后,集群的当前状态的状态信息,诸如由控制器修改的资源的状态,可以被写回对应于API请求301源自的特定租户的集群控制平面。
控制器320可以被配置为观察集群350、351的当前状态,并使集群的状态根据API请求301改变。
控制器320可以作为控制环路而操作,用于监测集群350、351的一些或所有与其状态对应的特征,诸如正在运行的应用的数量、每个应用的版本、正在运行的容器的数量等。控制器320可以根据API请求301操作以使集群350、351操作到所需状态。为此,控制器320可以执行各种不同的功能,例如初始化具有可用计算资源的节点,管理集群350、351中存在的节点,和/或生成或销毁运行不同应用的容器。
例如,API请求301可以包括清单,该清单指定三个容器在集群350中的节点上运行特定应用的副本。控制器320中的至少一个控制器可以监测集群350。如果控制器检测到三个容器中的一个已经崩溃,控制器可以查询集群350的最新清单并执行动作以将集群350的当前状态带到清单中指定的期望状态,诸如生成运行应用的新容器作为崩溃的容器的替代品。
控制器320可以被配置为执行特定任务,例如作为云控制器或API控制器。不同的控制器可以对应于API服务器实例319的不同组件。例如,云控制器管理允许集群350、351的特定于云的控制逻辑链接到API服务器实例319以执行平台API定义的功能。API控制器可以被配置为执行来自集群350、351的被调用的平台API功能。
作为执行被调用的平台API功能的一部分,API控制器可以被配置为执行与被调用的API功能对应的一个或多个操作,这些被调用的API功能被声明地定义并且要执行的其对应操作未由API的调用单独指定。例如,如本文所述的平台API可以包括一个或多个面向用户的API。面向用户的API可以被声明式定义。响应于接收。另一方面,控制器320的API控制器可以被配置为执行一个或多个命令式API功能调用,其中指定了API控制器要采取的具体操作。在一些实施方式中,API控制器被配置为将声明性功能调用转换成一个或多个命令式功能调用,并执行与命令式功能调用对应的一个或多个操作。
集群控制平面引擎100可以维护负责将新分配的节点注册到API实例的控制器。工作者节点可以被分配给新租户,或添加到先前分配给现有租户的工作者节点。
控制器320可以由集群控制平面引擎100维护为控制器池。如本文所述,控制器320可以监测由集群控制平面引擎100的集群控制平面315、327管理的集群的状态。此外,控制器320可以监测由对集群控制平面的传入API请求所做的改变。
云计算平台105可以周期性地监测控制器320以确定是否有任何控制器空闲运行超过预定时间段。作为响应,集群控制平面引擎100可以取消指派一个或多个控制器并将控制器返回到池中。作为取消指派的一部分,云计算平台105可以销毁运行取消指派的控制器的线程。此外,例如当线程管理器310引发用于新集群控制平面的线程时,云计算平台105还可以指派一个或多个控制器用于监测集群。
在一些实施方式中,线程管理器310不销毁执行取消指派的控制器的线程,而是使线程可用作池中的控制器。在这些实施方式中,控制器可以被重新旨在修改不同目标节点的集群状态,而无需销毁和引发新线程。例如,一些API请求可能来自具有同一集群中的目标节点的不同租户。线程管理器310可以使控制器修改包含不同API请求中以其为目标的相应节点的集群的状态,而不是完全销毁执行控制器的线程。
线程管理器310可以被配置为在API请求被处理之后自动销毁正在执行的线程,并且生成响应302。在一些实施方式中,线程管理器310将对应于集群控制平面315和API服务器实例319的数据保存到存储器预定时间段,并且在销毁执行服务于API请求301的控制器的线程之前等待直到该预定时间段过去。保存的数据可以是一个或多个后来引发的线程开始利用API服务器实例319执行集群控制平面315所需的数据。通过等待预定时间段,诸如两分钟,线程管理器310可以通过减少初始化集群控制平面315和API服务器实例319所需的时间来潜在地节省处理周期,因为这样做的数据之前已由线程管理器310保存到存储器中。
作为为租户执行集群控制平面的一部分,线程管理器310被配置为生成平面的API服务器实例。API服务器实例是API服务器软件的修改副本。API服务器软件指由计算平台105根据平台API实现的用于接收和处理来自用户计算设备的请求的一个或多个服务,诸如一个或多个应用的一部分。
通常,API服务器软件被配置有适当的子例程、数据结构和软件,以促进计算平台105的用户计算设备和服务器计算设备之间的通信。计算平台105可以维持软件的原始版本或主版本,并且集群控制平面引擎100可以部署一个或多个API服务器实例作为生成附加集群控制平面的一部分。例如,集群控制平面引擎100可以分支API服务器软件,根据需要修改分支的副本,并将分支的和修改的副本部署为API服务器软件的分离实例。修改的副本可以被编译为一个或多个二进制文件,并与线程管理器310一起执行。例如,修改的API服务器实例的二进制可以被包括在耦合到被配置为执行线程管理器310的处理器的存储器中作为线程管理器310的二进制的一部分。
通常,API服务器软件的修改是用于促进多个租户的集群控制平面的线程安全操作的修改。例如当特定租户正在发送待处理的API请求时,修改的API服务器软件的实例可以由集群控制平面引擎100作为一个或多个线程来执行并且可以对应于该租户。
当线程管理器310为集群控制平面引发对应于新API服务器实例的线程时,线程管理器310可以复制对应于租户的已编译修改服务器实例,并用一个或多个线程执行该实例。如本文所述,修改的服务器实例可以应用由租户指定的配置数据,以根据为促进多租户操作而进行的修改来执行API服务器软件。
下面描述集群控制平面引擎100如何修改API服务器实例319。修改可以作为适配当前未配置用于服务多于一个租户的预先存在的计算平台的一部分来执行。根据本公开的方面,可以修改这种类型的预先存在的平台。修改可以包括实现如参考图1和图2所描述的集群控制平面引擎。修改还可以包括修改由平台实现的API服务器软件,用于处置由不同API定义的功能并暴露平台的用户可用的应用、服务和资源,其修改如本文所述。作为促进多租户操作的一部分,本文描述的修改提供修改以提供在不同租户之间安全地处理数据的环境。换句话说,修改提供了改变,以防止来自一个租户的数据受到在平台上为另一租户执行的操作的影响。
集群控制平面引擎100被配置为接收修改的API服务器软件的不同版本,以匹配支持对应于诸如集群350和集群控制平面315的给定集群控制平面的一个或多个集群的要求。修改可以是服务作为API服务器实例319的一部分管理的一个或多个平台API的一种或多种方式。API服务器实例319可以包括用于服务API请求的各种机制,诸如聚合器335、内置API340和定制资源定义(CRD)345。在一些实施方式中,API服务器实例319可以根据诸如包括gPRC的远程过程调用的其他技术实现一个或多个平台API,或者实现为一个或多个RESTAPI。
对API服务器实例319的修改包括对内置340的修改。内置340包括通过平台API定义和可访问的功能和资源。在一些实施方式中,集群控制平面引擎100可以修改内置340。对内置340的修改可以包括修改,所述修改包括禁用一个或多个API功能,这取决于例如租户的平台用户如何可能需要或可能不需要与平台105交互的要求。
附加的修改可以包括添加将由API服务器实例319实现的新API。新API可以例如由租户指定为由平台用户提供的API或从另一源导入的API。计算平台105可以强加这些新API的某些要求,以匹配现有API的形式和行为。
对API服务器实例319的附加修改包括定制资源定义(CRD)345。定制资源定义是对平台API的扩展。CRD 345可以定义新功能,包括增强或扩展现有或新服务或应用的功能。CRD还可以包括用于访问附加资源——如存储在与API服务器实例319通信的一个或多个设备上的服务、应用或数据——的功能。API请求301可以包括调用一个或多个功能以访问CRD345中标识的这些资源的请求。响应于由其集群对应于给定的API实例的平台用户定义或提供的不同定制资源,CRD 345可以随实例变化。作为生成新API实例的一部分,集群控制平面引擎100可以加载在指派给API实例319的诸如集群350、351的集群的容器中调用的任何CRD。
对API服务器实例319的附加修改可以包括修改API服务器实例319如何持久地存储对应于每个租户的数据。API服务器可以被配置持久存储器来存储数据。但是,如果API服务器尚未配置为针对多租户,则可以配置API服务器实例,以便在持久存储器中分离和隔离与发送API请求的每个租户对应的数据。在多租户设置中,与每个租户对应的数据的分离和隔离对于维护每个租户的平台的服务质量以及防止一个租户的行为干扰另一租户可能很重要。
作为另一修改,集群控制平面引擎100可以实现存储器的共享缓存325。共享缓存325可以是持久存储和诸如RAM的其他类型的存储器的组合。在一些实施方式中,云计算平台105可以被配置为修改现有缓存,诸如在不实现多租户的计算平台上,如本文所述。一般而言,共享缓存325可以存储跨API服务器实例318、319使用的不可变数据。通过将不可变数据存储在共享缓存中,与将离散量的缓存存储器分配给每个API服务器实例318、319相比,集群控制平面引擎100可以减少存储器使用。共享缓存315的使用还可以减少为每个API服务器实例单独分配但未有效使用的缓存存储器的未充分利用。因为集群控制平面315只能将不可变数据保存到共享缓存325,所以一个API服务器实例的数据被另一API服务器实例改变的风险被减少或消除,即使当API服务器实例对应于不同租户的集群控制平面时。
当前执行的集群控制平面,诸如集群控制平面315,可以以对至少部分地在集群控制平面引擎100上实现的所有集群控制平面相互理解的格式将数据保存到共享缓存325。对象可以包括有关控制平面所理解的资源类型的信息,包括API图式(schema);文档;静态web、内容;不可变的、全局可见的对象;等。
API服务器实例319的控制器,诸如由计算平台105实现的专门配置的控制器,可以被配置为计算服务器实例特定数据的散列或其他唯一标识符,并将数据保存到共享缓存325。如果稍后需要访问实例特定的数据,API服务器实例319的控制器可以从共享缓存325获取数据,并验证所获取数据的计算散列以确定它是否与最初保存数据时预先计算的散列匹配。
例如通过要求用于保存到缓存325的数据的特定对象类型,诸如特定图式或模板,共享缓存325可以强制保存到缓存的数据的完整性。换言之,对于要保存的API服务器实例特定数据,数据必须以对象类型指定的形式,例如平台API中定义的形式。以此方式,共享缓存325可以减轻格式错误的数据潜在地破坏或销毁缓存325中的数据。
其他类型的数据不被存储在共享缓存325中,并且可以被存储在耦合到服务器计算设备115的其他存储设备中。例如,集群控制平面315可以被配置为被通知集群350、351中各种项目的状态改变,以及基于改变来更新存储在与共享缓存325共享缓存325分离的存储器中存储的对象。集群控制平面的配置数据可以包括集群350、351的配置数据,其可以包括与集群控制平面的租户相关联的集群的当前状态的指示。与共享缓存325分离存储的其他类型的数据包括用于内置和CRD的API定义,它们可以与集群控制平面的配置数据一起存储在存储器中。
在一些实施方式中,API服务器实例之间的其他共享数据可以被保存到存储器中的共享位置。例如,在平台API不可变的实施方式中,每个API服务器实例可以在共享位置访问平台API,而不是维护分离的副本。
API服务器实例319还可以包括API聚合器335。聚合器335可以根据租户的API服务器软件的修改副本中反应的修改被配置为收集作为平台API的一部分实现的所有API,包括一个或多个API的扩展、修改和移除部分。聚合器335可以被配置为将接收到的API请求路由到API服务器实例319的对应组件。聚合器335可以进一步读取由API服务器实例319实现的所有API的规范。例如,如果API请求301包括调用在CRD 345中定义的功能或资源,聚合器335可以将API请求301路由到CRD 345。在一些情况下,聚合器可以将API请求路由到在服务器计算设备115外部运行的扩展API服务器,例如在另一个服务器计算设备或在工作者节点406上。
集群控制平面315可以具有它自己的数据平面,例如它可以编排容器的部署以实现请求在集群350上的部署的应用的各种服务。例如,API请求301可以包括请求在工作者节点的一个或多个容器上部署应用。
图4是与集群450通信的集群控制平面315的框图。集群450可以包括工作者节点405和一个或多个附加工作者节点406。集群450的每个节点可以运行在物理机器或虚拟机上。工作者节点405可以包括容器420和舱421,其可以包括容器A 421A和容器B 421B。工作者节点405还可以包括容器管理器422和代理424。一个或多个附加工作者节点406可以类似地包括相应的容器管理器、容器、舱和代理(未示出)。集群控制平面315可以在计算平台保留的一个或多个集群控制平面节点上实现,或者直接在服务器计算设备115上实现,如本公开中那样。
工作者节点405可以执行各种不同的应用和/或服务作为在工作者节点405的相应容器上执行的工作负载。例如,容器或容器的舱可以暴露于网络业务以执行服务。此外,集群450的工作者节点可以被组织为池的一部分。例如,工作者节点池可以是共享诸如存储器大小、附接的CPU/GPU等的一个或多个属性的一组工作者节点。在一些实例中,工作者节点池的所有工作者节点可以位于云的相同位置,其可能是相同的数据中心、数据中心内的相同区域/区域等。
执行集群控制平面315的一个或多个API服务器实例可以管理集群450的工作者节点405、406的工作负载和资源。集群控制平面315可以更新与对应API请求一致的、存储在集群450中的对象。容器管理器422可以被配置为基于来自集群控制平面315的指令来启动、停止和/或维护容器。又例如,集群控制平面315可以被配置为与工作者节点的代理——诸如代理424——通信。代理424可以被配置为管理通过网络或其他通信信道的数据的路由和流送。例如,集群450中的工作者节点的代理可以管理集群450的工作者节点之间的数据流送。
不同于在一个或多个分配的控制平面节点上执行的API服务器,集群450中工作者节点的工作负载和资源可以由作为线程执行的API服务器实例管理。API服务器实例可以根据需要被引发和销毁,这与在分配的节点上执行的API服务器不同,所述API服务器响应于传入API请求业务来启动和停止可能是昂贵的。然而,从集群450的角度来看,集群450可以与集群控制平面交互,无论它是否被实现为在一个或多个线程上执行的实例。以此方式,可以在现有平台上实施本公开的方面而不修改集群控制平面和集群之间的通信的性质。
图5是示出用于管理集群控制平面和处理修改或读取一个或多个目标节点的状态的请求的示例过程500的流程图。过程500被描述为由计算平台执行,该计算平台具有位于一个或多个物理位置并且根据本公开的各方面被编程的一个或多个服务器计算设备和一个或多个用户计算设备。例如,适当编程的实现集群控制平面引擎100的计算平台105可以执行过程500。可以以不同的顺序执行过程500的步骤505-520,其具有添加的附加步骤或删除了进程500中的如图所示的一些步骤。
平台维护505对于一个或多个计算资源集群的多个集群控制平面,其中每个集群控制平面包括API服务器的一个或多个实例。如上文参考图2至3所描述的,平台105可以包括集群控制平面引擎100,其被配置为按需维护集群控制平面并且根据接收到的API请求执行集群的状态修改。作为维护集群控制平面的一部分,集群控制平面引擎100可以分支和修改API服务器软件并运行其配置用于执行平台API的API请求的实例。
平台接收510用以修改平台的一个或多个集群的状态的API请求。如上文参考图2-4所描述的,API请求可以指定要修改或获取诸如与租户对应的工作者节点的信息的计算资源。集群控制平面引擎100可以使控制器根据接收到的API请求中的规范来监测和修改包括一个或多个目标节点的集群的状态。一些API请求可以是读取平台的一个或多个集群的当前状态的至少一部分——例如诸如特定节点或舱的一个或多个集群中的对象的当前状态——的请求。
平台标识515集群控制平面,该集群控制平面对应于在接收到的API请求中标识的租户。根据参考图3本文描述的本公开的各方面,如果集群控制平面不存在,例如因为执行集群控制平面的API服务器实例的线程由于平面租户空闲而被销毁,那么集群控制平面引擎的线程管理器可以引发新线程。
平台使标识的集群控制平面根据API请求修改520一个或多个集群的状态。作为修改包括API请求中指定的目标资源的集群状态的一部分,集群控制平面引擎100可以根据API请求中的规范标识可用的控制器以监测每个集群的状态并修改状态。控制器通常可以修改集群的状态,也可以修改由集群使用或控制的其他资源,诸如与租户对应的工作者节点。
可以实施本公开的各方面以实现以下优点中的一个或多个。对于由该平台服务的附加租户,可以以零或很小的边际成本实现多租户云计算平台。不是跨特别分配的硬件维护分离的控制平面,根据本公开的方面配置的平台可以在同一硬件上管理多个集群控制平面,并且在没有附加计算资源分配的情况下管理附加租户。空闲租户的集群控制平面可以在预定时间段后被销毁,并且可以分配新线程来在此期间服务其他API请求。
附加租户的零边际成本或小边际成本可至少归因于将多个集群控制平面作为一个或多个相应线程的管理。可以添加新线程,而无需分配附加的计算资源来维护多个集群控制平面。此外,该平台可以利用不可变数据的共享缓存来减少执行分离的集群控制平面的总体存储器要求,同时确保平台对一个租户的服务不干扰另一个的服务。
用于执行API功能的API服务器软件的实例可以根据传入API请求的数量来扩缩,而不是通过租户的数量来扩缩集群控制平面。扩缩可以通过线程的引发或销毁来完成,而不是作为每个集群控制平面的专用节点。同时,可以在适当时强制执行租户边界,这与在同一节点上执行的多个集群控制平面存在一个租户与另一租户之间的服务干扰风险的传统方法不同。
通过保持用于在计算平台上执行一个或多个API的软件的分离的实例,多个集群控制平面可以独立地提供服务不同请求,同时允许租户根据接口一致集合与平台交互。换句话说,该平台可以管理租户如何定义租户与平台之间的交互的改变,同时只为该租户而不是任何其他租户强加这些改变。
用于执行一个或多个API的软件的分离的实例也可以使对一个租户的后续修改更容易,至少因为修改可以独立于其他租户的API服务器实例的执行而进行。不同的实例可以作为分离的线程但在同一进程上执行,而不是为每个单独的租户所需的每个API服务器运行整个分离的进程。
本公开的各方面可以在数字电路、计算机可读存储介质中实现为一个或多个计算机程序,或者前述的一个或多个的组合。可以在不同类型的一个或多个处理器上执行本公开的各方面。例如,一个或多个处理器可以包括一个或多个中央处理单元(CPU)、图形处理单元(GPU)、现场可编程门阵列(FGPA)和/或专用集成电路(ASIC),诸如张量处理单元(TPU)。计算机可读存储介质可以是非暂时性的,例如作为可由云计算平台执行并存储在有形存储设备上的一个或多个指令。
计算机程序可以用任何类型的编程语言,并根据任何编程范例,诸如声明式、过程式、汇编式、面向对象的、面向数据的、函数式或命令式的来编写。可以编写计算机程序来执行一个或多个不同的功能并在计算环境内操作,诸如在物理设备、虚拟机上或跨多个设备。计算机程序还可以实现本规范中描述的由***、云提供者控制平面、模块或模型执行的功能。
在本说明书中,短语“配置为”用于与计算机***、硬件或计算机程序的一部分、模块或云提供者控制平面相关的不同场境中。当***被称为被配置为执行一个或多个第一操作时,这意味着***具有在***上适当安装的软件、固件和/或硬件,这些软件、固件和/或硬件在操作时使***执行第一操作。当一些硬件被称为被配置为执行一个或多个操作时,这意味着该硬件包括一个或多个电路,这些电路在操作时接收输入并生成根据输入的并对应于一个或多个操作的输出。当计算机程序、模块或云提供者控制平面被称为被配置为执行一个或多个操作时,这意味着该计算机程序包括一个或多个程序指令,其当由一个或多个计算机执行时,使一个或多个计算机来执行一个或多个操作。
除非另有说明,否则前述替代示例不是相互排斥的,而是可以以各种组合来实现以实现独特的优势。由于可以在不脱离权利要求所限定的主题的情况下利用上述特征的这些和其他变体和组合,因此实施例的前述描述应当以说明的方式而不是限定由权利要求所限定的主题的方式来进行。此外,本文描述的示例的提供,以及如“诸如”、“包括”等的短语,不应被解释为将权利要求的主题限制为特定示例;相反,示例旨在仅说明许多可能的实施例中的一个。
Claims (20)
1.一种***,包括:
一个或多个处理器;以及
一个或多个存储设备,所述一个或多个存储设备与所述一个或多个处理器通信,所述一个或多个存储设备存储指令,所述指令在由所述一个或多个处理器执行时使所述一个或多个处理器执行包括以下的操作:
维护多个集群控制平面,每个集群控制平面包括应用编程接口(API)服务器的软件的一个或多个相应实例,其中,每个集群控制平面被配置为接收API请求并使用所述API服务器的软件的所述一个或多个相应实例来处理所述API请求;
接收用以修改或读取计算平台的计算资源的集群的状态的API请求;以及
响应于接收所述API请求:
标识所述多个集群控制平面中的与所述API请求对应的集群控制平面,以及
使所标识的集群控制平面根据所述API请求来修改或读取所述集群的所述状态。
2.根据权利要求1所述的***,其中,使所标识的集群控制平面修改或读取所述集群的所述状态包括使所标识的集群控制平面修改与所述集群控制平面相关联的一个或多个工作者节点的执行。
3.根据权利要求1或权利要求2中的一项所述的***,其中,所述API请求是第一API请求,并且其中,所述操作进一步包括:
接收用以修改或读取所述集群的状态的第二API请求,其中,所述第二API请求指定与所述第一API请求的所述计算资源不同的计算资源;
确定所述多个集群控制平面不包括对应于在所述第二API请求中标识的租户的集群控制平面;以及
响应于所述确定,引发一个或多个线程以执行被配置为根据所述第二API请求修改所述集群的所述状态的API服务器实例。
4.根据权利要求3所述的***,其中,执行所述一个或多个相应实例的所引发的一个或多个线程被配置为跨一个或多个通道传送数据,其中,每个线程被配置为使用所述一个或多个通道在其他线程中进行通信,其中,每个通道是被配置为存储在线程之间传送的数据的数据结构。
5.根据权利要求3所述的***,其中,所述操作进一步包括:
在使所标识的集群控制平面修改或读取所述集群的所述状态之后的预定时间段之后,销毁所引发的一个或多个线程中的至少一个线程。
6.根据权利要求1至5中的一项所述的***,其中,使所标识的集群控制平面修改或读取所述集群的所述状态包括:
维护控制器池,每个控制器包括一个或多个线程,所述一个或多个线程被配置为修改或读取一个或多个集群的状态;
配置来自所述控制器池的第一控制器来修改或读取所述集群的所述状态;
从所述控制器池中移除所述第一控制器;
使所标识的集群控制平面使用所述第一控制器修改或读取所述集群的所述状态;以及
在使用所述第一控制器后销毁所述第一控制器。
7.根据权利要求1至6中的一项所述的***,其中,所述集群包括计算资源的多个离散部分,
其中,所述集群的所述多个离散部分中的每个离散部分包括资源标识符,所述资源标识符独特地标识所述集群的计算资源的该离散部分;
其中,所述API请求包括包含资源标识符的元数据;以及
其中,标识所述集群控制平面包括标识对应于资源的集群控制平面,所述资源的标识符与所述API请求的所述元数据中的所述资源标识符相匹配。
8.根据权利要求7所述的***,其中,计算资源的所述多个离散部分包括应用、服务、负载平衡器、节点、舱或容器中的至少一个。
9.根据权利要求1至8中的一项所述的***,其中,维持所述多个集群控制平面进一步包括:
将在所述多个集群控制平面中共享的数据存储在所述多个集群控制平面能够访问的存储器的共享缓存中,其中,所述数据被不可变地存储。
10.根据权利要求1至9所述的***,其中,所述多个集群控制平面中的每个对应于所述计算平台的租户,并且其中,所述操作进一步包括:
生成包括所述API服务器的实例的集群控制平面,其中,所述生成包括执行修改的API服务器的实例,所述修改的API服务器的实例使用由对应于所述集群控制平面的所述租户指定的配置来初始化。
11.根据权利要求1至10中的一项所述的***,其中,维持所述多个集群控制平面进一步包括:
在存储器的分离缓存中存储对于所述多个集群控制平面中的每个独有的相应数据,其中,存储在所述多个集群控制平面中的第一集群控制平面的所述分离缓存之一中的数据不能被所述多个集群控制平面中的第二控制平面访问。
12.一种计算机实现的方法,包括:
维护多个集群控制平面,每个集群控制平面包括应用编程接口(API)服务器的软件的一个或多个相应实例,其中,每个集群控制平面被配置为接收API请求并使用所述API服务器的软件的所述一个或多个相应实例来处理所述API请求;
接收用以修改或读取计算平台的计算资源的集群的状态的API请求;以及
响应于接收所述API请求:
标识所述多个集群控制平面中的与所述API请求对应的集群控制平面,以及
使所标识的集群控制平面根据所述API请求来修改或读取所述集群的所述状态。
13.根据权利要求12所述的方法,其中,使所标识的集群控制平面修改或读取所述集群的所述状态包括使所标识的集群控制平面修改与所述集群控制平面相关联的一个或多个工作者节点的执行。
14.根据权利要求12或权利要求13中的一项所述的方法,其中,所述API请求是第一API请求,并且其中,所述方法进一步包括:
接收用以修改或读取所述集群的状态的第二API请求,其中,所述第二API请求指定与所述第一API请求的所述计算资源不同的计算资源;
确定所述多个集群控制平面不包括对应于在所述第二API请求中标识的租户的集群控制平面;以及
响应于所述确定,引发一个或多个线程以执行被配置为根据所述第二API请求修改所述集群的所述状态的API服务器实例。
15.根据权利要求14所述的方法,其中,执行所述一个或多个相应实例的所引发的一个或多个线程被配置为跨一个或多个通道传送数据,其中,每个线程被配置为使用所述一个或多个通道在其他线程中进行通信,其中,每个通道是被配置为存储在线程之间传送的数据的数据结构。
16.根据权利要求14所述的方法,其中,所述方法进一步包括:
在使所标识的集群控制平面修改或读取所述集群的所述状态之后的预定时间段之后,销毁所引发的一个或多个线程中的至少一个线程。
17.根据权利要求12至16中的一项所述的方法,其中,使所述集群控制平面修改或读取所述集群的所述状态包括:
维护控制器池,每个控制器包括一个或多个线程,所述一个或多个线程被配置为修改或读取一个或多个集群的状态;
配置来自所述控制器池的第一控制器来修改或读取所述集群的所述状态;
从所述控制器池中移除所述第一控制器;
使所标识的集群控制平面使用所述第一控制器修改或读取所述集群的所述状态;以及
在使用所述第一控制器后销毁所述第一控制器。
18.根据权利要求12至17中的一项所述的方法,其中,所述集群包括计算资源的多个离散部分,
其中,所述集群的所述多个离散部分中的每个离散部分包括资源标识符,所述资源标识符独特地标识所述集群的计算资源的该离散部分;
其中,所述API请求包括包含资源标识符的元数据;以及
其中,标识所述集群控制平面包括标识对应于资源的集群控制平面,所述资源的标识符与所述API请求的所述元数据中的所述资源标识符相匹配。
19.根据权利要求12至18中的一项所述的方法,其中,所述API请求是第一API请求,并且其中,维护所述多个集群控制平面进一步包括:
在所述多个集群控制平面能够访问的共享存储器中存储对应于所述多个集群控制平面中的每个的所述API服务器的相应实例的不可变数据。
20.一种包括指令的一个或多个非暂时性计算机可读存储介质,所述指令在由一个或多个处理器执行时使所述一个或多个处理器执行包括以下的操作:
维护多个集群控制平面,每个集群控制平面包括应用编程接口(API)服务器的软件的一个或多个相应实例,其中,每个集群控制平面被配置为接收API请求并使用所述API服务器的软件的所述一个或多个相应实例来处理所述API请求;
接收用以修改或读取计算平台的计算资源的集群的状态的API请求;以及
响应于接收所述API请求:
标识所述多个集群控制平面中的与所述API请求对应的集群控制平面,以及
使所标识的集群控制平面根据所述API请求来修改或读取所述集群的所述状态。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/122,177 | 2020-12-15 | ||
US17/122,177 US11948014B2 (en) | 2020-12-15 | 2020-12-15 | Multi-tenant control plane management on computing platform |
PCT/US2021/042998 WO2022132233A1 (en) | 2020-12-15 | 2021-07-23 | Multi-tenant control plane management on computing platform |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116601606A true CN116601606A (zh) | 2023-08-15 |
Family
ID=77499908
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180082682.3A Pending CN116601606A (zh) | 2020-12-15 | 2021-07-23 | 计算平台上的多租户控制平面管理 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11948014B2 (zh) |
EP (1) | EP4264427A1 (zh) |
CN (1) | CN116601606A (zh) |
WO (1) | WO2022132233A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11954473B2 (en) * | 2021-09-20 | 2024-04-09 | Microstrategy Incorporated | Deployment architecture for multi-tenant cloud computing systems |
US20230105105A1 (en) * | 2021-10-06 | 2023-04-06 | Numecent Holdings, Inc. | User environment management |
US11861342B2 (en) | 2022-01-28 | 2024-01-02 | Microstrategy Incorporated | Enhanced cloud-computing environment deployment |
US11853808B2 (en) * | 2022-02-09 | 2023-12-26 | harpoon Corp. | Visual cluster deployment and operation system and method |
US11943292B2 (en) * | 2022-07-06 | 2024-03-26 | International Business Machines Corporation | Extend controller for multi-tenancy |
US11848857B1 (en) * | 2022-07-11 | 2023-12-19 | Red Hat, Inc. | Dynamic API gateway routing based on request metadata |
WO2024019791A1 (en) * | 2022-07-20 | 2024-01-25 | Vmware, Inc. | Sharing network manager between multiple tenants |
US11895238B1 (en) * | 2022-08-15 | 2024-02-06 | Expel, Inc. | Systems and methods for intelligently constructing, transmitting, and validating spoofing-conscious digitally signed web tokens using microservice components of a cybersecurity threat mitigation platform |
CN115390719B (zh) * | 2022-09-07 | 2023-09-19 | 中移互联网有限公司 | 聊天机器人消息页面菜单管理方法及电子设备、存储介质 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9977690B2 (en) * | 2016-05-23 | 2018-05-22 | Red Hat Israel, Ltd. | Hypervisor-visible guest thread management |
US20200106696A1 (en) * | 2017-01-31 | 2020-04-02 | The Mode Group | High performance software-defined core network |
US20190068466A1 (en) * | 2017-08-30 | 2019-02-28 | Intel Corporation | Technologies for auto-discovery of fault domains |
US10642650B2 (en) * | 2017-12-13 | 2020-05-05 | Juniper Networks, Inc. | Multi-threaded route processing |
US10986479B2 (en) * | 2018-01-17 | 2021-04-20 | Micro Focus Llc | Service management and provisioning for tenant service instances |
US11558311B2 (en) * | 2020-01-08 | 2023-01-17 | Amazon Technologies, Inc. | Automated local scaling of compute instances |
US20210271513A1 (en) * | 2020-02-28 | 2021-09-02 | Sap Se | Generic peer-to-peer platform as a service framework |
US11347552B2 (en) * | 2020-05-29 | 2022-05-31 | EMC IP Holding Company LLC | Resource monitoring and allocation using proportional-integral-derivative controllers |
US11188354B1 (en) * | 2020-09-23 | 2021-11-30 | International Business Machines Corporation | Sharing cached class data in a containerized environment |
-
2020
- 2020-12-15 US US17/122,177 patent/US11948014B2/en active Active
-
2021
- 2021-07-23 WO PCT/US2021/042998 patent/WO2022132233A1/en active Application Filing
- 2021-07-23 CN CN202180082682.3A patent/CN116601606A/zh active Pending
- 2021-07-23 EP EP21759446.4A patent/EP4264427A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4264427A1 (en) | 2023-10-25 |
WO2022132233A1 (en) | 2022-06-23 |
US11948014B2 (en) | 2024-04-02 |
US20220188170A1 (en) | 2022-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11948014B2 (en) | Multi-tenant control plane management on computing platform | |
US11507364B2 (en) | Cloud services release orchestration with a reusable deployment pipeline | |
US11182196B2 (en) | Unified resource management for containers and virtual machines | |
US11157304B2 (en) | System for peering container clusters running on different container orchestration systems | |
US10896064B2 (en) | Coordinated, topology-aware CPU-GPU-memory scheduling for containerized workloads | |
US10776099B2 (en) | Release orchestration for cloud services | |
KR20240013827A (ko) | 컨테이너화된 환경에서 클러스터의 라이브 마이그레이션 | |
US8819683B2 (en) | Scalable distributed compute based on business rules | |
CN112104723B (zh) | 一种多集群的数据处理***及方法 | |
US9906589B2 (en) | Shared management service | |
US11853816B2 (en) | Extending the Kubernetes API in-process | |
US9576000B2 (en) | Adaptive fragment assignment for processing file data in a database | |
US8645660B2 (en) | Automatic allocation of data replicas | |
US11599397B2 (en) | Collaboration service to support cross-process coordination between active instances of a microservice | |
US9697028B1 (en) | Directed placement for request instances | |
CN113204353B (zh) | 一种大数据平台组件部署方法及装置 | |
CN112256414A (zh) | 一种连接多种计算存储引擎的方法及*** | |
CN116450355A (zh) | 一种多集群模型训练方法、装置、设备及介质 | |
WO2015179509A1 (en) | High-performance computing framework for cloud computing environments | |
CN115686805A (zh) | Gpu资源共享的方法和装置、调度gpu资源共享的方法和装置 | |
CN111459619A (zh) | 一种基于云平台实现服务的方法和装置 | |
US20220391749A1 (en) | Method and system for discovery of inference servers in a machine learning serving infrastructure | |
US20220382601A1 (en) | Configuration map based sharding for containers in a machine learning serving infrastructure | |
US20220391748A1 (en) | Method and system for application programming interface based container service for supporting multiple machine learning applications | |
US11948010B2 (en) | Tag-driven scheduling of computing resources for function execution |
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 |