System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种应用于容器编排系统的容器调度方法技术方案_技高网

一种应用于容器编排系统的容器调度方法技术方案

技术编号:43379295 阅读:13 留言:0更新日期:2024-11-19 17:56
本发明专利技术提供了一种应用于容器编排系统的容器调度方法,所述方法包括:步骤S1、获取容器之间的依赖关系;步骤S2、基于容器之间的依赖关系确定整体资源均衡度和整体资源占用率;步骤S3、以最小化整体资源均衡度和整体资源占用率为优化目标,采用预设的多目标优化算法执行多轮迭代计算得到目标容器调度策略,并根据目标容器调度策略将容器调度至容器编排系统的工作节点中。本发明专利技术通过考虑容器之间的依赖关系及其所带来的资源节约,并将根据依赖关系确定的整体资源均衡度和整体资源占用率作为优化目标来求解容器调度策略,使得容器调度策略在尽可能保持资源负载均衡的同时降低整体资源占用率。

【技术实现步骤摘要】

本专利技术涉及软件虚拟化,具体来说,涉及软件虚拟化的容器调度技术,更具体地说,涉及一种应用于容器编排系统的容器调度方法


技术介绍

1、随着互联网技术的飞速发展和it应用的广泛普及,现代企业对于应用程序的需求日益复杂化和多样化。传统的单体应用架构因其灵活性差、扩展性不足等问题,已难以满足现代应用的高并发、高可用性和快速迭代的需求。因此,微服务架构、容器化技术等新兴架构风格逐渐成为业界关注的焦点。

2、早期的虚拟化技术主要以虚拟机(vm)为资源分配和调度的基本单位。虚拟机通过模拟完整的硬件环境来运行应用程序,虽然提供了较高的隔离性和安全性,但也存在资源利用率低、内存访问效率低、开发周期长等问题。这些问题限制了虚拟化技术在现代应用中的广泛应用。

3、为了克服传统虚拟化技术的不足,docker容器技术应运而生。docker与虚拟机方式显著不同,它不进行硬件维度的虚拟化,而是共享宿主机的内核,以进程的方式运行容器。这种轻量级的虚拟化方式使得docker容器在启动速度、资源占用和性能表现上均优于传统虚拟机。docker容器包含了应用程序文件及其依赖库文件,这些文件被打包成一个独立的镜像,可以在任何支持docker的环境中快速部署和运行。由于容器之间互不影响,docker提供了高效的资源隔离和强大的可扩展性。此外,docker的快速启动和轻量级特性使其成为发布和构建应用程序的首选工具,越来越多的开发者选择使用docker作为开发环境。

4、docker容器技术的普及虽然极大地简化了应用程序的打包、分发和部署过程,但随着软件系统规模的增长,手动管理和部署容器镜像变得愈发复杂且不可行。在大型规模化软件系统中,需要考虑高可用性、自动化部署、水平扩展、负载均衡、故障恢复和资源优化等多个方面。这些任务超出了手动管理的范围,需要一种自动化、智能化的平台来管理和调度容器。针对这种情形,kubernetes(简称k8s)应运而生,其由google发布并开源,是目前微服务领域最为常用的开源的容器编排和管理平台,专门用于自动化应用程序的部署、扩展和管理。它提供了一套丰富的工具,使得容器集群的管理变得更加简单和高效。通过kubernetes可以实现容器化应用程序的高可用性、弹性伸缩、自动部署和自我修复。kubernetes集群具有较为完善的管理能力,它的理念是让用户部署的应用程序可以按照用户的期待在集群中自我运行,自我修复,维持指定状态,而不需要人为过多的干预。另外kubernetes也具有较强的可扩展能力,开发者可以随时扩展其中的组件以应对实际中不断变化的、复杂的生产环境。

5、在大型规模化软件系统中,kubernetes作为容器编排平台能够解决诸多复杂的部署和管理挑战,但决定其性能和效率的关键之一是其选择的调度策略,调度策略指在kubernetes中用于决定如何将容器实例分配到集群中的工作节点上。在不同的容器调度场景下,通过合理的调度策略可以确保应用程序获得所需的计算、存储和网络资源,并且能够在集群中进行有效的负载均衡,从而提高系统的整体性能。kubernetes对容器的调度通过调度pod实现。pod是kubernetes中最小的调度单元,它可以包含一个或多个紧密关联的容器,共享网络和存储资源,并在同一工作节点上运行。当kubernetes调度一个pod时,实际上是在为其中的所有容器分配一个共同的工作节点,保证它们能够协同工作并共享资源。pod内的容器通常具有相同的生命周期,可以共享本地文件系统、ip地址和端口空间。

