掌桥专利:专业的专利平台
掌桥专利
首页

用于工作负载执行的动态缩放

文献发布时间:2023-06-19 19:28:50


用于工作负载执行的动态缩放

背景技术

本发明总体上涉及数据管理,并且更具体地涉及动态地缩放云环境中的工作负载执行。

云计算是指使用托管在公共网络(例如,互联网)上的远程服务器的网络来递送信息计算服务(即,云服务)而不是在本地服务器上如此进行的实践。通过其将这些云服务提供给服务消费者(即,云服务消费者)的网络架构(例如,包括硬件和软件的虚拟化信息处理环境)被称为“云”,可以是公共云(例如,公开提供给云服务消费者的云服务)或私有云(例如,仅向企业内的云服务消费者的指定组提供云服务的私有网络或数据中心),或社区云(例如,向有限的云服务消费者集合(例如,向具有特定状态/区域或状态/区域集合的机构)公开提供的云服务集合),专用/托管的私有云,或其他新兴云服务递送模型。云计算的基础意图是向云服务消费者提供对计算资源和信息技术(IT)服务的容易的、可缩放的访问。

云服务可以广泛地分成四个类别:基础设施即服务(IaaS)、平台即服务(PaaS)、软件即服务(SaaS)、和管理服务。基础设施即服务是指通过其提供云服务(例如,虚拟服务器空间、网络连接、带宽、IP地址、负载平衡器等)的虚拟化计算基础设施。云中的平台即服务是指托管在云上的一组软件和产品开发工具,用于使开发者(即,一种类型的云服务消费者)能够使用云来构建应用和服务。软件即服务是指被托管并且在云服务消费者经由云按需可用的应用。管理服务是指诸如备份管理、远程系统管理、应用管理、安全服务等的服务,其由管理服务提供商为任何云服务启用。

一般而言,云服务具有将其与传统托管服务区分开来的三个不同的特征。这些不同特性中的第一个是按需(例如,按分钟或小时)卖给服务消费者。这些不同特性中的第二个是它是动态的(例如,服务消费者可以在任何给定的时间点具有与他们想要的一样多或少的服务)。这些不同特性中专门应用于公共云而非私有或混合云的第三个特性是服务完全由云服务提供商管理(例如,服务消费者仅需要适当配备的客户端设备和网络连接)。该第三功能与公共云特别相关。然而,私有云可以由内部IT部门或通过ITO(IT外包)合同来管理。在这些示例中,I&O(基础设施和操作)管理员充当云提供者,并且因此,该第三功能将具有类似的相关性。

商业和IT用户迅速采用云作为使他们的组织更有效并且节省成本的方式。随着这一机会到来,企业面临着新的痛点和重大风险。例如,商业用户快速投资于他们自己的云能力(例如,IaaS、PaaS和SaaS)以满足商业需要,而应用开发者想要快速移动而不涉及IT来提供工具和环境。这些动作正在对IT管理造成重大威胁,IT管理担心来自不受限制/非计划的云扩展的结果的诸如管理成本、扣费、容量和资源的考虑。

发明内容

本发明的实施例涉及用于动态地缩放云环境中的工作负载执行。一种非限制性示例计算机实现的方法,包括由控制器接收包括一个或多个任务的工作负载,生成包括第一边车容器的第一Pod,基于所述工作负载和所述Pod的一个或多个资源分配度量为所述第一Pod生成一个或多个短暂容器,在所述一个或多个短暂容器中执行所述一个或多个任务;监视所述Pod的所述一个或多个资源分配度量;以及基于所述Pod的所述一个或多个资源分配度量和所述工作负载在所述第一Pod中生成至少一个新的短暂容器。

本发明的其他实施例在计算机系统和计算机程序产品中实现上述方法的特征。

通过本发明的技术实现了额外的技术特征和益处。本发明的实施例和方面在本文中详细描述,并且被认为是所要求保护的主题的一部分。为了更好地理解,参考具体实施方式和附图。

附图说明

在本说明书的结论处的权利要求书中特别指出并且清楚地要求保护本文描述的独占权的细节。从以下结合附图进行的详细描述中,本发明的实施例的前述和其他特征和优点将变得显而易见,在附图中:

图1示出了根据本发明的一个或多个实施例的云计算环境;

图2示出了根据本发明的一个或多个实施例的抽象模型层;

图3示出了用于实施本发明的一个或多个实施例的计算机系统的框图;

图4示出了使用完全虚拟化和OS级虚拟化的计算节点;

图5示出了使用完全虚拟化和OS级虚拟化的计算节点;

图6示出了根据本发明的一个或多个实施例的Kubernetes Pod的框图;

图7示出了根据本发明的一个或多个实施例的管理Pod的Pod管理器资源的框图;

图8示出了根据本发明的一个或多个实施例的Pod管理器和水平Pod自动定标器的框图;

图9示出了根据本发明的一个或多个实施例与Pod管理器和工作负载队列通信的控制器模块的框图;

图10示出了根据本发明的一个或多个实施例的用于动态地缩放云环境中的工作负载执行的系统;以及

