CN112835714B - 云边环境中面向cpu异构集群的容器编排方法、***及介质 - Google Patents
云边环境中面向cpu异构集群的容器编排方法、***及介质 Download PDFInfo
- Publication number
- CN112835714B CN112835714B CN202110128170.8A CN202110128170A CN112835714B CN 112835714 B CN112835714 B CN 112835714B CN 202110128170 A CN202110128170 A CN 202110128170A CN 112835714 B CN112835714 B CN 112835714B
- Authority
- CN
- China
- Prior art keywords
- container
- cpu
- node
- scheduled
- architecture
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
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/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种云边环境中面向CPU异构集群的容器编排方法、***及介质,本发明方法包括针对被调度的容器单元,根据其中容器支持的CPU架构筛选集群节点,根据集群节点的CPU性能进行排序;基于排序后的集群节点,进行与CPU架构无关的调度流程,确定对应的目标节点;根据目标节点的CPU架构更新被调度的容器单元的配置中的容器镜像名,根据目标节点的CPU性能更新被调度的容器单元的配置中的CPU资源配置;将被调度的容器单元与目标节点进行节点绑定。本发明能够保证部署容器部署过程中正确拉取与节点CPU架构匹配的容器镜像,同一容器部署在不同节点上具有相近的性能,实现异构集群下部署容器时节点CPU架构、性能透明。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种云边环境中面向CPU异构集群的容器编排方法、***及介质。
背景技术
Kubernetes是一个开源的容器编排***,屏蔽容器的使用细节,旨在更方便地来部署容器应用。Kubernetes具有丰富的容器集群编排功能,采用组件模块化设计,且易于扩展,已经成为应用最广泛的容器编排***。
目前,Kubernetes主要部署于云端数据中心用于容器集群的管理,数据中心的节点通常是同构的,节点之间的差异很小。KubeEdge将云端Kubernetes集群扩展到边缘,将边缘节点纳入云端进行统一管理,使得一个Kubernetes集群内的容器可以部署在云端和边缘端的任意位置。K3s是Kubernetes的一个轻量级发行版,对功能进行了简化,降低了对CPU、主存的要求,主要应用于边缘环境下节点资源受限场景。
与云端环境不同,边缘环境中的节点存在多种形式的异构,比较突出的是边节点与边节点、云节点与边节点的CPU指令集架构(ISA:Instruction Set Architecture)会存在不同,简称CPU架构,应用程序的可执行文件与CPU架构和操作***紧耦合,必须匹配才可运行,容器镜像中包含了多个可执行文件,因此一个容器镜像通常只能部署于一种CPU架构、操作***的节点上。应用程序为支持多个不同的CPU架构和操作***,会编译不同版本的可执行文件,在容器应用则表现为不同版本的容器镜像。目前多架构容器镜像的支持主要有两种方式,一是依赖于容器镜像仓库,开放容器规范(OCI:Open ContainerInitiative)定义了镜像索引(属于可选项),用一个清单文件描述一个容器应用不同架构、操作***版本的容器镜像,这些不同版本的容器镜像使用一个名字索引,称镜像索引名,客户端在拉取容器镜像时根据请求参数(镜像索引名、CPU架构和操作***类型)返回与客户端架构、操作***一致版本的镜像。二是在容器镜像名中加入CPU架构的字段,形如“镜像名-架构:版本号”或“镜像名:版本号-架构”,由于容器技术主要应用于Linux操作***,因此一般不考虑操作***类型。由于镜像名不同,在目标节点拉取镜像之后需要手动的修改容器镜像名,使得不同架构对应的容器镜像名一致,才可成功应用Kubernetes容器编排文件。上述两种方式都依赖人工进行可用CPU架构的确认,两种方式混合使用,难以做到CPU异构环境中部署容器时CPU架构透明。
另一方面,边与边节点、以及边与云节点往往存在异构性,即使是同一种CPU架构,其各自的CPU性能可能会有明显的差异。例如,低端设备的CPU性能与高端设备的CPU性能差异巨大。目前,Kubernetes的CPU资源抽象机制认为所有节点的CPU核心等价,即单线程能力相同,因此只适用于具有同构节点的数据中心集群。在CPU异构集群场景下部署容器无法为不同节点上的容器准确的分配CPU资源,导致部分容器实例性能不足或节点计算资源利用率低下。目前这方面的研究较少,针对云边环境中异构CPU节点以及CPU性能差异,尚无文献可考的面向CPU异构集群的容器部署优化方法。在云端数据中心,一般所有节点同构,因此可通过静态的方法配置容器镜像和CPU资源。而在CPU异构集群中,目标节点在调度之后确定,因此容器部署的目标CPU架构和性能不能事先确定,无法通过静态的方法准确配置容器的镜像名和CPU资源。因此,云边环境下Kubernetes在CPU异构集群场景中存在多架构镜像镜像部署能力不足、CPU资源分配粗放等问题。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种云边环境中面向CPU异构集群的容器编排方法、***及介质,本发明能够保证部署容器部署过程中正确拉取与节点CPU架构匹配的容器镜像,同一容器部署在不同节点上具有相近的性能,实现异构集群下部署容器时节点CPU架构、性能透明。
为了解决上述技术问题,本发明采用的技术方案为:
一种云边环境中面向CPU异构集群的容器编排方法,包括:
1)针对被调度的容器单元,根据其中容器支持的CPU架构筛选集群节点,所述被调度的容器单元包括一个或多个CPU架构相同的容器;
2)针对筛选后的集群节点,根据集群节点的CPU性能进行排序;
3)基于排序后的集群节点,进行与CPU架构无关的调度流程,确定对应的目标节点;
4)根据目标节点的CPU架构更新被调度的容器单元的配置中的容器镜像名,根据目标节点的CPU性能更新被调度的容器单元的配置中的CPU资源配置;
5)将被调度的容器单元与目标节点进行节点绑定。
可选地,步骤1)包括:
1.1)根据被调度的容器单元的配置中定义的容器镜像名,查询预设的多架构容器镜像数据库,所述多架构容器镜像数据库中记录有指定版本的容器镜像名及其支持的架构之间的映射关系,若查询多架构容器镜像数据库失败,则判定被调度的容器单元不可调度,结束并退出,否则根据查询多架构容器镜像数据库得到的支持的架构集合的交集,得到被调度的容器单元对应的可部署架构集合;
1.2)判断被调度的容器单元对应的可部署架构集合是否为空,若可部署架构集合为空,则判定被调度的容器单元不可调度,结束并退出;否则跳转下一步;
1.3)根据被调度的容器单元对应的可部署架构集合,对集群中的每一个集群节点进行过滤:读取该集群节点对应的CPU架构信息,若该集群节点的CPU架构信息不属于可部署架构集合,则标记该集群节点为不可调度,否则标记该集群节点为可调度,最终将所有标记为可调度的集群节点作为被调度的容器单元对应的可部署节点集合;
1.4)判断被调度的容器单元对应的可部署节点集合是否为空,若可部署节点集合为空,则判定被调度的容器单元不可调度,结束并退出;否则跳转步骤2)。
可选地,步骤1)之前还包括建立多架构容器镜像数据库的步骤:收集多架构容器镜像信息,包含容器镜像名、镜像对应的CPU架构和操作***,使用容器应用的名字作为键,据此得到各个容器应用对应的不同架构、操作***版本的容器镜像信息,并构建得到多架构容器镜像数据库。
可选地,步骤2)包括:首先针对可部署节点集合中的每一个节点i,获取该节点的CPU资源数以及相对基准CPU性能的CPU性能数值ki,得到节点i的CPU性能数值;然后,将所有的节点按照CPU性能数值进行排序,从而确定各个节点的优先级。
可选地,步骤2)中获取该节点的CPU资源数以及相对基准节点的CPU性能数值ki的来源为预设的集群节点性能信息库,步骤2)之前还包括建立集群节点性能信息库的步骤:针对集群中每一个节点i,测试节点i的CPU单线程性能测试数据,并将节点i的CPU单线程性能测试数据除以指定的CPU单线程性能测试数据,所述指定的CPU单线程性能测试数据为基准CPU性能,从而得到节点i的相对基准节点的CPU性能数值ki,并将所有节点机器相对基准节点的CPU性能数值建立集群节点性能信息库。
可选地,步骤4)中根据目标节点的CPU架构更新被调度的容器单元的配置中的容器镜像名的步骤包括:根据被调度的容器单元的容器镜像名字段的容器应用名在多架构容器镜像数据库查询各容器应用支持的CPU架构版本的镜像名和CPU架构,若查询失败,则判定多架构容器镜像数据库中不存在此容器应用名,标记被调度的容器单元不可调度,结束并退出;若查询成功,则将新的容器镜像名作为目标节点的CPU架构对应的容器镜像名,并更新到本地缓存中被调度的容器单元的容器镜像名字段。
可选地,步骤4)中根据目标节点的CPU性能更新被调度的容器单元的配置中的CPU资源配置的步骤包括:根据目标节点在集群节点性能信息库中查找得到目标节点的CPU性能数值k,若查找成功,则针对被调度的容器单元的配置中各容器的CPU资源配置包含的运行所需最小值Request.cpu和最大可用值Limits.cpu,首先判断运行所需最小值Request.cpu为空而最大可用值Limits.cpu不为空是否成立,若成立则设置运行所需最小值Request.cpu的值为最大可用值Limits.cpu,然后将最大可用值Limits.cpu的值除以k作为新的最大可用值Limits.cpu,最大可用值Limits.cpu的值除以k作为新的最大可用值Limits.cpu的值,并更新到本地缓存的被调度的容器单元的配置中;若查找失败,则将被调度的容器单元的配置中各容器的CPU资源配置包含的运行所需最小值Request.cpu和最大可用值Limits.cpu均更新为基准CPU性能,并更新到本地缓存的被调度的容器单元的配置中。
可选地,步骤5)包括:
5.1)根据被调度的容器单元的名字和名字空间读取预设的Etcd数据库得到编码后的被调度的容器单元的对象,所述Etcd数据库保存有集群中所有被调度的容器单元的状态的Key-Value类型的缓存数据库;对编码后的被调度的容器单元的对象进行解码,得到被调度的容器单元对象;
5.2)将本地缓存的被调度的容器单元的容器镜像名和容器CPU资源配置更新到被调度的容器单元对象;
5.3)更新被调度的容器单元对象的状态为已调度,将目标节点名字写入被调度的容器单元对象,编码被调度的容器单元对象,以相同的键值写入Etcd数据库,调度完成;
5.4)各节点创建容器的后台进程将读取已调度、未部署的被调度的容器单元的对象创建容器实例。
此外,本发明还提供一种云边环境中面向CPU异构集群的容器编排***,包括相互连接的微处理器和存储器,所述微处理器被编程或配置以执行所述云边环境中面向CPU异构集群的容器编排方法的步骤。
此外,本发明还提供一种计算机可读存储介质,该计算机可读存储介质中存储有被编程或配置以执行所述云边环境中面向CPU异构集群的容器编排方法的计算机程序。
和现有技术相比,本发明具有下述优点:本发明针对已有容器编排***Kubernetes无法处理云边环境中存在的节点CPU异构、节点CPU性能差异的问题,构建了多架构容器镜像信息库、节点CPU性能信息库;在调度前,解析容器可用架构,根据可用架构对节点进行了筛选,有效缩减了后续调度流程遍历节点的规模,提高了调度效率,保证调度结果的目标节点CPU架构与容器支持的CPU架构匹配;本发明针对Kubernetes对CPU资源抽象机制不考虑节点性能差异的不足,在节点打分时对节点的CPU资源数值依据节点性能对数值进行了转换,转换后不同节点相同的CPU资源数值代表相近的运算能力,得到的节点优先级更加准确;本发明根据调度结果动态更新容器镜像和CPU资源配置,并使用新的配置完成节点绑定和容器部署,保证容器编排时在不同节点上创建时拉取与节点CPU架构匹配的容器镜像,同一容器运行在不同节点具有相近的性能,实现容器部署操作屏蔽节点CPU架构和节点性能差异,使得多架构容器镜像正确分发和同一容器部署在不同节点上具有相近的性能,实现CPU异构集群场景中节点CPU架构和节点性能对容器部署操作透明,能够有效提高云边环境CPU异构集群中容器部署效率。
附图说明
图1为本发明实施例方法的基本流程图。
图2为本发明实施例方法的应用整体流程图。
图3为本发明实施例中根据容器镜像CPU架构过滤节点步骤的流程图。
图4为本发明实施例中动态配置Pod多架构容器镜像步骤的流程图。
图5为本发明实施例中根据节点性能动态配置容器CPU资源步骤的流程图。
图6为本发明实施例中Pod与节点绑定步骤的流程图。
图7为本发明实施例方法的应用环境实例。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下将以Kubernetes容器编排***为例,结合附图和实施例对本发明云边环境中面向CPU异构集群的容器编排方法、***及介质进行进一步详细说明。需要说明的是,本发明云边环境中面向CPU异构集群的容器编排方法、***及介质并不依赖于Kubernetes容器编排***,其同样也可以适用于其它容器编排***。
如图1和图2所示,本实施例云边环境中面向CPU异构集群的容器编排方法包括:
1)针对被调度的容器单元,根据其中容器支持的CPU架构筛选集群节点,所述被调度的容器单元包括一个或多个CPU架构相同的容器;
2)针对筛选后的集群节点,根据集群节点的CPU性能进行排序;
3)基于排序后的集群节点,进行与CPU架构无关的调度流程,确定对应的目标节点;
4)根据目标节点的CPU架构更新被调度的容器单元的配置中的容器镜像名,根据目标节点的CPU性能更新被调度的容器单元的配置中的CPU资源配置;
5)将被调度的容器单元与目标节点进行节点绑定。
对于Kubernetes容器编排***而言,Pod包含一组容器,每个容器有各自的容器镜像、CPU资源,Pod内的容器有相同的名字空间,共享网络等计算机资源,因此本实施例中采用Pod作为一个被调度的容器单元来进行调度。下文中如未特别强调,Pod等同为容器单元,被调度Pod特指被调度的容器单元。此外,也可以根据需要采用其他方式构建包括一个或多个CPU架构相同的容器的容器单元来作为被调度对象。Pod是Kubernetes的最小调度单位,它定义了一个以上的容器,通过编排文件配置Pod,编排文件中的容器镜像名字段在本文中默认为容器应用名。
新创建的Pod会通过调度器决定部署在哪一个节点上;进入调度流程之前,根据待调度Pod中各容器镜像名字段的容器应用名查询多架构容器镜像数据库,获得各容器应用支持的架构,即各容器应用有哪些CPU架构版本的容器镜像,若在多架构容器镜像数据库中不存在此容器应用名,则标记此Pod不可调度,结束调度流程。本实施例中,被调度Pod将由调度器决定部署节点。被调度Pod内定义的多个容器的镜像支持的架构存在不同,根据容器镜像名查询多架构镜像数据库,计算所有容器镜像都支持的架构集合,据此架构集合对集群节点进行过滤。如图3所示,步骤1)包括:
1.1)根据被调度的容器单元的配置中定义的容器镜像名,查询预设的多架构容器镜像数据库,所述多架构容器镜像数据库中记录有指定版本的容器镜像名及其支持的架构之间的映射关系,若查询多架构容器镜像数据库失败,则判定被调度的容器单元不可调度,结束并退出,否则根据查询多架构容器镜像数据库得到的支持的架构集合的交集,得到被调度的容器单元对应的可部署架构集合;
1.2)判断被调度的容器单元对应的可部署架构集合是否为空,若可部署架构集合为空,则判定被调度的容器单元不可调度,结束并退出;否则跳转下一步;
1.3)根据被调度的容器单元对应的可部署架构集合,对集群中的每一个集群节点进行过滤:读取该集群节点对应的CPU架构信息,若该集群节点的CPU架构信息不属于可部署架构集合,则标记该集群节点为不可调度,否则标记该集群节点为可调度,最终将所有标记为可调度的集群节点作为被调度的容器单元对应的可部署节点集合;
1.4)判断被调度的容器单元对应的可部署节点集合是否为空,若可部署节点集合为空,则判定被调度的容器单元不可调度,结束并退出;否则跳转步骤2)。
参见图3,本实施例中根据被调度Pod中定义的容器镜像名查询多架构容器镜像数据库,获得各容器镜像支持的所有架构,若在多架构容器镜像数据库中不存在此容器镜像名,则标记此Pod为不可调度,结束调度流程;计算各容器镜像支持的CPU架构集合的交集,得到Pod可部署架构集合Pod.Arches;本文中默认编排文件中容器镜像字段使用的是多架构容器镜像信息库中的容器应用名,因此待部署Pod中的容器镜像名为容器应用名,通过镜容器应用名可以从多架构容器镜像信息库中得到此容器应用支持的所有版本的容器镜像名及对应的CPU架构、操作***信息;根据Pod.Arches对集群节点进行过滤,以降低后续调度流程计算量;从缓存中读取集群内所有节点,若节点的CPU架构不属于可部署架构集合Pod.Arches,标记节点为不可调度,此步骤可并行执行。
本实施例中,步骤1)之前还包括建立多架构容器镜像数据库的步骤:收集多架构容器镜像信息,包含容器镜像名、镜像对应的CPU架构和操作***(若容器镜像使用了镜像索引,一个容器应用的不同CPU架构和操作***版本的镜像可以是相同的名字),使用容器应用的名字作为键,据此得到各个容器应用对应的不同架构、操作***版本的容器镜像信息,并构建得到多架构容器镜像数据库。
本实施例中,步骤2)包括:首先针对可部署节点集合中的每一个节点i,获取该节点的CPU资源数以及相对基准CPU性能的CPU性能数值ki,得到节点i的CPU性能数值;然后,将所有的节点按照CPU性能数值进行排序,从而确定各个节点的优先级。本实施例中,被调度Pod内容器的CPU资源配置数值以基准节点单线程性能配置,基准节点的CPU性能数值为1.0,不同性能的节点有不同的CPU性能数值ki,表示节点的单线程性能为基准节点的ki倍。在基于节点CPU资源对节点打分时,先对节点CPU资源数值乘以ki倍,得到转换后CPU资源数值,此时不同节点同等大小CPU资源数值代表的运算能力近似。根据转换后的CPU资源数值对节点进行打分,得到节点优先级,然后进行其它调度流程。
本实施例中,步骤2)中获取该节点的CPU资源数以及相对基准节点的CPU性能数值ki的来源为预设的集群节点性能信息库,步骤2)之前还包括建立集群节点性能信息库的步骤:针对集群中每一个节点i,测试节点i的CPU单线程性能测试数据,并将节点i的CPU单线程性能测试数据除以指定的CPU单线程性能测试数据,所述指定的CPU单线程性能测试数据为基准CPU性能,从而得到节点i的相对基准节点的CPU性能数值ki,并将所有节点机器相对基准节点的CPU性能数值建立集群节点性能信息库。根据具体的应用,选取合适的性能测试工具,此性能测试工具可以是实际部署的应用,分别对集群内节点进行性能测试,获得性能测试结果,选取集群中任一节点作为基准节点,基准节点的性能数值为1,其余节点的性能数值为k,表示节点的单线程性能为基准节点的k倍,相同型号的节点性能相近,认为性能数值相等,因此只测试其中一个;为简化上述步骤,可根据公开的CPU单线程性能测试数据,一般包含所有主流的CPU,通过计算得到性能数值,基准节点选取与上述步骤相同,公开CPU的性能测试结果一般由大量的测试工具得出,表示CPU的通用计算性能,结果表示为性能分数,在同一测试标准下,性能分数与真实性能成正比,性能分数越高表示性能越强,性能数值计算方法为:节点性能数值=节点CPU的性能分数÷基准节点CPU的性能分数。
本实施例中,步骤3)基于排序后的集群节点,进行与CPU架构无关的调度流程,确定对应的目标节点,该调度与CPU架构无关,具体过程不在本实施例方法讨论之列,故在此不再展开说明。本领域技术人员可以根据需要选择与CPU架构无关的调度策略。
经过一系列调度流程过后,得到目标节点,然后进行节点绑定操作,最后由目标节点上运行的守护进程将待部署Pod将部署到目标节点之上。在完成绑定之前,根据目标节点的CPU架构更新待部署Pod内的容器镜像名。
如图4所示,本实施例步骤4)中根据目标节点的CPU架构更新被调度的容器单元的配置中的容器镜像名的步骤包括:根据被调度的容器单元的容器镜像名字段的容器应用名在多架构容器镜像数据库查询各容器应用支持的CPU架构版本的镜像名和CPU架构,若查询失败,则判定多架构容器镜像数据库中不存在此容器应用名,标记被调度的容器单元不可调度,结束并退出;若查询成功,则将新的容器镜像名作为目标节点的CPU架构对应的容器镜像名,并更新到本地缓存中被调度的容器单元的容器镜像名字段。参见图4,假定容器应用的容器镜像名字段为“Image”、目标节点的CPU架构为“Arch”且对应的容器镜像名为“ArchImage”,则最终若查询成功,则将新的容器镜像名“ArchImage”作为目标节点的CPU架构对应的容器镜像名,即:Image=ArchImage。
如图5所示,本实施例步骤4)中根据目标节点的CPU性能更新被调度的容器单元的配置中的CPU资源配置的步骤包括:根据目标节点在集群节点性能信息库中查找得到目标节点的CPU性能数值k,若查找成功,则针对被调度的容器单元的配置中各容器的CPU资源配置包含的运行所需最小值Request.cpu和最大可用值Limits.cpu,首先判断运行所需最小值Request.cpu为空而最大可用值Limits.cpu不为空是否成立,若成立则设置运行所需最小值Request.cpu的值为最大可用值Limits.cpu,然后将最大可用值Limits.cpu的值除以k作为新的最大可用值Limits.cpu,最大可用值Limits.cpu的值除以k作为新的最大可用值Limits.cpu的值,并更新到本地缓存的被调度的容器单元的配置中;若查找失败,则将被调度的容器单元的配置中各容器的CPU资源配置包含的运行所需最小值Request.cpu和最大可用值Limits.cpu均更新为基准CPU性能,并更新到本地缓存的被调度的容器单元的配置中。参见图5,将最大可用值Limits.cpu的值除以k作为新的最大可用值Limits.cpu,最大可用值Limits.cpu的值除以k作为新的最大可用值Limits.cpu的值可表示为:
Limit.cpu=Limit.cpu/k,Request.cpu=Request.cpu/k。
本实施例中,Etcd数据库保存集群中所有状态,是一个Key-Value类型的缓存数据库,其余组件均无状态信息;调度器根据Etcd数据库中存储Pod对象的状态判断是否进行调度,若Pod处于未调度状态,将加入到调度队列中;根据目标节点更新完本地缓存中的待部署Pod对象之后,执行待部署Pod与目标节点的绑定操作。Etcd数据库根据本地缓存的待部署Pod的名称空间(Namespace)和名字(Name),从集群状态数据库中获取待部署Pod对象,此是Pod对象是经过序列化后存储的,因此先对其进行反序列化解码,即可得到Etcd-Pod。
如图6所示,本实施例中步骤5)包括:
5.1)根据被调度的容器单元的名字和名字空间读取预设的Etcd数据库得到编码后的被调度的容器单元的对象,所述Etcd数据库保存有集群中所有被调度的容器单元的状态的Key-Value类型的缓存数据库;对编码后的被调度的容器单元的对象进行解码,得到被调度的容器单元对象(本实施例中为Etcd-Pod);
5.2)将本地缓存的被调度的容器单元的容器镜像名和容器CPU资源配置更新到被调度的容器单元对象Etcd-Pod;
5.3)更新被调度的容器单元对象Etcd-Pod的状态为已调度,将目标节点名字写入被调度的容器单元对象Etcd-Pod,编码被调度的容器单元对象Etcd-Pod,以相同的键值写入Etcd数据库,调度完成;
5.4)各节点创建容器的后台进程将读取已调度、未部署的被调度的容器单元的对象创建容器实例,从而可确保同一Pod在不同节点上创建的实例将有相近的性能。
图7为本发明实施例方法的应用环境实例。参见图7,该Kubernetes容器编排***中包含云端工作节点、云端控制节点和边缘工作节点。其中,云端控制节点为本发明实施例方法的执行主体,云端控制节点中的相关组件包括:控制器:控制平面组件之一,包含多种资源控制器,负责创建、删除各种资源,如Pod副本控制器创建Pod;Api服务:控制平面组件之一,所有组件通过Api服务以HTTP REST(表述性状态传递,Representational StateTransfer)API方式进行交互;调度器:控制平面组件之一,决定Pod部署在哪一个节点之上,包含节点过滤程序单元、节点打分程序单元、配置更新程序单元、Pod-节点绑定程序单元和其它与CPU无关的调度单元;云端核心:控制平面组件之一,来源于KubeEdge,负责边缘节点的注册、通信等;集群状态数据库:控制平面组件之一,一个键-值类型的数据库,保存集群所有的状态;多架构容器镜像信息收集单元:收集多架构容器镜像信息并写入多架构容器镜像信息库,包含容器镜像的镜像名、CPU架构和操作***;节点性能信息收集单元:收集集群节点的单线程性能信息,将其写入节点性能信息库。其中,调度器是执行本发明实施例方法的关键组件。云端工作节点的主要组件包括节点代理,节点代理运行于云端工作节点,负责创建并管理Pod实例。边缘工作节点的主要组件包括边缘核心,边缘核心是节点代理的一种实现,来源于KubeEdge,运行于边缘工作节点,负责与云端核心通信,创建并管理Pod实例。
综上所述,本实施例方法包括收集多架构容器的镜像信息,包含容器镜像名和对应的CPU架构、操作***,构建多架构容器镜像信息库;收集CPU异构集群内各节点的CPU单线程性能信息,构建集群节点性能信息库;解析待部署Pod的容器配置,获得容器镜像名,根据容器镜像名查询多架构容器镜像信息库,获得容器支持的架构,进而计算待部署Pod可部署的架构,并根据可部署架构过滤集群节点;在基于CPU资源的节点打分调度流程,先根据集群节点性能信息库,得到集群节点性能,转换节点CPU资源数值,然后利用转换后的数值进行节点打分,进入其它调度流程,其它调度流程指基于主存、Pod标签、端口等与CPU无关的调度;经调度流程得到目标节点,根据目标节点的CPU架构更新待部署Pod的容器镜像名,根据目标节点的CPU性能更新待部署Pod的容器CPU资源配置;使用新的待部署Pod配置更新Etcd数据库,并完成Pod与节点的绑定。本实施例方法针对现有容器编排***Kubernetes在CPU异构集群场景下不支持多架构镜像部署、异构节点CPU资源分配的问题,以及已有容器编排***Kubernetes无法处理云边环境中存在的节点CPU异构、节点CPU性能差异的问题,构建了多架构容器镜像信息库、节点CPU性能信息库;在调度前,解析容器可用架构,根据可用架构对节点进行了筛选,有效缩减了后续调度流程遍历节点的规模,提高了调度效率,保证调度结果的目标节点CPU架构与容器支持的CPU架构匹配;本发明针对Kubernetes对CPU资源抽象机制不考虑节点性能差异的不足,在节点打分时对节点的CPU资源数值依据节点性能对数值进行了转换,转换后不同节点相同的CPU资源数值代表相近的运算能力,得到的节点优先级更加准确;本发明根据调度结果动态更新容器镜像和CPU资源配置,并使用新的配置完成节点绑定和容器部署,保证容器编排时在不同节点上创建时拉取与节点CPU架构匹配的容器镜像,同一容器运行在不同节点具有相近的性能,实现容器部署操作屏蔽节点CPU架构和节点性能差异,使得多架构容器镜像正确分发和同一容器部署在不同节点上具有相近的性能,实现CPU异构集群场景中节点CPU架构和节点性能对容器部署操作透明,能够有效提高云边环境CPU异构集群中容器部署效率。
此外,本实施例还提供一种云边环境中面向CPU异构集群的容器编排***,包括相互连接的微处理器和存储器,所述微处理器被编程或配置以执行前述云边环境中面向CPU异构集群的容器编排方法的步骤。
此外,本实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有被编程或配置以执行前述云边环境中面向CPU异构集群的容器编排方法的计算机程序。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (6)
1.一种云边环境中面向CPU异构集群的容器编排方法,其特征在于,包括:
1)针对被调度的容器单元,根据其中容器支持的CPU架构筛选集群节点,所述被调度的容器单元包括一个或多个CPU架构相同的容器;
2)针对筛选后的集群节点,根据集群节点的CPU性能进行排序;
3)基于排序后的集群节点,进行与CPU架构无关的调度流程,确定对应的目标节点;
4)根据目标节点的CPU架构更新被调度的容器单元的配置中的容器镜像名,根据目标节点的CPU性能更新被调度的容器单元的配置中的CPU资源配置;
5)将被调度的容器单元与目标节点进行节点绑定;
步骤2)包括:首先针对可部署节点集合中的每一个节点i,获取该节点的CPU资源数以及相对基准CPU性能的CPU性能数值ki,得到节点i的CPU性能数值;然后,将所有的节点按照CPU性能数值进行排序,从而确定各个节点的优先级;
步骤2)中获取该节点的CPU资源数以及相对基准节点的CPU性能数值ki的来源为预设的集群节点性能信息库,步骤2)之前还包括建立集群节点性能信息库的步骤:针对集群中每一个节点i,测试节点i的CPU单线程性能测试数据,并将节点i的CPU单线程性能测试数据除以指定的CPU单线程性能测试数据,所述指定的CPU单线程性能测试数据为基准CPU性能,从而得到节点i的相对基准节点的CPU性能数值ki,并将所有节点及其相对基准节点的CPU性能数值建立集群节点性能信息库;
步骤4)中根据目标节点的CPU架构更新被调度的容器单元的配置中的容器镜像名的步骤包括:根据被调度的容器单元的容器镜像名字段的容器应用名在多架构容器镜像数据库查询各容器应用支持的CPU架构版本的镜像名和CPU架构,若查询失败,则判定多架构容器镜像数据库中不存在此容器应用名,标记被调度的容器单元不可调度,结束并退出;若查询成功,则将新的容器镜像名作为目标节点的CPU架构对应的容器镜像名,并更新到本地缓存中被调度的容器单元的容器镜像名字段;
步骤4)中根据目标节点的CPU性能更新被调度的容器单元的配置中的CPU资源配置的步骤包括:根据目标节点在集群节点性能信息库中查找得到目标节点的CPU性能数值k,若查找成功,则针对被调度的容器单元的配置中各容器的CPU资源配置包含的运行所需最小值Request.cpu和最大可用值Limits.cpu,首先判断运行所需最小值Request.cpu为空而最大可用值Limits.cpu不为空是否成立,若成立则设置运行所需最小值Request.cpu的值为最大可用值Limits.cpu,然后将最大可用值Limits.cpu的值除以k作为新的最大可用值Limits.cpu,最大可用值Limits.cpu的值除以k作为新的最大可用值Limits.cpu的值,并更新到本地缓存的被调度的容器单元的配置中;若查找失败,则将被调度的容器单元的配置中各容器的CPU资源配置包含的运行所需最小值Request.cpu和最大可用值Limits.cpu均更新为基准CPU性能,并更新到本地缓存的被调度的容器单元的配置中。
2.根据权利要求1所述的云边环境中面向CPU异构集群的容器编排方法,其特征在于,步骤1)包括:
1.1)根据被调度的容器单元的配置中定义的容器镜像名,查询预设的多架构容器镜像数据库,所述多架构容器镜像数据库中记录有指定版本的容器镜像名及其支持的架构之间的映射关系,若查询多架构容器镜像数据库失败,则判定被调度的容器单元不可调度,结束并退出,否则根据查询多架构容器镜像数据库得到的支持的架构集合的交集,得到被调度的容器单元对应的可部署架构集合;
1.2)判断被调度的容器单元对应的可部署架构集合是否为空,若可部署架构集合为空,则判定被调度的容器单元不可调度,结束并退出;否则跳转下一步;
1.3)根据被调度的容器单元对应的可部署架构集合,对集群中的每一个集群节点进行过滤:读取该集群节点对应的CPU架构信息,若该集群节点的CPU架构信息不属于可部署架构集合,则标记该集群节点为不可调度,否则标记该集群节点为可调度,最终将所有标记为可调度的集群节点作为被调度的容器单元对应的可部署节点集合;
1.4)判断被调度的容器单元对应的可部署节点集合是否为空,若可部署节点集合为空,则判定被调度的容器单元不可调度,结束并退出;否则跳转步骤2)。
3.根据权利要求2所述的云边环境中面向CPU异构集群的容器编排方法,其特征在于,步骤1)之前还包括建立多架构容器镜像数据库的步骤:收集多架构容器镜像信息,包含容器镜像名、镜像对应的CPU架构和操作***,使用容器应用的名字作为键,据此得到各个容器应用对应的不同架构、操作***版本的容器镜像信息,并构建得到多架构容器镜像数据库。
4.根据权利要求1所述的云边环境中面向CPU异构集群的容器编排方法,其特征在于,步骤5)包括:
5.1)根据被调度的容器单元的名字和名字空间读取预设的Etcd数据库得到编码后的被调度的容器单元的对象,所述Etcd数据库保存有集群中所有被调度的容器单元的状态的Key-Value类型的缓存数据库;对编码后的被调度的容器单元的对象进行解码,得到被调度的容器单元对象;
5.2)将本地缓存的被调度的容器单元的容器镜像名和容器CPU资源配置更新到被调度的容器单元对象;
5.3)更新被调度的容器单元对象的状态为已调度,将目标节点名字写入被调度的容器单元对象,编码被调度的容器单元对象,以相同的键值写入Etcd数据库,调度完成;
5.4)各节点创建容器的后台进程将读取已调度、未部署的被调度的容器单元的对象创建容器实例。
5.一种云边环境中面向CPU异构集群的容器编排***,包括相互连接的微处理器和存储器,其特征在于,所述微处理器被编程或配置以执行权利要求1~4中任意一项所述云边环境中面向CPU异构集群的容器编排方法的步骤。
6.一种计算机可读存储介质,其特征在于,该计算机可读存储介质中存储有被编程或配置以执行权利要求1~4中任意一项所述云边环境中面向CPU异构集群的容器编排方法的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110128170.8A CN112835714B (zh) | 2021-01-29 | 2021-01-29 | 云边环境中面向cpu异构集群的容器编排方法、***及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110128170.8A CN112835714B (zh) | 2021-01-29 | 2021-01-29 | 云边环境中面向cpu异构集群的容器编排方法、***及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112835714A CN112835714A (zh) | 2021-05-25 |
CN112835714B true CN112835714B (zh) | 2023-07-28 |
Family
ID=75931071
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110128170.8A Active CN112835714B (zh) | 2021-01-29 | 2021-01-29 | 云边环境中面向cpu异构集群的容器编排方法、***及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112835714B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111352717B (zh) * | 2020-03-24 | 2023-04-07 | 广西梯度科技股份有限公司 | 一种实现kubernetes自定义调度器的方法 |
CN113645300B (zh) * | 2021-08-10 | 2023-11-28 | 上海道客网络科技有限公司 | 一种基于Kubernetes集群的节点智能调度方法和*** |
CN114138486B (zh) * | 2021-12-02 | 2024-03-26 | 中国人民解放军国防科技大学 | 面向云边异构环境的容器化微服务编排方法、***及介质 |
CN114721719B (zh) * | 2022-04-20 | 2023-08-01 | 上海道客网络科技有限公司 | 一种在集群中容器化部署异构应用的方法和*** |
CN117170812B (zh) * | 2023-09-07 | 2024-05-03 | 中国人民解放军国防科技大学 | 一种基于研发运维一体化架构的数值预报计算云*** |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107239329A (zh) * | 2016-03-29 | 2017-10-10 | 西门子公司 | 云环境下统一资源调度方法及*** |
CN108228347A (zh) * | 2017-12-21 | 2018-06-29 | 上海电机学院 | 一种任务感知的Docker自适应调度*** |
CN110780998A (zh) * | 2019-09-29 | 2020-02-11 | 武汉大学 | 基于Kubernetes的动态负载均衡资源调度方法 |
CN111522639A (zh) * | 2020-04-16 | 2020-08-11 | 南京邮电大学 | Kubernetes集群架构***下多维资源调度方法 |
CN111611087A (zh) * | 2020-06-30 | 2020-09-01 | 中国人民解放军国防科技大学 | 一种资源调度方法、装置和*** |
-
2021
- 2021-01-29 CN CN202110128170.8A patent/CN112835714B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107239329A (zh) * | 2016-03-29 | 2017-10-10 | 西门子公司 | 云环境下统一资源调度方法及*** |
CN108228347A (zh) * | 2017-12-21 | 2018-06-29 | 上海电机学院 | 一种任务感知的Docker自适应调度*** |
CN110780998A (zh) * | 2019-09-29 | 2020-02-11 | 武汉大学 | 基于Kubernetes的动态负载均衡资源调度方法 |
CN111522639A (zh) * | 2020-04-16 | 2020-08-11 | 南京邮电大学 | Kubernetes集群架构***下多维资源调度方法 |
CN111611087A (zh) * | 2020-06-30 | 2020-09-01 | 中国人民解放军国防科技大学 | 一种资源调度方法、装置和*** |
Also Published As
Publication number | Publication date |
---|---|
CN112835714A (zh) | 2021-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112835714B (zh) | 云边环境中面向cpu异构集群的容器编排方法、***及介质 | |
US11379272B2 (en) | Autoscaling using file access or cache usage for cluster machines | |
US9519884B2 (en) | Data driven dynamic workflow | |
US8117641B2 (en) | Control device and control method for information system | |
US9477460B2 (en) | Non-transitory computer-readable storage medium for selective application of update programs dependent upon a load of a virtual machine and related apparatus and method | |
WO2013107012A1 (zh) | 分布式计算任务处理***和任务处理方法 | |
WO2014140971A1 (en) | Deploying parallel data integration applications to distributed computing environments | |
CN108243012B (zh) | 在线计费***ocs中计费应用处理***、方法及装置 | |
CN113645300A (zh) | 一种基于Kubernetes集群的节点智能调度方法和*** | |
Jiang et al. | Symbiosis: Network-aware task scheduling in data-parallel frameworks | |
US11347735B2 (en) | Scalable query processing | |
CN113312161A (zh) | 一种应用调度方法、平台及存储介质 | |
US20220357974A1 (en) | Container creation in a computing system | |
Balasubramanian et al. | Radical-cybertools: Middleware building blocks for scalable science | |
JP6668658B2 (ja) | ジョブ管理方法、ジョブ管理装置及びプログラム | |
CN111104548B (zh) | 一种数据反馈方法、***及存储介质 | |
CN107656796A (zh) | 一种虚拟机冷迁移方法、***及设备 | |
CN114490062A (zh) | 一种本地磁盘的调度方法、装置、电子设备及存储介质 | |
US11461325B2 (en) | Checkpoints in batch file processing | |
CN112580816A (zh) | 机器学习训练资源管理 | |
CN116974689A (zh) | 集群容器调度方法、装置、设备及计算机可读存储介质 | |
US20200301737A1 (en) | Configurable data parallelization method and system | |
CN112363819A (zh) | 大数据任务动态编排调度方法、装置及计算设备 | |
Hanif et al. | Jargon of Hadoop MapReduce scheduling techniques: a scientific categorization | |
WO2018198745A1 (ja) | 計算資源管理装置、計算資源管理方法、及びコンピュータ読み取り可能な記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |