CN115280285A - 由独立操作的多个调度器在公共资源集上调度工作负载 - Google Patents

由独立操作的多个调度器在公共资源集上调度工作负载 Download PDF

Info

Publication number
CN115280285A
CN115280285A CN202180020543.8A CN202180020543A CN115280285A CN 115280285 A CN115280285 A CN 115280285A CN 202180020543 A CN202180020543 A CN 202180020543A CN 115280285 A CN115280285 A CN 115280285A
Authority
CN
China
Prior art keywords
scheduler
host
workload
cluster
scheduling
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
Application number
CN202180020543.8A
Other languages
English (en)
Inventor
M·威格斯
R·文卡塔苏波拉姆
S·B·加米奇
P·杰恩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
VMware LLC
Original Assignee
VMware LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by VMware LLC filed Critical VMware LLC
Publication of CN115280285A publication Critical patent/CN115280285A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/485Resource constraint
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/505Clust

Abstract

使用独立操作的至少两个调度器在跨主机集群分布的公共资源集上调度工作负载。资源包括CPU、存储器、网络和存储,并且工作负载可以是虚拟对象,包括VM,并且还可以是包括虚拟对象的实时迁移、网络文件复制、为高可用性重启保留备用容量以及选择将进入维护模式的主机在内的操作。此外,至少两个独立调度器被指派优先级,使得在较低优先级调度器被执行以在公共资源集上调度其清单中的工作负载之前,较高优先级调度器被执行以在公共资源集上调度其清单中的工作负载。

Description