图11示出了根据本发明的一个或多个实施例的用于动态地缩放云环境中的工作负载执行的方法的流程图。

本文所示出的图是说明性的。在不偏离本发明的精神的情况下,可以对这里所描述的图或操作有许多变化。例如,可以以不同的顺序执行动作,或者可以添加、删除或修改动作。而且,术语“耦接”及其变形描述了在两个元件之间具有通信路径,并且不暗示元件之间的直接连接,而在它们之间没有中间元件/连接。所有这些变型被认为是说明书的一部分。

具体实施方式

本发明的一个或多个实施例提供了用于动态地缩放云环境中的工作负载执行的系统和方法。云环境可以是管理容器化的工作负载和服务的平台,例如,Kubernetes。

Kubernetes代表用户工作负载编排计算、联网和存储基础设施。本发明的各方面提供用于缩放Kubernetes平台中的执行环境(Pod)的系统和方法。Pod是Kubernetes的基本结构单元-Kubernetes对象模型中创建和部署的最小和最简单的单元。Pod表示分布式计算环境(例如,计算机群集)中的运行进程。Pod封装应用容器(或在一些情况下封装多个容器),并且包括存储资源、唯一网络IP以及管理容器应如何运行的选项。Pod表示部署单元:Kubernetes中的应用的单个实例,其可由单个容器或紧密耦合且共享资源的少量容器组成。本发明的进一步方面允许基于为Pod监视的资源分配度量在Pod内创建多个容器。这些多个容器允许并行执行任务,而不需要为每个任务连续生成新Pod和/或容器。进一步,对于较大工作负载,可以生成带有这些多个容器的附加的pod,这些较大工作负载被Pod管理器和控制器管理,以并行执行多个任务。当资源可用改变时,可创建和/或终止Pod和/或容器。这允许通过缩放Pod和容器来并行地执行任务来最大化任务执行。

新兴的信息技术(IT)交付模型是云计算,通过该云计算,共享资源、软件和信息通过互联网按需提供给计算机和其他设备。云计算可以显著地降低IT成本和复杂度,同时改进工作负载优化和服务交付。通过这种方法,应用实例可被托管并且可从通过HTTP上的常规Web浏览器可访问的基于互联网的资源获得。示例应用可以是提供一组公共消息收发功能(诸如电子邮件、日历、联系人管理和即时消息收发)的应用。用户然后将通过互联网直接访问该服务。使用这个服务,企业会将其电子邮件、日历、和/或协作基础设施放置在云中,并且最终用户将使用适当的客户端来访问他或她的电子邮件,或执行日历操作。

云计算资源典型地被容纳在大型服务器群中,这些大型服务器群运行一个或多个网络应用程序,典型地使用虚拟化架构,其中应用程序在虚拟服务器或所谓的“虚拟机”(VM)内部运行,该虚拟服务器或所谓的“虚拟机”被映射到数据中心设施中的物理服务器上。虚拟机通常在管理程序的顶部运行,管理程序是向虚拟机分配物理资源的控制程序。现代管理程序经常使用硬件辅助的虚拟化,其通过使用虚拟化特定的硬件能力(主要来自主机CPU)来提供有效和全部虚拟化。

操作系统(OS)级虚拟化是另一种虚拟化方法。OS级虚拟化允许经由操作系统内核对多个隔离的用户空间实例(其通常被称为容器)的支持来划分计算机的资源。所以,这种虚拟化方法通常被称为基于容器的虚拟化。对于终端用户而言,容器可能无法与单独的机器区分开。基于容器的虚拟化被广泛应用在云环境中。例如,在许多今天的数据中心中,工作负载在容器内部运行。容器可以提供更好的灵活性和编排以改变来自工作负载的需求。在基于容器的虚拟化中使用许多技术。这些技术包括例如下文讨论的命名空间和cgroups。

在代表性容器云计算机环境中,主机执行操作系统,如Linux内核。如上所述,术语“容器”是指用于使用单个操作系统内核在控制主机上运行隔离的计算工作负载(容器)的OS级虚拟化机制。该方法有效地将单个操作系统管理的资源划分成隔离组,以更好地平衡隔离组之间对资源使用的冲突需求。与其他类型的虚拟化相比,既不需要指令级仿真也不需要即时编译。此外,容器可运行核心CPU本地的指令,而无需任何特殊解译机制。通过提供创建和输入容器的方式,操作系统给予应用在单独的机器上运行而同时共享许多底层资源的假象。

应当理解的是,尽管本披露包括关于云计算的详细描述,但本文所叙述的教导的实现不限于云计算环境。相反,本发明的实施例能够结合现在已知的或以后开发的任何其他类型的计算环境来实现。

云计算是一种服务交付模型,用于使得能够方便地、按需地网络访问可配置计算资源(例如,网络、网络带宽、服务器、处理、存储器、存储、应用、虚拟机和服务)的共享池,所述计算资源可以以最小的管理努力或与服务提供商的交互来快速配设和释放。该云模型可以包括至少五个特性、至少三个服务模型和至少四个部署模型。

特征如下:

按需自助服务:云消费者可以根据需要自动地单方面地配设计算能力,如服务器时间和网络存储,而无需与服务的提供商进行人类交互。

