关键词:
云计算
Kubernetes
容器调度
负载均衡
资源利用率
异构任务
摘要:
随着云计算的发展,越来越多的企业开始将其应用迁移至云端,并使用容器化的方式进行部署。容器编排工具Kubernetes以其开源、自动化以及跨平台支持等特点,已经成为编排工具的主流。然而,在超大规模集群计算环境和海量容器应用需求下,使用Kubernetes默认调度算法存在异构计算资源利用率低以及集群资源负载不均衡等问题。
针对以上问题,本文基于异构计算资源,提出了面向负载均衡的容器调度方法和基于异构计算资源的容器调度方法,并基于这两种调度方法搭建了容器调度管理平台。以下是本文的主要研究内容:
1)提出了面向负载均衡的容器调度方法。针对Kubernetes内置调度方法通用性不足,考虑的资源因素单一,无法满足不同类型应用的多样性需求,如深度学习推理、API调用、大数据应用以及Web应用等场景。本文提出了面向负载均衡的容器调度方法A-KCSS(AHP Kubernetes Container Scheduling Strategy)。该方法以CPU、内存、网络IO、磁盘IO等指标为调度因素,建立权重分析计算模型,根据待调度任务的资源需求,设置调度因素的相对重要程度,对各调度因素进行权重计算分析,并根据节点的资源实时使用率,计算所有的候选节点与最优调度节点的贴进度,并将其作为打分依据进行调度。实验结果表明,A-KCSS与default-scheduler、KCSS(Kubernetes Container Scheduling Strategy)、SSBMCDA(New scheduling strategy based on multi-criteria decision algorithm)算法以及F-KCSS算法相比,平均响应时间分别降低10%、4%和6%,F-KCSS算法响应时间略低于A-KCSS算法。A-KCSS与default-scheduler以及KCSS相比吞吐量分别提高30%和15%、可用性分别提高40%和30%、负载均衡率分别提高23%和18%,提高了集群的整体性能。
2)提出了基于异构计算资源的容器调度方法。设计了基于异构计算资源的容器调度方法整体架构。该架构基于监控模块、GPU设备切分模块以及GPU任务调度模块进行设计。针对Kubernetes原生框架无法对GPU资源进行实时监控,设计了基于DCGMexporter组件与自定义采集器相结合的监控模块实时获取GPU资源详细信息。针对Kubernetes集群基于英伟达提供的GPU插件,根据显卡序号调度GPU容器造成GPU资源利用率低下的问题,设计了基于异构计算资源的GPU资源切分模块,该模块将GPU资源按显存和算力两个维度进行细粒度切分,在GPU任务调度时将切分后的GPU资源进行分配,并且可以设置显存和算力限制,实现了GPU资源的共享。在GPU任务调度模块,根据GPU设备上分配的任务数量设置优先级进行调度,实现任务的均匀分配,提高GPU设备的资源利用率。经实验验证,与按块调度GPU资源的方法相比,所提出的方法在调度GPU Pod时降低了资源浪费,提高了GPU资源的利用率以及整体性能。
3)设计并实现了基于Kubernetes的容器调度管理系统。基于上述1)、2)的研究内容,本文将两种调度方法与Kubernetes集群容器生命周期管理、容器内部Webshell交互以及页面可视化等技术融合,设计并实现了基于Kubernetes的容器调度管理系统。该系统提供了异构任务的整体调度、Pod的全生命周期管理以及容器Webshell交互等关键功能。经实验验证了该系统的各项功能。并且通过搭建容器调度管理系统提高了用户的可用性以及集群的安全性。