由独立操作的多个调度器在公共资源集上调度工作负载
相关申请的交叉引用
本申请要求在2020年7月30日提交的题目为“由独立操作的多个调度器在公共资源集上调度工作负载(SCHEDULING WORKLOADS ON A COMMON SET OF RESOURCES BYMULTIPLE SCHEDULERS OPERATING INDEPENDENTLY)”的美国非临时专利申请No.16/943,710的优先权,将其通过引用并入,如同在本文中全面阐述其全文。
背景技术
今天的应用被部署到虚拟机(VM)、容器、应用服务等的组合上。为了部署这样的应用,被已知为
Figure BDA0003840646040000011
的容器协调平台已经在应用开发者中得到普及。Kubernetes提供了一种用于使应用容器跨主机集群的部署、缩放和操作自动化的平台。它提供应用开发的灵活性并提供用于缩放的若干有用工具。
在Kubernetes系统中,容器被分组为称为“荚(pod)”的逻辑单元。同一荚中的容器共享相同的资源和网络,并保持与其他荚中的容器的一定程度的隔离。荚跨Kubernetes系统的节点分布,并且在每个节点上提供图像高速缓存以加速荚部署。节点包括操作系统(OS),例如
Figure BDA0003840646040000012
以及在支持荚的容器的OS之上执行的容器引擎。Kubernetes控制平面组件(例如,kubelet)与容器一起在OS上执行。由此,节点包括在共享OS上执行的多个容器和控制平面组件。
Kubernetes节点可以在虚拟化计算系统中实现,该虚拟化计算系统包括主机集群,该主机集群具有在主机硬件平台上执行以支持虚拟机(VM)的执行的虚拟化层。在该系统中,集群中的每个主机作为Kubernetes节点操作并且Kubernetes荚被实现为VM(以下称为“荚VM”),每个VM包括OS和在其中支持容器的执行的容器引擎。这种Kubernetes系统还包括实现Kubernetes控制平面组件并支持使用荚VM实现的应用的其他VM。
将Kubernetes控制平面集成到虚拟化计算系统中导致调度复杂性,因为Kubernetes控制平面采用调度器以将荚放置在节点上(在集成系统中,这意味着荚VM在集群的主机上被调度),并且虚拟化计算系统采用调度器以将VM(包括荚VM)放置在集群的相同主机上。这些调度器(每个调度器运行其自身的调度算法)可以决定在不同的主机上放置荚VM。
美国专利申请No.16/681,990公开了一种技术,其中当将荚VM放置在主机集群上时,VM调度器与Kubernetes调度器协作。在该技术中,Kubernetes调度器包括与VM调度器通信以在将荚VM放置在主机集群上时请求和获取主机推荐的扩展。
发明内容
一个或更多个实施例提供了一种用于使用独立操作的至少两个调度器来调度工作负载的方法。工作负载可以是虚拟对象,包括VM,并且也可以是包括虚拟对象的实时迁移、网络文件复制、为高可用性重启保留备用容量以及选择将进入维护模式的主机在内的操作。根据实施例,在跨主机集群分布的公共资源集上调度这些工作负载。这些资源包括CPU、存储器、网络和存储。此外,至少两个独立调度器被指派优先级,使得在执行较低优先级的调度器以在公共资源集上调度其清单中的工作负载之前,执行较高优先级的调度器以在公共资源集上调度其清单中的工作负载。
进一步的实施例包括但不限于非暂时性计算机可读存储介质,该非暂时性计算机可读存储介质包括:用于处理器执行上述方法的指令;以及计算机系统,该计算机系统包括被编程以执行上述方法的处理器。
附图说明
图1是可以实现实施例的虚拟化计算系统的框图。
图2是描绘根据实施例的由调度器仲裁器执行的方法的步骤的流程图。
图3是描绘根据实施例的由资源预算分配器执行的方法的步骤的流程图。
图4是描绘根据实施例的由每个调度器执行的方法的步骤的流程图。
图5是可以实现实施例的另一个虚拟化计算系统的框图。
图6是示出了图5的虚拟化计算系统中的分布式调度器的实现方式的概念图。
图7-8是示出了分布式调度器的其他实现方式的概念图。
具体实施方式
图1是可以实现实施例的虚拟化计算系统100的框图。虚拟化计算系统100包括可以在诸如x86架构平台之类的服务器级硬件平台上构建的主机120的集群118(也称为“主机集群118”)。如图所示,每个主机120的硬件平台122包括计算设备的常规组件,诸如一个或更多个中央处理单元(CPU)160、系统存储器(例如,随机存取存储器(RAM)162)、一个或更多个网络接口控制器(NIC)164和可选的本地存储设备163。CPU 160被配置为执行指令,例如,执行本文描述的一个或更多个操作的可执行指令,所述指令可存储在RAM 162中。NIC 164使得主机120能够通过网络180与其他设备通信。网络180是实现主机120之间和其他组件与主机120(本文进一步讨论的其他组件)之间的通信的物理网络。
在图1所示的实施例中,主机120通过使用NIC 164连接至网络180来访问共享存储170。在另一个实施例中,每个主机120包含主机总线适配器(HBA),通过主机总线适配器,输入/输出操作(IO)通过单独的网络(例如,光纤信道(FC)网络)被发送至共享存储170。共享存储170包括一个或更多个存储阵列,诸如存储区域网络(SAN)、网络附加存储(NAS)等。共享存储170可包括磁盘、固态盘、闪存等以及它们的组合。在一些实施例中,主机120包括本地存储163(例如,硬盘驱动器、固态驱动器等)。每个主机120中的本地存储163可以被聚合并提供作为虚拟SAN(vSAN)的一部分,虚拟SAN是另一种形式的共享存储170。
每个主机120的软件平台124提供虚拟化层,在此被称为管理程序150。管理程序150抽象硬件平台122的处理器、存储器、存储和网络资源以提供虚拟机执行空间,在该虚拟机执行空间内多个虚拟机(VM)可被并发地实例化和执行。可以在本文描述的实施例中配置和使用的管理程序150的一个示例是作为VMware
Figure BDA0003840646040000041
解决方案的一部分提供的VMware ESXiTM管理程序,其由加州帕洛阿尔托的VMware有限公司商业可获得。如图1所示,在每个主机120上执行的VM包括荚VM 130和本机VM 140。荚VM 130是虚拟机,其包括OS和支持容器执行的容器引擎,以及与在管理程序150中执行的协调控制平面115的控制器(称为荚VM控制器)协作的代理(称为荚VM代理)。一些本机VM 140在主机集群118内具有特定功能,诸如控制VM 143和支持VM 145。控制VM 143是如本文进一步描述的实现控制平面的VM。支持VM 145是由控制平面创建以支持使用荚VM 130和/或本机VM 140实现的应用的VM。
软件平台124配置有软件定义(SD)联网175。SD联网175包括具有各种逻辑组件(诸如路由器、交换机、网关、防火墙、负载平衡器等)的数据平面,这些逻辑组件被耦合以形成覆盖网络180的逻辑网络。术语“逻辑”和“虚拟”在此相对于SD联网175可互换地使用。SD联网175包括被配置为管理数据平面的控制平面。控制平面和数据平面的一些组件被实现为支持VM 145(例如,逻辑路由器控制VM、负载平衡器、边缘网关等)。其他组件被实现为管理程序150的一部分(例如,逻辑交换机、逻辑路由器、分布式防火墙等)。
VM管理服务器116是从主机120的硬件资源供应VM的物理或虚拟服务器。VM管理服务器116将控制平面代理152安装在管理程序150中以将主机120添加为被管理实体。VM管理服务器116在逻辑上将主机120分组到集群118中以向主机120提供集群级功能,诸如主机120之间的VM迁移(例如,用于负载平衡)、分布式功率管理、根据密切关系和反密切关系规则的动态VM放置、以及高可用性。集群中主机120的数量可以是一个或更多个。集群118中的每个主机120经由网络180访问共享存储170。VM管理服务器116还可以经由网络180与共享存储170通信以在其上执行控制操作。
VM管理服务器116还包括监管器集群服务109。监管器集群服务109将主机集群118配置为监管器集群119的一部分。监管器集群服务109在管理程序150中安装控制平面代理152以向监管器集群119添加主机120。监管器集群119将诸如Kubernetes的协调控制平面集成到主机集群118中。在监管器集群119中,主机120变成由协调控制平面使用的节点。
监管器集群服务109提供一个或更多个虚拟服务器作为“主服务器”来管理协调控制平面。在图1的实施例中,监管器集群119包括监管器Kubernetes主设备104,其充当用于监管器集群119的协调控制平面115的主服务器。为了清楚起见,监管器Kubernetes主设备104被示出为单独的逻辑实体。实际上,监管器Kubernetes主设备104可以实现为主机集群118中的控制VM 143。进一步,尽管仅示出了一个监管器Kubernetes主设备104,但是监管器集群119可以包括多于一个监管器Kubernetes主设备104。
在图1所示的实施例中,在资源上调度的工作负载包括荚VM 130、本机VM 140、控制VM 143和支持VM 145。通过两个独立调度器——资源调度器96和Kubernetes调度器105,在公共资源集(例如,属于主机集群118和监管器集群119的主机120的集合的资源)上调度这些工作负载。工作负载清单97包含将由资源调度器96调度的工作负载,而工作负载清单106包含将由Kubernetes调度器105调度的工作负载。资源调度器96作为VM管理服务器116中的过程运行以在主机集群118的一组主机120上调度其工作负载清单97中的工作负载,并且Kubernetes调度器105作为监管器Kubernetes主设备104中的过程运行以在监管器集群119的同一组主机120上调度其工作负载清单106中的工作负载。
工作负载在不同情况下被添加到工作负载清单97、106中。在一个实施例中,如果主机120发生故障,则在(主机集群118的)发生故障的主机上执行的控制VM 143和支持VM145被添加到工作负载清单97,并且在(监管器集群119的)相同发生故障的主机上执行的所有荚VM 130被添加到工作负载清单106。在故障主机上执行的本机VM 140(其是使用协调控制平面115部署的应用的组件)被添加到工作负载清单106。其他本机VM 140被添加到工作负载清单97。
VM管理服务器116还包括调度器仲裁器90,该调度器仲裁器实施给予独立调度器的调度优先级的顺序。通常,独立调度器的相对调度优先级由虚拟化计算系统100的开发者预定义。在这里示出的实施例中,资源调度器96相对于Kubernetes调度器105被指派更高的优先级。因此,调度器仲裁器90在允许Kubernetes调度器105执行(以调度其工作负载清单106中的工作负载)之前,允许资源调度器96执行(以调度其工作负载清单97中的工作负载)。在一些实施例中,调度器仲裁器90执行图1中示出为资源预算分配器91的过程,以针对独立调度器中的每个调度器设置资源预算。可以将资源预算设置在集群级或在单独的主机级。此外,可以为由资源调度器96或Kubernetes调度器105管理的工作负载的全部或子集设置资源预算。当为调度器设置资源预算时,防止该调度器调度其工作负载清单中的将导致所调度的资源使用量超过该调度器的资源预算的任何工作负载。当为由调度器管理的工作负载的子集设置资源预算时,防止该调度器调度该子集中和其工作负载清单中的将导致所调度的资源使用量超过该调度器针对该子集的资源预算的任何工作负载。当资源预算设置在单独的主机级别时,可以另外设置用于资源的粒度。粒度定义可以在单独的主机级别设置的特定资源的最小大小。因此,如果用于存储器的粒度是1GB并且跨10个主机的集群的总存储器预算是5GB,则它将阻止该预算被设置为跨10个主机的每主机0.5GB。相反,该预算将被设置在跨5个主机(或更少)1GB(或更多),并且5个主机将获得0GB的存储器预算。
虚拟化计算系统100还包括存储管理器110。存储管理器110是物理或虚拟服务器,其将共享存储170(或从本地存储163形成的vSAN)中的虚拟盘设置为独立对象。即,虚拟盘与任何VM或容器的生命周期分开持续存在。各个组件可以与存储管理器110交互以提供持久存储,诸如VM管理服务器116和监管器Kubernetes主设备104。存储管理器110可以独立于VM管理服务器116(例如,作为独立的物理或虚拟服务器)操作。可替代地,存储管理器110可以是VM管理服务器116中的服务(例如,与诸如资源调度器108和监管器集群服务109之类的组件一起)。
虚拟化计算系统100还包括网络管理器112。网络管理器112是管理主机120的SD联网175的物理或虚拟服务器。网络管理器112可以在管理程序150中安装控制平面代理152以添加主机120作为被管理实体。网络管理器112将主机集群118配置为传送区的一部分。在这样的传送区中,主机120变成具有共享逻辑联网资源的传送节点。网络管理器112可独立于VM管理服务器116(例如,作为独立的物理或虚拟服务器)操作。可替代地,网络管理器112可以是VM管理服务器116的服务(例如,与诸如资源调度器108和监管器集群服务109之类的组件一起)。
VI管理员(VI管理员)可以通过VM管理客户端101与VM管理服务器116交互。通过VM管理客户端101,VI管理员命令VM管理服务器116形成主机集群118,配置资源池、资源分配策略和其他集群级功能,配置存储和联网,以及创建监管器集群119。
Kubernetes客户端102表示监管器Kubernetes主设备104的输入接口。Kubernetes客户端102通常被称为kubect1。通过Kubernetes客户端102,用户将Kubernetes系统的期望状态(例如,作为YAML文档)提交至监管器Kubernetes主设备104。作为响应,监管器Kubernetes主设备104通过创建荚VM 130和本机VM 140、将VM连接到存储和逻辑网络、破坏荚VM 130和本机VM 140等来配置监管器集群119以匹配期望的状态。以这种方式,用户与监管器Kubernetes主设备104交互以在监管器集群119中部署应用。
图2是描绘根据实施例的由调度器仲裁器90执行的方法的步骤的流程图。调度器仲裁器90通过在低优先级调度器(过程230)之前执行高优先级调度器(过程220)来实施独立调度器的调度优先级。在图1所示的实施例中,高优先级调度器是资源调度器96而低优先级调度器是Kubernetes调度器105。在具有多于两个的独立调度器的实施例中,首先执行最高优先级调度器,其次执行第二最高优先级调度器,以此类推,直到所有调度器都被执行。
调度器仲裁器90还执行过程210(例如,资源预算分配器91)以将资源预算设置到每个独立调度器。图3中示出了由资源预算分配器91执行的步骤。图3的方法开始于步骤310,在步骤310处,资源预算分配器91确定是否分配资源预算。如果没有资源预算被分配给调度器,则不对调度器施加资源限制,并且调度器将尝试调度其清单中的所有工作负载,直到资源不再可用。如果在调度器清单中的所有工作负载已经被调度之后资源仍然可用,则具有次最高优先级的调度器将执行。
如果分配了资源预算,则执行步骤320和330。在步骤320,资源预算分配器91为高优先级调度器设置资源预算,并且在步骤330,资源预算分配器91为低优先级调度器设置资源预算。在具有多于两个的独立调度器的实施例中,执行附加步骤以设置用于所有调度器的资源预算。
图4是描绘根据实施例的由每个调度器执行的方法的步骤的流程图。图4的方法可应用于包括高优先级调度器和低优先级调度器的独立调度器中的任一个,并且开始于步骤410,其中调度器选择其清单中的下一个工作负载来调度。然后,在步骤412,调度器确定是否存在用于调度所选工作负载的足够资源,以及所选工作负载的调度是否将使其超过其资源预算。如果存在足够的资源用于调度所选工作负载,并且对所选工作负载的调度将不会使其超过其资源预算(步骤412,是),则在步骤414处调度器在资源上调度所选工作负载。另一方面,如果用于调度所选工作负载的资源不足或所选工作负载的调度将导致调度器超过其资源预算(步骤412,否),则调度器检查它先前调度的工作负载的资源使用量,以查看是否存在碎片整理的机会(步骤418)。例如,如果需要被调度的VM的存储器要求大于主机集群118中的单个主机可以提供的存储器要求,则可以执行碎片整理过程以将一个或更多个VM从主机集群118中的一个主机实时迁移到主机集群118中的一个或更多个其他主机,以便为需要被调度的VM释放该一个主机中的足够的存储器。如果没有机会去碎片整理,则在步骤420返回错误。如果存在碎片整理的机会,则在步骤422执行迁移以释放主机集群118中的一个主机上的资源。在迁移完成时,执行步骤414以在释放的主机的资源上调度所选的工作负载。如果所选择的工作负载不是有状态的VM,而是无状态的不同虚拟对象,则通过终止一个主机中的虚拟对象的运行实例并实例化另一主机中的该虚拟对象来执行迁移。
在一些实施例中,可以通过对先前由低优先级调度器调度的工作负载进行碎片整理来实现碎片整理以释放空间用于由高优先级调度器调度工作负载的机会。在这样的情况下,高优先级调度器向较低优先级调度器做出这样的碎片整理请求(例如,通过调用由低优先级调度器暴露的API)。
在进一步的实施例中,高优先级调度器可以从资源预算分配器91请求更大的预算分配。资源预算分配器91通过减少分配给低优先级调度器的资源预算或通过建立资源的缓冲区并分配来自该缓冲区的资源来满足该请求。在该缓冲区中可用的资源池随着资源从该缓冲区被分配给调度器而减小,并且随着资源由调度器释放并返回到该缓冲区而增大。
在步骤414之后,调度器确定其清单中是否还有任何工作负载要调度。如果有,则过程返回到步骤410,其中调度器选择其清单中的下一个工作负载来调度。如果没有更多,则过程结束。
在一些实施例中,VM管理服务器116、网络管理器112和存储管理器110的一个或更多个功能可以使用控制VM 143来实现。图5的虚拟化计算系统500描绘了其中调度器仲裁器90、资源预算分配器91和资源调度器96的功能作为分布式调度器520跨主机120在主机120的控制VM 143中分布的实施例。
图6描绘了一示例,其中分别在主机120A、120B、120C中运行的控制VM 143A、143B、143C彼此协作以作为分布式调度器520A执行调度器仲裁器90、资源预算分配器91、资源调度器96和工作负载清单97的功能。在主机120D中运行的第四控制VM,即控制VM 143D是能够替换出故障的控制VM 143A、143B、143C中的任一个的备用控制VM。
在一些实施例中,控制VM 143D的运行实例不是必需的。代替控制VM 143D的运行实例,资源调度器96为主机120D中的控制VM 143D预留备用容量,以供控制VM 143D在被实例化时(例如,当控制VM 143A、143B、143C中的一个停止时)消耗。
以类似的方式,监管器Kubernetes主设备104的功能(包括Kubernetes调度器105和工作负载清单106的功能)可以跨主机120分布在主机120的控制VM 143中。图7图示了分布式调度器520B,除了调度器仲裁器90、资源预算分配器91、资源调度器96和工作负载清单97之外,分布式调度器520B还实现Kubernetes调度器105和工作负载清单106的功能。
图8描绘了实现三个独立调度器的功能的分布式调度器(分布式调度器520C)的另一个示例。除了资源调度器96(和工作负载清单97)和Kubernetes调度器105(和工作负载清单106)之外,分布式调度器520C还包括控制VM调度器803,用于在与资源调度器96和Kubernetes调度器105相同的资源集上调度其工作负载清单804中的工作负载(例如,控制VM 143,包括控制VM 143A、143B、143C、143D)。调度器仲裁器801是调度器仲裁器90的修改版本。为了容纳第三独立调度器,调度器仲裁器801在执行资源预算分配器802之后按该次序执行高优先级调度器、中优先级调度器和低优先级调度器。以类似的方式,从资源预算分配器91修改资源预算分配器802以适应第三独立调度器。除了设置用于高优先级调度器和低优先级调度器的资源预算之外,资源预算分配器802还设置用于中优先级调度器的资源预算。在一个实施例中,控制VM调度器803是高优先级调度器,资源调度器96是中优先级调度器,并且Kubernetes调度器105是低优先级调度器。
在上述实施例中,VM表示调度的工作负载,并且集群中的主机的资源表示在其上调度工作负载的公共资源集。在其他实施例中,调度的工作负载可以是任何虚拟对象,包括虚拟计算、存储和网络资源,并且还可以是包括虚拟对象的实时迁移、网络文件复制、为高可用性重启保留备用容量以及选择将进入维护模式的主机在内的操作。更一般地,调度的工作负载可以是消耗需要被调度的资源的任何过程。此外,独立调度器可以是两个或更多个,并且在一些情况下,一个调度器可以嵌套在另一个调度器内部。
进一步地,在上述实施例中,描述了独立集群级调度器之间的交互。在每个主机120中,主机级调度器也被执行以在主机的资源上调度工作负载(这些工作负载被如上所述的独立集群级调度器在其上调度)。根据实施例的主机级调度可以以各种方式执行,以下描述其中的两个。
根据第一技术,主机级调度器严格根据与集群级调度器相同的优先级操作,并且在调度由低优先级调度器在该主机上调度的工作负载之前,将可用容量分配给由高优先级调度器在该主机上调度的工作负载。如果在该主机上存在资源短缺,则主机级调度器可以抢占现有的低优先级工作负载(其是由低优先级调度器在其上调度的工作负载)以支持调度高优先级工作负载(其是由高优先级调度器在其上调度的工作负载)。
根据第二技术,主机级调度器根据针对工作负载指定的资源预算来操作。这些资源预算可以指定三种设置:预留(为工作负载预留的主机资源的量)、限制(关于工作负载对主机资源使用的限制)和共享(指示工作负载相对于在同一主机上运行的其他工作负载的调度优先级的值)。这些资源预算可以直接在工作负载上指定,或者可以是如何将分配给集群级调度器的资源预算分摊给由该调度器管理的工作负载的结果。在该第二技术中,主机级调度器不能抢占现有的低优先级工作负载以支持高优先级工作负载。主机资源一旦被授予工作负载就得到保证。因而,如果集群中的容量不足以调度新的工作负载(或者容量分散在多个主机),则集群级调度器需要等待工作负载被终止,而不管指派给集群级调度器的优先级如何。一旦容量释放,容量可基于集群级调度器的优先级被分配给集群级调度器。
在另一个实施例中,资源预算的分配(例如,资源预算分配器210的过程)与集群级调度器的过程解耦合。在任何工作负载被调度之前,每个集群级调度器将由解耦的资源预算分配器设置的预算指派给主机。集群级调度器将这个主机级预算分配作为其工作负载调度决策的输入。这种解耦允许预算分配器以比集群级调度器更大的时间间隔操作,并且其不需要知道工作负载细节(例如,放置策略等)。在此实施例中,因为解耦的资源预算分配器独立于工作负载将资源预算指派给主机,所以这可最终导致失配和碎片化。因而,最小块大小被应用于每个主机上的预算分配。
在上述实施例中,出于碎片整理的目的,可以实施工作负载的实时迁移以释放一个或更多个主机上的资源。除了通过碎片整理释放资源之外,可能存在可能需要迁移工作负载的其他技术/非技术约束。技术约束的示例是当前的GPU配置。当前GPU配置可能不允许放置所需的工作负载,直到现有工作负载从主机撤离且GPU被重新配置以匹配所需工作负载的要求。示例非技术约束是新工作负载与现有工作负载之间的反亲和性。如果新工作负载必须在当前正运行与新工作负载具有反亲和性的工作负载的主机上运行,则将需要将现有工作负载迁移到另一主机。
以上描述的实施例将主机描绘为由独立调度器在其上调度工作负载的公共资源集的资源提供者。资源提供者不限于主机。在另外的实施例中,资源提供者可以是其上根据盘的各种技术约束来调度盘形式的工作负载的数据存储区。例如,一些盘可被精简配置,这意味着这些盘所需的容量可随时间增长。可存在需要加密或以冗余方式存储的其他盘。
在此所描述的实施例可以采用涉及存储在计算机系统中的数据的各种计算机实现的操作。例如,这些操作可能需要物理量的物理操纵。通常,尽管不是必要的,但这些量可以采取电信号或磁信号的形式,其中这些量或这些量的表示可以被存储、传输、组合、比较或以其他方式被操纵。这样的操作通常涉及诸如产生、识别、确定或比较的术语。在此描述的形成一个或更多个实施例的一部分的任何操作可以是有用的机器操作。
本发明的一个或更多个实施例还涉及一种用于执行这些操作的设备或装置。该装置可以出于所需目的而专门构造,或者该装置可以是由存储在计算机中的计算机程序选择性地激活或配置的通用计算机。各个通用机器可以与根据本文的教导编写的计算机程序一起使用,或者可以更方便地构造更专用的装置来执行所需的操作。
在此所描述的实施例可以用其他计算机系统配置来实践,包括手持式设备、微处理器系统、基于微处理器的或可编程消费电子产品、小型计算机、大型计算机等。
本发明的一个或更多个实施例可以被实现为一个或更多个计算机程序或者被实现为体现在计算机可读介质中的一个或更多个计算机程序模块。术语计算机可读介质是指可以存储数据的任何数据存储设备,该数据随后可以被输入到计算机系统。计算机可读介质可以基于任何现有的或随后开发的技术,其以使计算机能够读取程序的方式体现计算机程序。计算机可读介质的示例是硬盘驱动器、NAS系统、只读存储器(ROM)、RAM、致密盘(CD)、数字通用盘(DVD)、磁带和其他光学和非光学数据存储装置。计算机可读介质还可分布在网络耦合的计算机系统上,使得计算机可读代码以分布式方式被存储和执行。
尽管为了清楚的理解已经详细描述了本发明的一个或更多个实施例,但在权利要求书的范围内可以进行某些改变。因此,所描述的实施例被视为说明性的而非限制性的,并且权利要求的范围并不局限于本文中所给出的细节,而是可在权利要求的范围和等同物内进行修改。在权利要求中,除非在权利要求中明确说明,否则元件和/或步骤不暗示任何特定的操作顺序。
根据各个实施例的虚拟化系统可以被实施为托管实施例、非托管实施例、或者模糊两者之间的区分的实施例。此外,各个虚拟化操作可以完全或部分地在硬件中实现。例如,硬件实现可采用查找表用于修改存储访问请求来保护非盘数据。
无论虚拟化的程度如何,许多变化、添加和改进都是可能的。因此,虚拟化软件可包括执行虚拟化功能的主机、控制台或访客OS的组件。
可以为在此描述为单个实例的组件、操作或结构提供多个实例。组件、操作和数据存储之间的边界在某种程度上是任意的,并且在特定说明性配置的上下文中示出了特定操作。功能的其他分配是预想的并且可以落入本发明的范围内。通常,在示例性配置中作为单独部件呈现的结构和功能可以作为组合的结构或部件来实现。类似地,作为单个组件呈现的结构和功能可以实现为单独的组件。这些和其他变化、添加和改进可落入所附权利要求书的范围内。