广泛的网络接入:能力可通过网络获得并且通过促进异构瘦客户机平台或厚客户机平台(例如,移动电话、膝上计算机、和PDA)使用的标准机制来访问。

资源池:提供者的计算资源被池化以使用多租户模型来服务多个消费者,其中不同的物理和虚拟资源根据需要动态地分配和重新分配。存在位置独立性的感觉,因为消费者通常不具有对所提供的资源的确切位置的控制或了解,但可能能够以较高抽象级别(例如,国家、州或数据中心)指定位置。

快速弹性:可以快速和弹性地提供能力(在一些情况下,自动地)以快速缩小和快速释放以快速放大。对于消费者而言,可用于供应的能力通常显得不受限制并且可以在任何时间以任何数量购买。

测量服务:云系统通过在适合于服务类型(例如,存储、处理、带宽、和活动用户账户)的某个抽象级别处利用计量能力来自动控制和优化资源使用。可以监视、控制和报告资源使用,为所利用的服务的提供者和消费者提供透明度。

基础设施即服务(IaaS):提供给消费者的能力是提供处理、存储、网络、和其他基本计算资源,其中消费者能够部署和运行任意软件,其可以包括操作系统和应用程序。消费者不管理或控制底层云基础设施,而是具有对操作系统、存储、所部署的应用的控制以及对所选联网组件(例如,主机防火墙)的可能受限的控制。

部署模型如下:

私有云:云基础架构仅为组织运作。它可以由组织或第三方管理,并且可以存在于场所内或场所外。

社区云:云基础设施由若干组织共享并且支持具有共享关注(例如,任务、安全要求、策略、和合规性考虑)的特定社区。它可以由组织或第三方管理,并且可以存在于场所内或场所外。

公共云:使云基础设施对普通公众或大型行业组可用并且由出售云服务的组织拥有。

混合云:云基础设施是两个或更多个云(私有、社区或公共)的组合,这些云保持唯一实体但通过使数据和应用能够移植的标准化或专有技术(例如,用于云之间的负载平衡的云突发)绑定在一起。

云计算环境是面向服务的,集中于无状态、低耦合、模块化和语义互操作性。云计算的核心是包括互连节点网络的基础设施。

现在参见图1,示出了说明性云计算环境50。如图所示,云计算环境50包括云消费者使用的本地计算设备可以与其通信的一个或多个云计算节点10,本地计算设备诸如例如个人数字助理(PDA)或蜂窝电话54A、台式计算机54B、膝上型计算机54C和/或汽车计算机系统54N。节点10可彼此通信。它们可以物理地或虚拟地分组(未示出)在一个或多个网络中,诸如如上所述的私有云、社区云、公共云或混合云、或其组合。这允许云计算环境50提供基础设施、平台和/或软件作为云消费者不需要为其维护本地计算设备上的资源的服务。应当理解,图1中所示的计算装置54A-N的类型仅旨在是说明性的,并且计算节点10和云计算环境50可通过任何类型的网络和/或网络可寻址连接(例如,使用网络浏览器)与任何类型的计算机化装置通信。

现在参见图2,示出了由云计算环境50(图1)提供的一组功能抽象层。应提前理解,图2中所示的组件、层和功能仅旨在是说明性的,并且本发明的实施例不限于此。如所描述,提供以下层和对应功能:

硬件和软件层60包括硬件和软件组件。硬件组件的示例包括:大型机61;基于RISC(精简指令集计算机)架构的服务器62;服务器63;刀片服务器64;存储设备65;以及网络和联网组件66。在一些实施例中,软件组件包括网络应用服务器软件67和数据库软件68。

虚拟化层70提供抽象层,从该抽象层可以提供虚拟实体的以下示例:虚拟服务器71;虚拟存储器72;虚拟网络73,包括虚拟专用网络;虚拟应用和操作系统74;以及虚拟客户端75。

在一个示例中,管理层80可以提供以下描述的功能。资源供应81提供用于在云计算环境内执行任务的计算资源和其他资源的动态采购。计量和定价82在云计算环境内利用资源时提供成本跟踪,并为这些资源的消费开账单或发票。在一个示例中,这些资源可以包括应用软件许可证。安全性为云消费者和任务提供身份验证,以及为数据和其他资源提供保护。用户门户83为消费者和系统管理员提供对云计算环境的访问。服务水平管理84提供云计算资源分配和管理,使得满足所需的服务水平。服务水平协议(SLA)规划和履行85提供云计算资源的预安排和采购,根据该SLA预期该云计算资源的未来要求。

工作负载层90提供可以利用云计算环境的功能的示例。可以从该层提供的工作负载和功能的示例包括:地图和导航91;软件开发和生命周期管理92;虚拟课堂教育交付93;数据分析处理94;事务处理95;以及用于工作负载执行的动态缩放96。

