CN115185697A - 一种基于kubernetes的集群资源调度方法、***、设备和存储介质 - Google Patents
一种基于kubernetes的集群资源调度方法、***、设备和存储介质 Download PDFInfo
- Publication number
- CN115185697A CN115185697A CN202210944014.3A CN202210944014A CN115185697A CN 115185697 A CN115185697 A CN 115185697A CN 202210944014 A CN202210944014 A CN 202210944014A CN 115185697 A CN115185697 A CN 115185697A
- Authority
- CN
- China
- Prior art keywords
- cluster
- pod
- namespace
- resource
- resource pool
- 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
Images
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/5083—Techniques for rebalancing the load in a distributed system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种基于kubernetes的集群资源调度方法,包括以下步骤:创建资源池,设置资源池的标签和污点,将集群中的部分集群节点拉入资源池;创建租户,将部分集群资源分配给租户,成为租户资源;在租户下创建项目,并分配部分租户资源给项目,成为项目资源;在项目下创建k8s资源Namespace,并分配部分项目资源给Namespace;在Namespace下创建工作负载;利用k8s中的动态准入控制,监控Pod的创建或更新,根据Pod所属的Namespace设置Pod的标签选择和污点容忍;Pod根据标签选择和污点容忍调度到设置了相应标签和污点的集群节点上。本发明还公开一种基于kubernetes的集群资源调度***。本发明实现对集群资源进行整体调度和管理,可有效提高集群资源的利用率。
Description
技术领域
本发明涉及云计算技术领域,尤其涉及一种基于kubernetes的集群资源调度方法、***、设备和存储介质。
背景技术
k8s,全称kubernetes,简称k8s,是用“8”代替8个字符“ubernete”而成的缩写,k8s是一种开源的容器编排引擎,它支持自动化部署,大规模可伸缩以及应用容器化管理等功能,并且提供了众多可对k8s资源进行可扩展操作的机制,包括权限控制插件,准入控制,可扩展资源,自动伸缩,资源配额管理等。
k8s提供了集群资源管理即通过k8s资源Namespace对集群资源进行分配和管理,但是,无法对集群资源进行整体调度,造成集群资源利用率低的问题,如何对集群资源进行整体管理和调度,提高集群资源的利用率是本领域技术人员需要解决的问题。
发明内容
本发明的目的在于提供一种基于kubernetes的集群资源调度方法、***、设备和存储介质,解决k8s无法做到有效地调度和管理集群资源,从而使集群资源不能得到有效利用的问题。
为解决上述技术问题,本发明提供一种基于kubernetes的集群资源调度方法,包括以下步骤:
创建资源池,设置资源池的标签和污点,将集群中的部分集群节点拉入资源池;
创建租户,将资源池中部分集群节点的集群资源分配给租户,成为租户资源;
在租户下创建项目,并分配部分租户资源给项目,成为项目资源;
在项目下创建Namespace,并分配部分项目资源给Namespace;
在Namespace下创建工作负载,设置工作负载请求的集群资源量,工作负载创建一组Pod;
利用K8s中的动态准入控制,监控Pod的创建或更新,根据Pod所属的Namespace设置Pod的标签选择和污点容忍;
Pod根据标签选择和污点容忍调度到资源池中设置了相应标签和污点的集群节点上,使用集群节点上的集群资源。
优选地,创建资源池,设置资源池的标签和污点,将集群中的部分集群节点拉入资源池,具体包括以下步骤:
创建资源池,设置资源池的标签和污点;
将集群中的部分集群节点拉入资源池;
为所有拉入该资源池内的集群节点添加该资源池的标签和污点。
优选地,在项目下创建Namespace,并分配部分项目资源给Namespace,具体包括以下步骤:
在项目下创建Namespace;
在Namespace下创建ResourceQuota,设置分配给Namespace的集群资源配额;
将该集群资源配额所属的资源池的标签和污点设置在Namespace的注解上。
优选地,利用集群中的动态准入控制,监控Pod的创建或更新,根据Pod所属的Namespace设置Pod的标签选择和污点容忍,具体包括以下步骤:
创建MutatingWebhookConfiguration,配置动态准入控制的Webhook地址;
动态准入控制通过应用编程接口API监听Pod的创建或更新,根据Pod所属的Namespace注解中的标签和污点设置Pod的标签选择和污点容忍。
优选地,配置动态准入控制的Webhook地址具体包括:设置创建或更新Pod时所调用的WebhookAPI接口路径。
优选地,动态准入控制通过应用编程接口API监听Pod的创建或更新,根据Pod所属的Namespace注解中的标签和污点设置Pod的标签选择和污点容忍,具体包括以下步骤:
动态准入控制通过应用编程接口API监听Pod的创建或更新,当监听到所述Pod资源的创建或更新时,通过Namespace上的注解获取所绑定的资源池的标签和污点,为Pod设置该标签选择并容忍该污点作为Pod的标签选择和污点容忍。
本发明还提供一种用于实现上述基于kubernetes的集群资源调度方法的***,包括:
用户管理模块,用于对用户的角色、权限进行认证,***中的租户、项目,用户所属的租户、项目进行管理;
资源管理模块,用于对租户、项目、Namespace的集群资源配额和资源池进行管理;
Webhook模块,用于监听所述Pod的创建或更新,通过Namespace上的注解获取所绑定的资源池的标签和污点,为Pod设置标签选择和污点容忍。
本发明还提供一种计算机设备,包括:
至少一个处理器;
以及存储器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述基于kubernetes的集群资源调度方法的步骤。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述基于kubernetes的集群资源调度方法的步骤。
与现有技术相比,本发明的有益效果为:
本实施例基于k8s平台,以标签和污点将集群节点Node分为不同的资源池,创建租户分配租户资源,创建项目分配项目资源,创建Namespace分配Namespace资源,同时创建ResourceQuota设置Namespace资源配额,在Namespace下创建工作负载,利用k8s资源Deployment部署动态准入Webhook,所述Webhook监控Pod的创建或更新,为Pod设置标签选择和污点容忍,Pod根据标签选择和污点容忍调度到特定集群节点Node上,实现对集群资源进行整体调度和管理,可有效提高集群资源的利用率。
附图说明
下面结合附图对本发明的具体实施方式作进一步详细说明。
图1为本发明实施例提供的一种基于kubernetes的集群资源调度方法的流程的示意图;
图2为本发明实施例提供的创建资源池,设置资源池的标签和污点,将集群中的部分集群节点拉入资源池的流程示意图;
图3为本发明实施例提供的创建租户,将资源池部分资源分配给租户,成为租户资源在租户下创建项目,并分配租户部分资源给项目,成为项目资源的流程示意图;
图4为本发明实施例提供的在项目下创建k8s资源Namespace,并分配部分项目资源给Namespace的流程示意图;
图5为本发明实施例提供的利用k8s中的动态准入控制Webhook,监控Pod的创建或更新,根据Pod所属的Namespace设置Pod的标签选择和污点容忍的流程示意图;
图6为本发明实施例提供的一种基于kubernetes的集群资源调度***的示意图;
图7为本发明实施例提供的一种基于kubernetes的集群资源调度的计算机设备的硬件结构示意图;
图8位本发明实施例提供的一种基于kubernetes的集群资源调度的计算机可存储介质示意图。
图中:701-处理器;702-储存器;703-计算机指令;801-计算机可读存储介质;802-计算机程序。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本发明。但是本发明能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本实施例中将使用到的相关名词解释如下:
集群资源:一切可分配给Pod使用的资源,包括:CPU、内存、GPU核数、GPU显存、集群存储等;
Pod:Pod是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元,Pod可以包括一个或一组容器;
Namespace:Namespace是k8s***中的一种非常重要的资源,它的主要作用是用来实现多套环境的资源隔离或者多租户的资源隔离;默认情况下,k8s集群中的所有的Pod都是可以相互访问的。但是在实际中,可能不想让两个Pod之间进行互相的访问,那此时就可以将两个Pod划分到不同的Namespace下。k8s通过将集群内部的资源分配到不同的Namespace中,可以形成逻辑上的“组”,以方便不同的组的资源进行隔离使用和管理;
标签:标签(Labels) 是附加到 Kubernetes 对象(比如 Pods)上的键值对。通过给集群节点打标签,再给Pod选择这些标签,可以让Pod调度到那些有所述标签的集群节点上,使用该集群节点上的资源;
污点:污点是集群节点Node上的一种属性,只有那些容忍了该污点的Pod才能被调度到该集群节点上使用。污点和容忍污点(Toleration)相互配合,可以用来避免 Pod 被分配到不合适的集群节点上。每个集群节点上都可以包含一个或多个污点,这表示对于那些不能容忍这些污点的Pod,是不会被调度到该集群节点上的。污点主要包括三个属性,key,value和effect;
工作负载:工作负载是在 Kubernetes 上运行的应用程序。工作负载是为了更好的管理Pod进行的进一层的抽象,在Kubernetes中可以使用负载资源来代替管理一组Pod,一般工作负载会创建一组Pod。Kubernetes提供的内置工作负载资源包括:Deployment、ReplicaSet、StatefulSet、DaemonSet、Job和CronJob;
动态准入控制:动态准入控制是一种用于接收准入请求并对其进行处理的HTTP或HTTPS回调机制。动态准入控制有两种,一种是验证性的准入控制,即ValidatingAdmissionWebhook,第二种是修改性质的准入控制,即MutatingAdmissionWebhook,本发明所用为第二种准入控制。修改性质的准入控制会被先调用,他们可以更改k8s资源对象以执行自定义的修改,伴随MutatingAdmissionWebhook;
ResourceQuota:一种k8s资源,它对每个命名空间的资源消耗总量提供限制。它可以限制命名空间中某种类型的对象的总数目上限,也可以限制命令空间中的 Pod 可以使用的计算资源的总上限。利用ResourceQuota资源可以限制一个Namespace下Pod所使用的集群资源量,实现资源的调度;
MutatingWebhookConfiguration:一种k8s资源,是对动态准入控制MutatingAdmissionWebhook的配置,动态配置哪些k8s资源要被哪些准入Webhook处理。
本发明实施例要求解决的主要技术问题如下:
k8s中提供了集群资源的Namespace级别的调度和管理,但是对于整个集群资源而言,却无法做到有效地调度和管理,使集群资源不能得到有效利用。
为了解决上述问题,本发明实施例提供了一种基于kubernetes的集群资源调度方法,如图1所示,包括以下步骤:
S110:创建资源池,设置资源池的标签和污点,将集群中的部分集群节点拉入资源池;
S120:创建租户,将资源池中部分集群节点的集群资源分配给租户,成为租户资源;
集群资源为集群节点中的CPU、内存、GPU核数、GPU显存、集群存储等。
S130:在租户下创建项目,并分配部分租户资源给项目,成为项目资源;
S140:在项目下创建k8s资源Namespace,并分配部分项目资源给Namespace;
S150:在Namespace下创建工作负载,设置工作负载请求的集群资源量;
所述创建工作负载的目的在于:工作负载会创建Pod,Pod会根据所属资源池被调度到该资源池内的某个集群节点上,使用相应所述资源池的集群资源,达到集群资源被调度的目的;
工作负载请求的集群资源量应小于等于Namespace可用资源配额;当没有可用集群资源配额时,该Namespace不再能够创建工作负载;可再分配项目配额给Namespace以增加Namespace集群资源可用配额;
S160:利用k8s中的动态准入控制,监控Pod的创建或更新,根据Pod所属的Namespace设置Pod的标签选择和污点容忍;
S170:Pod根据标签选择和污点容忍调度到设置了相应标签和污点的集群节点上,使用该集群节点上的集群资源。
本实施例可对集群资源进行整体调度和管理,可有效提高集群资源的利用率。
作为一种优选地实施例,创建资源池,设置资源池的标签和污点,将集群中的部分集群节点拉入资源池,如图2所示,具体可以采用以下方式:
S111:创建资源池,设置资源池的标签和污点;
所述设置资源池的标签和污点为人为设置,优选地,资源池的标签和污点不应该为集群节点包含的标签和污点。这是因为如果没有被拉入该资源池的集群节点含有此资源池的标签和污点,Pod有可能被调度到该集群节点,造成集群资源管理混乱;
S112: 将集群中的部分集群节点拉到该资源池中;
所述集群中的集群节点为不属于任何资源池的集群节点,并且不包含任何污点,这是因为如果拉取该资源池的集群节点包含了其他污点,则Pod在调度的时候只容忍了该资源池设置的污点,并没有容忍该集群节点原始的污点,造成Pod无法调度到含有原始污点的集群节点上,该集群节点上的资源无法被使用,形成资源浪费;
S113:为所有拉入该资源池内的集群节点添加该资源池的标签和污点。
作为一种优选地实施例,所述创建租户,将资源池部分集群资源分配给租户,成为租户资源;所述在租户下创建项目,并分配租户部分资源给项目,成为项目资源;如图3所示,具体包括:
在集群管理***上创建租户,将资源池部分集群资源分配给租户,成为租户资源;
在该租户下创建项目,将租户资源部分分配给项目,成为项目资源;
该租户信息和该租户资源配额存储于***数据库中,租户分配的资源来自于资源池,因此,租户分配的资源池资源量不能大于资源池可分配资源量;
该项目信息和该项目资源配额存储于***数据库中,项目分配的资源来自于该租户,因此,项目分配的租户资源量不能大于租户可分配资源量。
作为一种优选地实施例,所述在项目下创建k8s资源Namespace,并分配部分项目资源给Namespace;如图4所示,流程包括:
在项目下创建k8s资源Namespace;
在Namespace下创建k8s资源ResourceQuota,设置分配给Namespace的集群资源配额;
将该集群资源配额所属的资源池的标签和污点设置在Namespace的注解上;
本发明实施例提供的技术方案中,将该集群资源配额所属的资源池的标签和污点设置在Namespace的注解上,可选地,将标签和污点与Namespace的信息存储于***数据库中,动态准入控制从***数据库中获取标签和污点,设置Pod的标签选择和污点容忍;
作为一种优选地实施例,所述利用k8s中的动态准入控制,监控Pod的创建或更新,根据Pod所属的Namespace设置Pod的标签选择和污点容忍;如图5所述,流程包括:
创建k8s资源MutatingWebhookConfiguration,配置动态准入控制的Webhook地址;配置动态准入控制的Webhook地址具体为:设置创建或更新Pod时所调用的WebhookAPI接口路径;
动态准入控制通过应用编程接口API监听Pod的创建或更新,根据Pod所属的Namespace注解中的标签和污点设置Pod的标签选择和污点容忍;具体为:当监听到所述Pod资源的创建或更新时,通过Namespace上的注解获取所绑定的资源池的标签和污点,为Pod设置该标签选择并容忍该污点作为Pod的标签选择和污点容忍;
可选地,配置动态准入控制的Webhook地址可以为HTTP协议或HTTPS协议,对于HTTPS协议,可以采用单向认证或双向认证。
为了实现上述方法,本发明的第二个方面,提出了一种基于kubernetes的集群资源调度***。如图6所示,***包括如下模块:
用户管理模块,对用户的角色、权限进行认证,***中的租户、项目,用户所属的租户、项目进行管理;
资源管理模块,用于对租户、项目、Namespace的集群资源配额和资源池进行管理;
Webhook模块,用于监听所述k8s资源Pod的创建或更新,通过Namespace上的注解获取所绑定的资源池的标签和污点,为Pod设置标签选择和污点容忍;
所述用户管理模块,配置用于基于RBAC(基于角色的权限控制)对用户的角色、权限进行认证,采用JWTToken的方式进行鉴权,管理用户可操作的租户、项目、Namespace、集群资源等;
所述资源管理模块,配置用于管理集群资源的创建和调度,包括:创建资源池,分配租户资源,分配项目资源,创建Namespace资源等;
所述Webhook模块,配置用于监听Pod的创建,根据Pod所属的Namespace,为Pod设置标签选择和污点容忍;Webhook模块采用k8s资源Deployment的方式部署,以Service的方式进行集群内暴露;
本实施例基于k8s平台,以标签和污点将Node分为不同的资源池,创建租户分配租户资源,创建项目分配项目资源,创建Namespace分配Namespace资源,同时创建ResourceQuota设置Namespace资源配额,在Namespace下创建工作负载,利用k8s资源Deployment部署动态准入Webhook,所述Webhook监控Pod的创建,为Pod设置标签选择和污点容忍,Pod根据标签选择和污点容忍调度到特定集群节点Node上,实现对集群资源进行整体调度和管理,可有效提高集群资源的利用率。
基于上述目的,本发明第三个方面,提出了一种计算机设备,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行该计算机程序时实现上述的一种基于kubernetes的集群资源调度方法的步骤。其中计算机程序可以为源代码形式、对象代码形式、可执行文件、或者某些中间形式等。
如图7所示,为本发明提供的上述一种基于kubernetes的集群资源调度设备的一种实施例的硬件结构示意图。
如图7所示的装置为例,在该装置中包括一个处理器701以及一个存储器702。
处理器701和存储器702可以通过总线和其他方式连接,图7中以通过总线连接为例。
存储器702作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,非易失性软件程序、非易失性计算机可执行程序以及模块作为计算机指令703,如本发明实施例中的一种基于kubernetes的集群资源调度方法对应的程序指令/模块。处理器701通过运行存储在存储器702中的计算机指令703,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例的一种基于kubernetes的集群资源调度方法。
存储器702可以包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需要的应用程序;存储数据区可存储根据一种基于kubernetes的集群资源调度方法的使用所创建的数据等。此外,存储器702可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器702可选包括相对于处理器701远程设置的存储器,这些远程存储器可以通过网络连接到本地模块。上述网络的实施例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
本发明还提供了一种计算机可读存储介质,计算机可读存储介质存储有被处理器执行时执行如上一种基于kubernetes的集群资源调度方法的计算机程序。
如图8所示,为本发明提供的上述一种基于kubernetes的集群资源调度存储介质的一个实施例的示意图。以如图8所示的计算机存储介质为例,计算机可读存储介质801存储有被处理器执行时执行如上方法的计算机程序802。
最后需要说明的是,本领域技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,一种基于kubernetes的集群资源调度方法的程序可存储于计算机可读取存储介质中,该程序在执行时,可实现如上述各方法的实施例的流程。其中,程序的存储介质可为磁碟、光盘、只读存储记忆体(ROM)或随机存储记忆体(RAM)等。上述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或相类似的效果。
一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时,执行上述任意一项方法。
计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线段的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线段、电线段、光缆、RF等等,或者上述的任意合适的组合。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块、模组或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元、模组或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。
所述单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装,和/或从可拆卸介质被安装。在该计算机程序被中央处理单元(CPU)执行时,执行本发明的方法中限定的上述功能。需要说明的是,本发明上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线段、或半导体的***、装置或器件,或者任意以上的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何在本发明揭露的技术范围内的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (9)
1.一种基于kubernetes的集群资源调度方法,其特征在于,包括以下步骤:
创建资源池,设置资源池的标签和污点,将集群中的部分集群节点拉入资源池;
创建租户,将资源池中部分集群节点的集群资源分配给租户,成为租户资源;
在租户下创建项目,并分配部分租户资源给项目,成为项目资源;
在项目下创建Namespace,并分配部分项目资源给Namespace;
在Namespace下创建工作负载,设置工作负载请求的集群资源量,工作负载创建一组Pod;
利用K8s中的动态准入控制,监控Pod的创建或更新,根据Pod所属的Namespace设置Pod的标签选择和污点容忍;
Pod根据标签选择和污点容忍调度到资源池中设置了相应标签和污点的集群节点上,使用集群节点上的集群资源。
2.根据权利要求1所述的一种基于kubernetes的集群资源调度方法,其特征在于,创建资源池,设置资源池的标签和污点,将集群中的部分集群节点拉入资源池,具体包括以下步骤:
创建资源池,设置资源池的标签和污点;
将集群中的部分集群节点拉入资源池;
为所有拉入该资源池内的集群节点添加该资源池的标签和污点。
3.根据权利要求1所述的一种基于kubernetes的集群资源调度方法,其特征在于,在项目下创建Namespace,并分配部分项目资源给Namespace,具体包括以下步骤:
在项目下创建Namespace;
在Namespace下创建ResourceQuota,设置分配给Namespace的集群资源配额;
将该集群资源配额所属的资源池的标签和污点设置在Namespace的注解上。
4.根据权利要求1所述的一种基于kubernetes的集群资源调度方法,其特征在于,利用集群中的动态准入控制,监控Pod的创建或更新,根据Pod所属的Namespace设置Pod的标签选择和污点容忍,具体包括以下步骤:
创建MutatingWebhookConfiguration,配置动态准入控制的Webhook地址;
动态准入控制通过应用编程接口API监听Pod的创建或更新,根据Pod所属的Namespace注解中的标签和污点设置Pod的标签选择和污点容忍。
5.根据权利要求4所述的一种基于kubernetes的集群资源调度方法,其特征在于:
配置动态准入控制的Webhook地址具体包括:设置创建或更新Pod时所调用的WebhookAPI接口路径。
6.根据权利要求5所述的一种基于kubernetes的集群资源调度方法,其特征在于,动态准入控制通过应用编程接口API监听Pod的创建或更新,根据Pod所属的Namespace注解中的标签和污点设置Pod的标签选择和污点容忍,具体包括以下步骤:
动态准入控制通过应用编程接口API监听Pod的创建或更新,当监听到所述Pod资源的创建或更新时,通过Namespace上的注解获取所绑定的资源池的标签和污点,为Pod设置该标签选择并容忍该污点作为Pod的标签选择和污点容忍。
7.一种用于实现权利要求4-6任一所述的基于kubernetes的集群资源调度方法的***,其特征在于,包括:
用户管理模块,用于对用户的角色、权限进行认证,***中的租户、项目,用户所属的租户、项目进行管理;
资源管理模块,用于对租户、项目、Namespace的集群资源配额和资源池进行管理;
Webhook模块,用于监听所述Pod的创建或更新,通过Namespace上的注解获取所绑定的资源池的标签和污点,为Pod设置标签选择和污点容忍。
8.一种计算机设备,其特征在于,包括:
至少一个处理器;
以及存储器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1-7任一项所述方法的步骤。
9.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-7任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210944014.3A CN115185697A (zh) | 2022-08-08 | 2022-08-08 | 一种基于kubernetes的集群资源调度方法、***、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210944014.3A CN115185697A (zh) | 2022-08-08 | 2022-08-08 | 一种基于kubernetes的集群资源调度方法、***、设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115185697A true CN115185697A (zh) | 2022-10-14 |
Family
ID=83522374
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210944014.3A Pending CN115185697A (zh) | 2022-08-08 | 2022-08-08 | 一种基于kubernetes的集群资源调度方法、***、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115185697A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220342997A1 (en) * | 2021-04-22 | 2022-10-27 | International Business Machines Corporation | Assessing latent security risks in kubernetes cluster |
CN115658311A (zh) * | 2022-10-31 | 2023-01-31 | 北京百度网讯科技有限公司 | 一种资源的调度方法、装置、设备和介质 |
CN117785446A (zh) * | 2023-12-18 | 2024-03-29 | 慧之安信息技术股份有限公司 | 基于弹性资源分配策略的K8s存储资源分配方法和*** |
US20240168976A1 (en) * | 2022-11-23 | 2024-05-23 | Charter Communications Operating, Llc | Dynamic generation and deployment of a container group specification that matches a taint |
-
2022
- 2022-08-08 CN CN202210944014.3A patent/CN115185697A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220342997A1 (en) * | 2021-04-22 | 2022-10-27 | International Business Machines Corporation | Assessing latent security risks in kubernetes cluster |
US11704413B2 (en) * | 2021-04-22 | 2023-07-18 | International Business Machines Corporation | Assessing latent security risks in Kubernetes cluster |
CN115658311A (zh) * | 2022-10-31 | 2023-01-31 | 北京百度网讯科技有限公司 | 一种资源的调度方法、装置、设备和介质 |
US20240168976A1 (en) * | 2022-11-23 | 2024-05-23 | Charter Communications Operating, Llc | Dynamic generation and deployment of a container group specification that matches a taint |
CN117785446A (zh) * | 2023-12-18 | 2024-03-29 | 慧之安信息技术股份有限公司 | 基于弹性资源分配策略的K8s存储资源分配方法和*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Yahia et al. | Comprehensive survey for cloud computing based nature-inspired algorithms optimization scheduling | |
US10003500B2 (en) | Systems and methods for resource sharing between two resource allocation systems | |
CN112256423B (zh) | 分布式资源管理***中的动态租户结构调整的***、设备和过程 | |
US10552161B2 (en) | Cluster graphical processing unit (GPU) resource sharing efficiency by directed acyclic graph (DAG) generation | |
CN115185697A (zh) | 一种基于kubernetes的集群资源调度方法、***、设备和存储介质 | |
US10394477B2 (en) | Method and system for memory allocation in a disaggregated memory architecture | |
US9141433B2 (en) | Automated cloud workload management in a map-reduce environment | |
CN105897805B (zh) | 对多层架构的数据中心的资源进行跨层调度的方法和装置 | |
CN110209484B (zh) | 基于多云和安全映射的可信云任务调度***及方法 | |
US20210027401A1 (en) | Processes and systems that determine sustainability of a virtual infrastructure of a distributed computing system | |
US11237862B2 (en) | Virtualized network function deployment | |
US11467874B2 (en) | System and method for resource management | |
US10078428B2 (en) | Placement of virtual machines on physical hosts based on collocation rules | |
US11263054B2 (en) | Memory-aware placement for virtual GPU enabled systems | |
US11372683B2 (en) | Placement of virtual GPU requests in virtual GPU enabled systems using a requested memory requirement of the virtual GPU request | |
US10635492B2 (en) | Leveraging shared work to enhance job performance across analytics platforms | |
CN107562521B (zh) | 一种资源管理方法及装置 | |
CN111045802B (zh) | Redis集群组件调度***及方法、平台设备 | |
CN112799851B (zh) | 多方安全计算中的数据处理方法和相关装置 | |
CN110221910A (zh) | 用于执行mpi作业的方法和装置 | |
US20190171487A1 (en) | Method, device, and computer readable medium for managing dedicated processing resources | |
CN113986509A (zh) | 资源对象的管理方法、装置、电子设备及计算机存储介质 | |
CN116097236A (zh) | 用于混合云环境中工作负载的自动管理的可扩展算子 | |
US9942083B1 (en) | Capacity pool management | |
Liu et al. | KubFBS: A fine‐grained and balance‐aware scheduling system for deep learning tasks based on kubernetes |
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 |