Claims (21)

1.一种使用至少两个独立调度器在跨主机集群分布的公共资源集上调度工作负载的方法,所述至少两个独立调度器包括用于调度高优先级工作负载的高优先级调度器和用于调度低优先级工作负载的低优先级调度器,所述方法包括:
使用所述高优先级调度器在所述公共资源集上调度所述高优先级工作负载;以及然后
使用所述低优先级调度器在所述公共资源集上调度所述低优先级工作负载。
2.根据权利要求1所述的方法,还包括:
将来自所述公共资源集的总资源预算的第一资源预算分配给所述高优先级工作负载,并且将来自所述公共资源集的所述总资源预算的第二资源预算分配给所述低优先级工作负载,
其中所述高优先级调度器根据所述第一资源预算执行所述高优先级工作负载的所述调度,并且所述低优先级调度器根据所述第二资源预算执行所述低优先级工作负载的所述调度。
3.根据权利要求1所述的方法,其中所述至少两个独立调度器中的每个是集群级调度器,并且所述第一资源预算和所述第二资源预算中的每个被限定用于所述集群。
4.根据权利要求1所述的方法,其中所述至少两个独立调度器中的每个是集群级调度器,并且所述第一资源预算和所述第二资源预算中的每个针对每个单独的主机定义。
5.根据权利要求1所述的方法,还包括:
使用主机级调度器来调度由所述至少两个独立调度器在单独的主机上调度的工作负载。
6.根据权利要求1所述的方法,还包括:
在确定不能在主机上调度高优先级工作负载时,将当前在所述主机中正执行的一个或更多个工作负载迁移到另一主机。
7.根据权利要求1所述的方法,其中为由所述高优先级调度器管理的高优先级工作负载的子集定义所述第一资源预算,并且为由所述低优先级调度器管理的低优先级工作负载的子集定义所述第二资源预算。
8.根据权利要求1所述的方法,其中
所述调度所述高优先级工作负载包括:跨所述主机集群执行所述高优先级工作负载的碎片整理;以及
所述调度所述低优先级工作负载包括:跨所述主机集群执行所述低优先级工作负载的碎片整理。
9.根据权利要求1所述的方法,其中所述低优先级工作负载包括在所述集群的所述主机上运行的荚虚拟机,所述荚虚拟机分别对应于Kubernetes平台的节点,并且高优先级工作负载包括在所述集群的所述主机上运行的不是荚虚拟机的其他虚拟机。
10.根据权利要求1所述的方法,其中所述高优先级工作负载包括在所述集群的所述主机上运行的控制虚拟机,所述控制虚拟机以分布式方式执行用于所述集群的虚拟机管理操作,并且低优先级工作负载包括在所述集群的所述主机上运行的不是控制虚拟机的其他虚拟机。
11.根据权利要求1所述的方法,其中所述工作负载包括虚拟对象和操作,所述操作包括虚拟对象的实时迁移、网络文件复制、为高可用性重启保留备用容量以及选择将进入维护模式的主机。
12.根据权利要求1所述的方法,其中所述资源包括CPU、存储器、网络和存储。
13.一种计算机系统,包括:
跨主机计算机集群分布的资源集;以及
一个或更多个处理器,其执行使用至少两个独立调度器在所述资源集上调度工作负载的方法,所述至少两个独立调度器包括用于调度高优先级工作负载的高优先级调度器和用于调度低优先级工作负载的低优先级调度器,所述方法包括:
使用所述高优先级调度器在公共资源集上调度所述高优先级工作负载;以及然后
使用所述低优先级调度器在所述公共资源集上调度所述低优先级工作负载。
14.根据权利要求13所述的计算机系统,其中所述方法还包括:
将来自所述公共资源集的总资源预算的第一资源预算分配给所述高优先级工作负载,并且将来自所述公共资源集的所述总资源预算的第二资源预算分配给所述低优先级工作负载,
其中所述高优先级调度器根据所述第一资源预算执行所述高优先级工作负载的所述调度,并且所述低优先级调度器根据所述第二资源预算执行所述低优先级工作负载的所述调度。
15.根据权利要求14所述的计算机系统,其中所述方法还包括:
在确定不能在主机上调度高优先级工作负载时,将当前正在所述主机中执行的一个或更多个工作负载迁移到另一主机。
16.根据权利要求13所述的计算机系统,其中
所述调度所述高优先级工作负载包括:跨所述主机集群执行所述高优先级工作负载的碎片整理;以及
所述调度所述低优先级工作负载包括:跨所述主机集群执行所述低优先级工作负载的碎片整理。
17.根据权利要求13所述的计算机系统,其中所述低优先级工作负载包括在所述集群的所述主机上运行的荚虚拟机,所述荚虚拟机分别对应于Kubernetes平台的节点,并且高优先级工作负载包括在所述集群的所述主机上运行的不是荚虚拟机的其他虚拟机。
18.根据权利要求13所述的计算机系统,其中所述高优先级工作负载包括在所述集群的所述主机上运行的控制虚拟机,所述控制虚拟机以分布式方式执行用于所述集群的虚拟机管理操作,并且低优先级工作负载包括在所述集群的所述主机上运行的不是控制虚拟机的其他虚拟机。
19.根据权利要求13所述的计算机系统,其中所述工作负载包括虚拟对象和操作,所述操作包括虚拟对象的实时迁移、网络文件复制、为高可用性重启保留备用容量以及选择将进入维护模式的主机。
20.一种非暂时性计算机可读介质,包括要在计算机系统中执行的指令,其中当在所述计算机系统中执行所述指令时,使所述计算机系统执行使用至少两个独立调度器来在跨多个资源提供者分布的公共资源集上调度工作负载的方法,所述至少两个独立调度器包括用于调度高优先级工作负载的高优先级调度器和用于调度低优先级工作负载的低优先级调度器,所述方法包括:
使用所述高优先级调度器在所述公共资源集上调度所述高优先级工作负载;以及然后
使用所述低优先级调度器在所述公共资源集上调度所述低优先级工作负载。
21.根据权利要求20所述的非暂时性计算机可读介质,其中所述多个资源提供者包括以下中的一个:(a)主机集群;以及(b)多个数据存储区。
CN202180020543.8A 2020-07-30 2021-07-26 由独立操作的多个调度器在公共资源集上调度工作负载 Pending CN115280285A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/943,710 US11726816B2 (en) 2020-07-30 2020-07-30 Scheduling workloads on a common set of resources by multiple schedulers operating independently
US16/943,710 2020-07-30
PCT/US2021/043248 WO2022026426A1 (en) 2020-07-30 2021-07-26 Scheduling workloads on a common set of resources by multiple schedulers operating independently