参考图3,示出了用于实施本文的传授内容的处理系统300的实施例。处理系统300可以实现为计算节点10。此外,系统300的元件的一些或全部功能可以实现为云50的节点10(在图1和2中示出)。云计算节点10仅仅是合适的云计算节点的一个示例,并不旨在对本文所述的本发明的实施例的使用或功能的范围提出任何限制。在该实施例中,系统300具有一个或多个中央处理单元(处理器)21a、21b、21c等。(统称为或通称为处理器21)。在一个或多个实施例中,每个处理器21可以包括精简指令集计算机(RISC)微处理器。处理器21经由系统总线33耦合到系统存储器34和不同其他组件。只读存储器(ROM)22耦合到系统总线33,并且可以包括基本输入/输出系统(BIOS),其控制系统300的某些基本功能。

图3进一步示出了耦接至系统总线33的输入/输出(I/O)适配器27和网络适配器26。I/O适配器27可以是与硬盘23和/或磁带存储驱动器25或任何其他类似组件通信的小型计算机系统接口(SCSI)适配器。I/O适配器27、硬盘23和磁带存储设备25在本文中统称为大容量存储设备24。用于在处理系统300上执行的操作系统40可以存储在大容量存储设备24中。网络适配器26将总线33与外部网络36互连,使得数据处理系统300能够与其他这样的系统通信。屏幕(例如,显示监视器)35通过显示适配器32连接到系统总线33,显示适配器32可包含用以改进图形密集型应用的性能的图形适配器和视频控制器。在一个实施例中,适配器27、26和32可以连接到一个或多个I/O总线,该一个或多个I/O总线经由中间总线桥(未示出)连接到系统总线33。用于连接诸如硬盘控制器、网络适配器和图形适配器之类的外围设备的合适的I/O总线通常包括诸如外围组件互连(PCI)之类的公共协议。附加的输入/输出设备被示为经由用户接口适配器28和显示适配器32连接到系统总线33。键盘29、鼠标30和扬声器31都经由用户接口适配器28互连到总线33,用户接口适配器28可以包括例如将多个设备适配器集成到单个集成电路中的超级I/O芯片。

在示范性实施例中,处理系统300包括图形处理单元41。图形处理单元41是被设计成操纵和改变存储器以加速意图输出到显示器的帧缓冲器中的图像的创建的专用电子电路。一般而言,图形处理单元41在操纵计算机图形和图像处理时非常有效,并且具有高度并行的结构,这使得其比通用CPU更有效地用于其中并行完成大数据块的处理的算法。

因此,如图3中配置的,系统300包括处理器21形式的处理能力、包括系统存储器34和大容量存储器24的存储能力、诸如键盘29和鼠标30的输入装置、以及包括扬声器31和显示器35的输出能力。在一个实施例中,系统存储器34和大容量存储设备24的一部分共同存储协调图3中示出的各个组件的功能的操作系统。

图4和5分别示出了使用全虚拟化和OS级虚拟化的计算节点400和500。本发明的一些实施例可以与这些类型的计算节点中的任何一个一起使用,以及在具有跨单个或多个计算节点的这些计算节点的组合的混合环境中使用。

如图4所示,计算节点400中的每一个包括硬件406,所述硬件406可以包括处理器(或CPU)407、存储器408、网络接口卡(NIC)409、以及盘驱动器410。盘驱动器410可包括固态驱动器或硬盘驱动器或两者的某种组合。在硬件上,计算节点400运行主机操作系统405。计算节点400还包括管理程序404,以共享和管理硬件406,从而允许在相同的物理机器400上执行彼此隔离的多个不同环境401。管理程序404可以使用硬件辅助的虚拟化,该硬件辅助的虚拟化通过使用主要来自主机CPU407的虚拟化特定硬件能力来提供有效和全部虚拟化。每个计算节点400包括一个或多个虚拟机401,每个虚拟机包括客户操作系统403和在客户操作系统403上运行的一个或多个应用程序(或应用)402。

类似地,如图5所示,计算节点500中的每一个包括硬件506,所述硬件可以包括处理器(或CPU)507、存储器508、网络接口卡(NIC)509和磁盘驱动器510。磁盘驱动器510可包括固态驱动器或硬盘驱动器或两者的某种组合。在硬件上,计算节点500运行主机操作系统505。每个计算节点500包括一个或多个容器501,其中每个容器包括一个或多个应用502。

根据一些实施例,计算节点500可以包括一个或多个Pod 503,每个Pod包括一个或多个容器501,每个容器501包括一个或多个应用502。例如,在Kubernetes中,容器在Pod中运行。

“Kubernetes”是用于管理容器化的工作负载和服务的便携式可扩展的开源平台。它促进声明性配置和自动化两者。Kubernetes代表用户工作负载编排计算、联网和存储基础设施。Kubernetes是编排框架的实例。多个计算节点中的容器化工作负载可以由容器编排管理器(COM)管理。容器编配管理器(COM)的示例是Kubernetes Master。几个二进制组件(例如,主组件、节点组件和Addon(附加组件))被用于递送起作用的Kubernetes集群。主组件提供Kubernetes集群的控制平面(也称为“Kubernetes控制平面”)。主组件可以包括但不限于Kube-API服务器、etcd、Kube调度器、Kube控制器管理器和云控制器管理器。主组件做出关于Kubernetes集群的全局决定。例如,主组件处理调度。此外,在检测和响应集群事件中利用主组件。例如,当复制控制器的“副本”字段未被满足时,主组件负责启动新Pod。主组件可以在集群中的任何机器上运行。尽管如此,设置脚本通常启动同一机器上的所有主组件,并且不在该机器上运行用户容器。