6、kubernetes的容器调度流程为当接收到用户提交的pod列表时,需要执行两个流程来确定将该pod调度到某个集群工作节点上。以图1所展示的调度过程为例来说明如何调度容器。kubernetes的容器调度流程为:预选过程:kube-scheduler获取pod列表并根据特定策略筛选出满足pod申请条件的节点;优选过程:根据特定的策略与算法对筛选出的节点进行打分,并根据打分进行排序,最后选取优先级最高的节点,并将pod调度到此节点上。在容器调度过程中,kubernetes内置如下预选算法用于容器调度:pod fits host:用于指定在某个集群工作节点上运行、pod fits resources:用于检查节点可用资源是否满足,podfits hostports:用于检查pod申请端口是否占用,pod selector matches:用于检查节点label参数匹配,check node memory pressure:用于检查节点内存压力,check node diskpressure:检查节点磁盘压力,no disk conflict:检查挂载卷与pod配置冲突。除了上述预选算法,kubernetes还内置了如下优选算法用于容器调度:least requested priority:用于优先选择节点中资源消耗最小的节点,根据目前cpu与内存的使用情况进行打分,cpu与内存占用率的加合越小,工作节点打分越高,该算法可以保证pod容器运行时的最优性能;balanced resource allocation:用于优先选择cpu与内存利用率相近的节点,根据cpu与内存资源利用率的差值进行打分,cpu与内存资源利用率的差值越小,工作节点打分越高,该算法可以保证集群工作节点内资源的均衡性;image locality priority:优先从节点列表中选择已经存在镜像的工作节点,根据节点镜像总大小进行打分,镜像总大小越大,工作节点分值越高,该算法可以降低kubernetes网络中传输镜像所占用的网络带宽。

7、虽然kubernetes内置了预选算法和优选算法来进行容器调度,但是基于这些算法得到的容器调度决策在很多情况下存在节点资源占用不均衡与资源碎片现象严重的问题,具体的资源碎片场景如图2所示,其中,当采用kubernetes内置最小资源算法时,会将pod1调度到node2上,将pod2调度到node3上,随后pod3无法调度只能等待,造成集群负载不均衡、资源碎片化与资源水桶效应等问题。此种情况下,实际的最优调度决策为将pod1调度到node1上,将pod2调度到node3上,将pod3调度到node2上。类似的,节点使用率最高的资源决定了节点能运行的pod数量。

8、为了解决上述问题,研究人员提出了许多针对kubernetes的容器调度优化方案。比如,将主导资源公平性(dominant resource fairness,drf)方法引入到kubernetes集群中,提出了用于优选阶段的基于drf的资源公平分配算法(resource fairness allocationalgorithm,rfaa),通过考虑节点之间资源占用的均衡程度来设计容器调度策略,保障了集群工作节点之间的公平性。又如,在设计优选算法的打分策略时,不仅考虑了cpu与内存占用率对pod调度的影响,还考虑了网络利用率与磁盘利用率对pod调度的影响。又如,在进行优选阶段时,在综合考虑cpu、内存、网络带宽与磁盘io利用率的基础上,本文档来自技高网...

【技术保护点】

1.一种应用于容器编排系统的容器调度方法,所述容器编排系统用于对多个容器进行调度以将多个容器部署到工作节点中运行以实现软件系统的功能,所述软件系统包括多个软件组件,每个软件组件被封装为一个容器,其特征在于,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,容器之间的依赖关系包括回环网卡依赖关系和共享内存依赖关系,其中,回环网卡依赖关系指的是两个容器被调度至同一工作节点能够使用回环网卡通信;共享内存依赖关系指的是被调度至同一工作节点的两个或多个容器能够访问该工作节点的同一个内存空间进行通信。

3.根据权利要求2所述的方法,其特征在于,在所述步骤S2中,按照如下方式确定整体资源均衡度:

4.根据权利要求3所述的方法,其特征在于,在所述步骤S2中,按照如下方式确定整体资源占用率:

5.根据权利要求4所述的方法,其特征在于,预设的多目标优化算法为多目标优化遗传算法、粒子多目标萤火虫算法、非支配排序鲸鱼优化算法、多目标水母搜索算法、多目标人工蜂鸟算法或多目标粒子群优化算法。

6.根据权利要求5所述的方法,其特征在于,在所述步骤S3中,在每轮迭代计算过程中以最小化整体资源均衡度和整体资源占用率为优化目标求解当前轮容器调度策略并存档,并按照预设的规则对多轮迭代计算后的所有轮次的容器调度策略进行处理以获取目标容器调度策略,其中,每个轮次的容器调度策略中均包括多个容器调度决策。

7.根据权利要求6所述的方法,其特征在于,所述预设的规则为:

8.根据权利要求7所述的方法,其特征在于,按照如下方式计算容器调度决策的拥挤度距离:

9.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序可被处理器执行以实现权利要求1至8中任一项所述方法的步骤。

10.一种电子设备,其特征在于,包括:

...

【技术特征摘要】

1.一种应用于容器编排系统的容器调度方法,所述容器编排系统用于对多个容器进行调度以将多个容器部署到工作节点中运行以实现软件系统的功能,所述软件系统包括多个软件组件,每个软件组件被封装为一个容器,其特征在于,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,容器之间的依赖关系包括回环网卡依赖关系和共享内存依赖关系,其中,回环网卡依赖关系指的是两个容器被调度至同一工作节点能够使用回环网卡通信;共享内存依赖关系指的是被调度至同一工作节点的两个或多个容器能够访问该工作节点的同一个内存空间进行通信。

3.根据权利要求2所述的方法,其特征在于,在所述步骤s2中,按照如下方式确定整体资源均衡度:

4.根据权利要求3所述的方法,其特征在于,在所述步骤s2中,按照如下方式确定整体资源占用率:

5.根据权利要求4所述的方法,其特征在于,预设的多目标优化算法为多目标...

【专利技术属性】
技术研发人员:刘树峥周国良田霖王园园
申请(专利权)人:中国科学院计算技术研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1