Publications (1)

Publication Number Publication Date
CN115280285A true CN115280285A (zh) 2022-11-01

Family

ID=80003165

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180020543.8A Pending CN115280285A (zh) 2020-07-30 2021-07-26 由独立操作的多个调度器在公共资源集上调度工作负载

Country Status (4)

Country Link
US (1) US11726816B2 (zh)
EP (1) EP4073641A4 (zh)
CN (1) CN115280285A (zh)
WO (1) WO2022026426A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11595464B2 (en) * 2021-07-23 2023-02-28 Vmware, Inc. Migration of network file copy operations between host computing devices
US20240012717A1 (en) * 2022-07-11 2024-01-11 Commvault Systems, Inc. Protecting configuration data in a clustered container system
US20240045708A1 (en) * 2022-08-08 2024-02-08 Google Llc Coordinated Maintenance For Virtual Machine (VM) Clusters/Pods

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100325637A1 (en) * 2009-06-18 2010-12-23 Microsoft Corporation Allocation of resources to a scheduler in a process
US20140137104A1 (en) * 2012-11-12 2014-05-15 Vmware, Inc. Cooperative Application Workload Scheduling for a Consolidated Virtual Environment
US20150154056A1 (en) * 2013-12-03 2015-06-04 International Business Machines Corporation Migrating a running, preempted workload in a grid computing system
CN110515730A (zh) * 2019-08-22 2019-11-29 北京宝兰德软件股份有限公司 基于kubernetes容器编排系统的资源二次调度方法及装置
CN110780998A (zh) * 2019-09-29 2020-02-11 武汉大学 基于Kubernetes的动态负载均衡资源调度方法
US20200192724A1 (en) * 2017-09-29 2020-06-18 Tencent Technology (Shenzhen) Company Limited Resource scheduling method, scheduling server, cloud computing system, and storage medium

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7203944B1 (en) * 2003-07-09 2007-04-10 Veritas Operating Corporation Migrating virtual machines among computer systems to balance load caused by virtual machines
US7702676B2 (en) * 2006-12-29 2010-04-20 Teradata Us, Inc. Parallel virtual optimization
US7707578B1 (en) 2004-12-16 2010-04-27 Vmware, Inc. Mechanism for scheduling execution of threads for fair resource allocation in a multi-threaded and/or multi-core processing system
US8209682B2 (en) 2006-07-26 2012-06-26 Hewlett-Packard Development Company, L.P. System and method for controlling aggregate CPU usage by virtual machines and driver domains over a plurality of scheduling intervals
US8667500B1 (en) 2006-10-17 2014-03-04 Vmware, Inc. Use of dynamic entitlement and adaptive threshold for cluster process balancing
US8037280B2 (en) * 2008-06-11 2011-10-11 Vmware, Inc. System and method for improving memory locality of virtual machines
US8775413B2 (en) * 2008-06-30 2014-07-08 Teradata Us, Inc. Parallel, in-line, query capture database for real-time logging, monitoring and optimizer feedback
US8850432B2 (en) 2012-05-30 2014-09-30 Red Hat, Inc. Controlling utilization in a multi-tenant platform-as-a-service (PaaS) environment in a cloud computing system
CA2867589A1 (en) * 2013-10-15 2015-04-15 Coho Data Inc. Systems, methods and devices for implementing data management in a distributed data storage system
US9417918B2 (en) 2013-11-20 2016-08-16 International Business Machines Corporation Computing session workload scheduling and management of parent-child tasks
KR102052494B1 (ko) 2014-08-27 2019-12-06 어댑티브 스펙트럼 앤드 시그널 얼라인먼트, 인크. 액세스 노드의 가상화 구현을 위한 시스템, 방법 및 장치
US10389598B2 (en) 2015-10-29 2019-08-20 Cisco Technology, Inc. Container management and application ingestion engine
US10241840B2 (en) * 2016-09-30 2019-03-26 Vmware, Inc. Resource based virtual computing instance scheduling
US10379908B2 (en) 2017-05-30 2019-08-13 Red Hat, Inc. Merging scaled-down container clusters using vitality metrics
US20190223023A1 (en) 2018-01-17 2019-07-18 Netsia, Inc. System and method for an integrated virtual customer premises equipment
US10871998B2 (en) 2018-01-18 2020-12-22 Red Hat, Inc. Usage instrumented workload scheduling
US10977086B2 (en) 2018-11-14 2021-04-13 Vmware, Inc. Workload placement and balancing within a containerized infrastructure
US11182196B2 (en) 2019-11-13 2021-11-23 Vmware, Inc. Unified resource management for containers and virtual machines

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100325637A1 (en) * 2009-06-18 2010-12-23 Microsoft Corporation Allocation of resources to a scheduler in a process
US20140137104A1 (en) * 2012-11-12 2014-05-15 Vmware, Inc. Cooperative Application Workload Scheduling for a Consolidated Virtual Environment
US20150154056A1 (en) * 2013-12-03 2015-06-04 International Business Machines Corporation Migrating a running, preempted workload in a grid computing system
US20200192724A1 (en) * 2017-09-29 2020-06-18 Tencent Technology (Shenzhen) Company Limited Resource scheduling method, scheduling server, cloud computing system, and storage medium
CN110515730A (zh) * 2019-08-22 2019-11-29 北京宝兰德软件股份有限公司 基于kubernetes容器编排系统的资源二次调度方法及装置
CN110780998A (zh) * 2019-09-29 2020-02-11 武汉大学 基于Kubernetes的动态负载均衡资源调度方法