节点组件在Kubernetes集群中的每个计算节点上运行。节点组件负责维持运行Pod并提供Kubernetes运行时环境。节点组件可以包括但不限于Kubelet、Kube代理和容器运行时。Kubelet是确保容器在Pod中运行的代理。Kubelet确保通过各种机制提供的一组PodSpec中指定的容器是运行的并且健康的。Kube代理是网络代理。Kube代理通过在计算节点上维护网络规则并执行连接转发来实现Kubernetes服务抽象。

容器运行时是负责运行容器的软件。更具体地,容器运行时是处理容器的生命周期的节点组件。容器运行时实现基本概念,诸如创建、启动、停止和移除容器工作负载。Kubernetes支持几次运行,包括但不限于Docker、containerd、CRI-O和rkt1et。

更一般地,Kubernetes支持由Kubernetes提供的容器运行时接口(CRI)的任何实现方式。CRI使得各种容器运行时能够容易地被插。在Kubernetes 1.5中引入CRI之前,仅使用默认的Docker映像库及其默认的OCI兼容运行时间runC。开放容器倡议(OCI)创建运行时规范,其详述说明OCI兼容容器运行时的API。runC、runV、和Intel的透明容器(也称为“cc-运行时”)是OCI兼容的容器运行时的示例。runC已经内置了对CRIU的支持—以下描述的用户空间中的检查点/恢复,以对容器进行检查和恢复。runV是OCI的基于管理程序的Docker运行时,runV也称为“Hyper runV”。

CRI运行时处于较高抽象级别并且不应当与OCI兼容的运行时混淆。CRI运行时也被称为“CRIshim(垫片)”。CRIshim包括cri-containerd、CRI-O、dockersshim和frakti。一些CRIshim(例如,CRI-containerd、CRI-O和dockersshim)调用OCI兼容的运行时,而其他CRIshim(例如,frakti)是一体式解决方案。

至少一些CRIshim支持在单个计算节点上运行的多个运行时。例如,CRI-O支持可信和不可信沙箱的概念。在Kubernetes中,一个或多个基于VM的Pod和一个或多个基于cgroup/命名空间的Pod的混合可基于Pod注释和默认CRI-O配置在单个计算节点上运行。在基于VM的Pod内部运行的容器可经由命名空间和cgroup来隔离和管理,类似于runC所做的那样。

Addon是负责实现集群特征的Pod和服务。Addon包括但不限于集群DNS(即,为Kubernetes服务提供DNS记录的DNS服务器)、仪表板(即,用于Kubernetes集群的基于网络的UI,其允许用户对在集群中运行的应用以及集群本身管理和查找故障),容器资源监视(即,负责记录关于中央数据库中的容器的通用时间序列度量,以及提供用于浏览该数据库中记录的数据的UI),以及集群级日志(即,负责将容器日志保存到具有搜索/浏览接口的中央日志存储区)。

现在转向与本发明的各方面更具体地相关的技术的概述,管理容器化的工作负载和服务的Kubernetes平台需要用于启动过程来启动包括一个或多个容器的Pod。这个Pod启动过程采用三个步骤。第一步骤是初始化/准备步骤。第二步骤是通过容器运行时接口(CRI)创建沙盒容器。最终(第三)步骤是创建真实容器。第一和第二步骤可以花费显著的时间段(例如,2-3秒)。对于每个任务,Kubernetes Pod必须端到端地通过这个过程,这对于运行短工作负载可能花费大量时间。例如,存在该时间段可能导致问题的两个示例性情况。第一种情况是当需要针对每个用户逻辑在Kubernetes集群中启动一个或多个Pod的云环境中存在高瞬时吞吐量时。这导致大量的类似Pod启动。这些相似的Pod可以用于相似的、短的工作负载,诸如调用API。使用2-3秒或更长时间启动pod,这占据整个工作负载的相当大的部分。第二种情况是当存在流水线并且一个步骤可以包括多个任务并且类似的Kubernetes需要针对每个任务启动Pod时。如果流水线中的任务的数目很大,则由于硬件限制而不能启动所有Pod。

本发明的一个或多个实施例通过提供用于在云环境中动态地缩放工作负载执行的系统和过程来解决现有技术的上述缺点。各方面包括动态启动多个容器以执行Kubernetes集群的容器中的工作负载。可以收集资源度量和统计数据以分配用于执行这些Pod和容器中的工作负载的资源。可基于工作量队列将Pod放大和/或缩小到Kubernetes集群中的其他节点。并且容器可与工作负载相关联并且在工作负载被执行时被监视。