Also Published As

Publication number Publication date
WO2022026426A1 (en) 2022-02-03
EP4073641A4 (en) 2023-12-27
EP4073641A1 (en) 2022-10-19
US11726816B2 (en) 2023-08-15
US20220035662A1 (en) 2022-02-03

Similar Documents

Publication Publication Date Title
CN112470127B (zh) 用于高效资源管理的自动集群合并
US11816497B2 (en) Container orchestration in a clustered and virtualized computer system
US10514960B2 (en) Iterative rebalancing of virtual resources among VMs to allocate a second resource capacity by migrating to servers based on resource allocations and priorities of VMs
US10498664B2 (en) Hybrid cloud resource scheduling
US9183016B2 (en) Adaptive task scheduling of Hadoop in a virtualized environment
US20220129299A1 (en) System and Method for Managing Size of Clusters in a Computing Environment
US9875122B2 (en) System and method for providing hardware virtualization in a virtual machine environment
US10693806B2 (en) Network bandwidth reservations for system traffic and virtual computing instances
US11023330B2 (en) Efficient scheduling of backups for cloud computing systems
US9304803B2 (en) Cooperative application workload scheduling for a consolidated virtual environment
US10474488B2 (en) Configuration of a cluster of hosts in virtualized computing environments
US10642800B2 (en) Multi-tenant distributed computing and database
US9582221B2 (en) Virtualization-aware data locality in distributed data processing
US8327372B1 (en) Virtualization and server imaging system for allocation of computer hardware and software
CN115280285A (zh) 由独立操作的多个调度器在公共资源集上调度工作负载
US9176787B2 (en) Preserving, from resource management adjustment, portions of an overcommitted resource managed by a hypervisor
US11403150B1 (en) Replenishment-aware resource usage management
US20090133099A1 (en) Methods and systems for transparent software license suspension
US20230038612A1 (en) Optimizing vm numa configuration and workload placement in a heterogeneous cluster
US20210232419A1 (en) Canary process for graceful workload eviction
US20230229476A1 (en) Flexible infrastructure for provisioning virtual computing instances
US11853807B1 (en) Cluster scaling based on task state information

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
CB02 Change of applicant information
CB02 Change of applicant information

Country or region after: U.S.A.

Address after: California, USA

Applicant after: Weirui LLC

Address before: California, USA

Applicant before: VMWARE, Inc.

Country or region before: U.S.A.