图6示出了根据本发明的一个或多个实施例的Kubernetes Pod的框图。Kubernetes Pod表示分布式计算环境(例如,计算机集群)中的运行过程。Pod封装应用容器(或在一些情况下封装多个容器),并且包括存储资源、唯一网络IP和管理容器应如何运行的选项。在典型的配置中,Kubernetes Pod 602操作必须遵循上述三步创建过程的主容器604。这里的主容器604用于执行工作负载的任务。而且,如上所述,容器的创建可能需要2-3秒,从而导致执行任务(尤其是不需要长时间执行的任务)的延迟。在本发明的一个或多个实施例中,提出被创建用于执行工作负载的Kubernetes Pod 606。在这种情况下,主容器作为边车容器608操作。边车容器608通过执行例如轻量循环来防止Pod 606退出和传输结果。此外,在Pod 606中生成一个或多个(多个)短暂容器610。工作负载和相关联的任务可以在这些短暂容器610上执行,而边车容器608防止Pod退出。使用边车容器608避免了必须针对每个任务初始化新的容器并对其进行沙箱化,这减少了工作负载的执行时间。

在本发明的一个或多个实施例中,Kubernetes Pod 606可以由跟踪短暂容器的资源度量的Pod管理模块来管理。目前,不允许为短暂容器设置资源。然而,在一个或多个实施例中,Pod管理器可以通过资源限制来动态地创建短暂容器以避免超过Pod资源限制并且由(一个或多个)特定容器抓取资源。图7描述了根据本发明的一个或多个实施例的管理Pod的Pod管理器资源的框图。在一个或多个实施例中,Pod管理器702可以从资源度量AP1 730获得和/或接收资源利用度量。Pod管理器702可以计算能够启动多少个容器,这可以基于关于工作负载和/或用户预定义的度量的可用资源的分析。然后,Pod管理器702创建并终止具有分配的资源的Cgroup710的容器。这些步骤可以根据需要被重复以用于工作负载的执行。Pod管理器702与容器运行时接口(CRI)704和容器运行时引擎705进行交互以动态地创建和终止容器720。如前所述,边车容器718执行例如轻量循环,以防止Pod 706执行。容器720可使用Pod中的命名空间708构建。Linux内核具有称为“命名空间”的特征。Linux内核命名空间(其是Linux容器的主要构建块)在不同的“用户空间”(诸如网络、进程、用户和文件系统)内隔离应用。命名空间隔离并虚拟化用于进程集合的系统资源。可被虚拟化的资源的一些示例包括进程ID、主机名、用户ID等。命名空间通常指命名空间类型以及这些类型的特定实例。Linux操作系统用每个命名空间类型的单个实例来初始化。在初始化之后,可以创建或加入额外的命名空间。而且,Linux内核还提供称为“控制组”的功能,也称为“cgroups”,其允许资源(CPU、存储器、块I/O、网络等)的限制和优先级排序。cgroups功能限制不同主机资源,诸如CPU计数和使用、磁盘性能、存储器和其他进程限制。

在本发明的一个或多个实施例中,可以基于资源分配和/或工作负载在Pod内创建和终止短暂容器。而且,在本发明的一个或多个实施例中,Pod可放大和/或缩小。随着Pod内短暂容器的数量增加,Pod资源将接近在Pod内不再创建短暂容器的限制。在这种情况下,水平Pod自动定标器(HPA)可用于放大和/或缩小Pod。图8示出了根据本发明一个或多个实施例的Pod管理器和水平Pod自动定标器的框图。Pod管理器802可再次接收工作负载850并且利用从资源度量AP1 830收集的资源度量信息,来创建具有边车容器814和一个或多个短暂容器812的Pod 810。基于资源和/或工作负载队列,Pod管理器802可通过更新定制度量AP1804和配置来触发HPA 806来放大或缩小容器。因此,可创建更多容器810以执行工作负载850。进一步,HPA806可在工作负载队列较小(小于阈值)时缩小,可终止一个或多个容器810以节省资源。在一些实施例中,可以从工作量队列管理器接收工作负载850。复制控制器808可通过创建多个容器810来缩放Pod。这被称为“复制”。复制的Pod可以通过称为控制器的抽象作为一组来被创建和管理。

在本发明的一个或多个实施例中,多个容器可以放大和/或缩小。在创建多个容器的情况下,需要控制器模块来监视工作负载并与Pod管理器和工作负载队列管理器通信以维持工作负载。图9示出了根据本发明的一个或多个实施例与Pod管理器和工作负载队列通信的控制器模块的框图。在一个或多个实施例中,控制器904可以与Pod管理器902通信,该Pod管理器创建具有边车容器914和一个或多个短暂容器912的Pod 910。控制器904还与管理工作量队列908的队列管理器906通信。在一个或多个实施例中,工作负载队列908可以是消息队列遥测传输(MQTT)队列。MQTT队列是示范性的,并且不旨在限制本文所使用的队列的类型。在本发明的一个或多个实施例中,控制器904从API服务器获得和/或接收任务的定义。控制器904可经由队列管理器906将任务放入队列908中。控制器904然后触发Pod管理器902创建短暂容器912和边车容器914。边车容器914监视短暂容器912并将结果发送至消息队列908。控制器904从消息队列908获得结果并且相应地更新任务。

图10示出了根据本发明的一个或多个实施例的用于动态地缩放云环境中的工作负载执行的系统。系统1000包括在图6至图9中描述的许多部件。这样,系统1000包括Pod管理器1002、控制器1004、队列管理器1006、资源度量API1008、HPA1010、复制控制器1012、容器运行时接口1014和工作负载/消息队列116。一个或多个任务1018可以通过API服务器1024到达并且发送到控制器1004。控制器1004通过队列管理器1006将任务放入队列1016中。控制器1004可以触发Pod管理器1002以在Pod 1032中创建短暂容器1034以及边车容器1036以用于监视并向队列1016发送结果。资源度量API 1008监视用于容器1032的资源度量。HPA 1010和复制控制器1012可基于任务、资源和/或工作负载添加和/或终止容器。Pod管理器1002管理每个Pod 1032并且可以基于资源分配度量来添加和/或终止短暂容器1034。

在一个或多个实施例中,系统1000还包括Kubernetes组件,如Etcd 1022和节点组件Kubelet 1026。Etcd是可靠地存储Kubernetes集群的配置数据的持久、轻量、分布式键值数据存储器,其表示在任何给定时间点的集群的整体状态。Kubelet是确保容器在Pod中运行的代理。kubelet确保通过各种机制提供的一组PodSpec中指定的容器是运行的并且健康的。

图11示出了根据本发明的一个或多个实施例的用于动态地缩放云环境中的工作负载执行的方法的流程图。例如,可由一个或多个服务器(诸如,图1中所示的公共云120和/或私有云130)执行方法1100的至少一部分。方法1100包括由控制器接收包括一个或多个任务的工作负载,如框1102中所示。在方框1104中,方法1100包括产生包括第一边车容器的第一Pod。例如,第一Pod是Kubernetes Pod。在方框1106处,方法1100包括基于工作负载和用于第一Pod的一个或多个资源分配度量来生成用于该Pod的一个或多个短暂容器。方法1100在框1108处可以包括在该一个或多个短暂容器中执行该一个或多个任务。边车容器执行例如轻量循环,以防止Pod退出。在方框1110,方法1100包括监视用于Pod的一个或多个资源分配度量。资源分配度量可以取自资源监测API。并且在框1112处,方法1100包括基于用于Pod的一个或多个资源分配度量和工作负载在第一Pod中生成至少一个新的短暂容器。

还可以包括另外的过程。应当理解,图11中描述的过程表示说明,并且在不背离本公开的范围和精神的情况下,可以添加其他过程或可以移除、修改或重新布置现有过程。

本文参考相关附图描述本发明的不同实施例。在不脱离本发明的范围的情况下,可设计本发明的替代实施例。在以下描述和附图中,在元件之间阐述了各种连接和位置关系(例如,上方、下方、相邻等)。除非另有规定,否则这些连接和/或位置关系可以是直接或间接的,并且本发明本文方面并示意图是限制性的。因此,实体的连接可以指直接的或间接的连接,并且实体之间的位置关系可以是直接的或间接的位置关系。此外,本文描述的各种任务和过程步骤可以并入具有本文未详细描述的附加步骤或功能的更全面的程序或过程中。

本文描述的方法中的一种或多种可以利用以下技术中的任一项或组合来实现,这些技术各自是在本领域中众所周知的:具有用于对数据信号实现逻辑功能的逻辑门的(多个)离散逻辑电路、具有适当组合逻辑门的专用集成电路(ASIC)、可编程门阵列(PGA)、现场可编程门阵列(FPGA)等。

为了简洁起见,本文可以或可以不详细描述与制造和使用本发明的方面相关的常规技术。具体地,用于实现本文所描述的不同技术特征的计算系统和特定计算机程序的各个方面是众所周知的。因而,为了简洁起见,许多常规实施细节在本文中仅简要提到或完全省略,而不提供众所周知的系统和/或过程细节。

在一些实施例中,不同功能或动作可以在给定位置处和/或与一个或多个装置或系统的操作结合发生。在一些实施例中,可以在第一设备或位置处执行给定功能或动作的一部分,并且可以在一个或多个附加设备或位置处执行该功能或动作的剩余部分。

本文使用的术语仅是出于描述特定实施例的目的,并且不旨在是限制性的。如本文中使用的,除非上下文另有明确指示,否则单数形式“一”、“一个”和“该”旨在也包括复数形式。还应当理解,当在本说明书中使用术语“包括(comprises)”和/或“包括(comprising)”时,其指定所述特征、整体、步骤、操作、元件和/或部件的存在,但不排除一个或多个其他特征、整体、步骤、操作、元件部件和/或其组合的存在或添加。

以下权利要求书中的所有装置或步骤加上功能元件的对应结构、材料、动作和等效物旨在包括用于结合如具体要求保护的其他要求保护的元件来执行所述功能的任何结构、材料或动作。本公开已出于说明和描述的目的而呈现,但并不旨在是详尽的或限于所公开的形式。在不背离本公开的范围和精神的情况下,许多修改和变化对于本领域普通技术人员来说是显而易见的。选择和描述这些实施例以便最好地解释本披露的原理和实际应用,并且使本领域的其他普通技术人员能够针对具有适合于所预期的特定用途的不同修改的不同实施例来理解本披露。

本文示出的这些图是说明性的。在不背离本公开的精神的情况下,可对本文所述的示图或步骤(或操作)进行许多变化。例如,可以以不同的顺序执行动作,或者可以添加、删除或修改动作。而且,术语“耦接”描述了在两个元件之间具有信号路径,并且不暗示元件之间的直接连接,其间没有中间元件/连接。所有这些变型被认为是本公开的一部分。

以下定义和缩写将用于解释权利要求书和说明书。如本文使用的,术语“包括(comprises)”、“包括(comprising)”、“包含(includes)”、“包含(including)”、“具有(has)”、“具有(having)”、“含有(contains)”或“含有(containing)”或其任何其他变体旨在涵盖非排他性的包括。例如,包含一系列要素的组合物、混合物、工艺、方法、物品或设备不必仅限于那些要素,而是可以包括未明确列出的或这种组合物、混合物、工艺、方法、物品或设备固有的其他要素。

此外,术语“示例性”在本文中用于指“用作示例、实例或说明”。本文中描述为“示例性”的任何实施方式或设计不一定被解释为优于或优于其他实施方式或设计。术语“至少一个”和“一个或多个”应理解为包括大于或等于一的任何整数,即。一个、两个、三个、四个等。术语“多个”应理解为包括大于或等于二的任何整数,即。两个、三个、四个、五个等。术语“连接”可包括间接“连接”和直接“连接”。

术语“约”、“基本上”、“近似”及其变体旨在包括与基于提交申请时可用的设备的特定量的测量相关联的误差程度。例如,“约”可以包括给定值的±8%或5%、或2%的范围。

本发明可以是在任何可能的技术细节集成水平下的系统、方法、和/或计算机程序产品。计算机程序产品可包括其上具有用于使处理器执行本发明的各方面的计算机可读程序指令的计算机可读存储介质(或多个介质)。

计算机可读存储介质可以是能够保留和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质可以是,例如但不限于,电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备、或者上述的任意合适的组合。计算机可读存储介质的更具体示例的非穷尽列表包括以下各项:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式紧凑盘只读存储器(CD-ROM)、数字通用盘(DVD)、记忆棒、软盘、诸如穿孔卡之类的机械编码设备或具有记录在其上的指令的槽中的凸出结构、以及上述各项的任何合适的组合。如本文所使用的计算机可读存储介质不应被解释为暂时性信号本身,例如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,穿过光纤电缆的光脉冲)或通过电线发射的电信号。

本文所描述的计算机可读程序指令可以经由网络(例如,互联网、局域网、广域网和/或无线网络)从计算机可读存储介质下载至对应的计算/处理设备或下载至外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输纤维、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口接收来自网络的计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。

用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路的配置数据、或以一种或多种程序设计语言的任何组合编写的源代码或目标代码,这些程序设计语言包括面向对象的程序设计语言(诸如Smalltalk、C++等)和过程程序设计语言(诸如“C”程序设计语言或类似程序设计语言)。计算机可读程序指令可以完全地在用户计算机上执行、部分在用户计算机上执行、作为独立软件包执行、部分在用户计算机上部分在远程计算机上执行或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接至用户计算机,或者可连接至外部计算机(例如,使用互联网服务提供商通过互联网)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来使电子电路个性化来执行计算机可读程序指令,以便执行本发明的各方面。

本文参照根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的多个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。

这些计算机可读程序指令可以被提供给通用计算机、专用计算机、或其他可编程数据处理装置的处理器以产生机器,这样使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现在流程图和/或框图的或多个框中指定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置、和/或其他设备以特定方式工作,从而,其中存储有指令的计算机可读存储介质包括包含实现流程图和/或框图中的或多个方框中规定的功能/动作的方面的指令的制造品。

这些计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置、或其他设备上,以便使得在该计算机、其他可编程装置或其他设备上执行一系列操作步骤以产生计算机实现的过程,从而使得在该计算机、其他可编程装置或其他设备上执行的这些指令实现流程图和/或框图的或多个框中所指定的功能/动作。

附图中的流程图和框图展示了根据本发明的不同实施例的系统、方法和计算机程序产品的可能实现方式的架构、功能和操作。对此,流程图或框图中的每个框可表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些备选实现中,框中标注的功能可以不按照图中标注的顺序发生。例如,取决于所涉及的功能,连续示出的两个块实际上可以基本上同时执行,或者这些块有时可以以相反的顺序执行。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作或执行专用硬件与计算机指令的组合的专用的基于硬件的系统来实现。

已经出于说明的目的呈现了本发明的各个实施例的描述,但并不旨在是详尽的或限于所披露的实施例。在不脱离所描述的实施例的范围和精神的情况下,许多修改和变化对本领域普通技术人员将是显而易见的。本文使用的术语被选择来最好地解释实施例的原理、实际应用或优于市场中发现的技术的技术改进,或者使得本领域普通技术人员能够理解本文描述的实施例。

相关技术
  • 用于无线设备的基于工作负载的功率管理的动态时钟及电压缩放的系统和方法
  • 利用3D工作量执行动态电压和频率缩放策略的半导体器件
技术分类

06120115925963