1、第 49卷 第 2期2023年 2月Computer Engineering 计算机工程Kubernetes异构资源细粒度调度策略的设计与实现刘志彬1,2,黄秋兰1,胡庆宝1,程耀东1,4,胡誉1,田浩来1,3(1.中国科学院高能物理研究所,北京 100049;2.中国科学院大学,北京 100049;3.散裂中子源科学中心,广东 东莞 523803;4.中国科学院高能物理研究所 天府宇宙线研究中心,成都 610041)摘要:在异构资源环境中高效利用计算资源是提升任务效率和集群利用率的关键。Kuberentes作为容器编排领域的首选方案,在异构资源调度场景下调度器缺少 GPU细粒度信息无法满足用
2、户自定义需求,并且 CPU/GPU节点混合部署下调度器无法感知异构资源从而导致资源竞争。综合考虑异构资源在节点上的分布及其硬件状态,提出一种基于 Kubernetes 的 CPU/GPU 异构资源细粒度调度策略。利用设备插件机制收集每个节点上 GPU 的详细信息,并将 GPU 资源指标提交给调度算法。在原有 CPU 和内存过滤算法的基础上,增加自定义 GPU 信息的过滤,从而筛选出符合用户细粒度需求的节点。针对 CPU/GPU 节点混合部署的情况,改进调度器的打分算法,动态感知应用类型,对 CPU 和 GPU 应用分别采用负载均衡算法和最小最合适算法,保证异构资源调度策略对不同类型应用的正确调
3、度,并且在 CPU资源不足的情况下充分利用 GPU节点的碎片资源。通过对 GPU细粒度调度和 CPU/GPU节点混合部署情况下的调度效果进行实验验证,结果表明该策略能够有效进行 GPU调度并且避免资源竞争。关键词:云计算;Kubernetes调度;异构资源;资源调度;CPU/GPU集群开放科学(资源服务)标志码(OSID):中文引用格式:刘志彬,黄秋兰,胡庆宝,等.Kubernetes 异构资源细粒度调度策略的设计与实现 J.计算机工程,2023,49(2):31-36,45.英文引用格式:LIU Z B,HUANG Q L,HU Q B,et al.Design and implementa
4、tion of fine-grained scheduling strategy for Kubernetes heterogeneous resources J.Computer Engineering,2023,49(2):31-36,45.Design and Implementation of Fine-Grained Scheduling Strategy for Kubernetes Heterogeneous ResourcesLIU Zhibin1,2,HUANG Qiulan1,HU Qingbao1,CHENG Yaodong1,4,HU Yu1,TIAN Haolai1,
5、3(1.Institute of High Energy Physics,Chinese Academy of Sciences,Beijing 100049,China;2.University of Chinese Academy of Sciences,Beijing 100049,China;3.Spallation Neutron Source Science Center,Dongguan 523803,Guangdong,China;4.Tianfu Cosmic Ray Research Center,Institute of High Energy Physics,Chine
6、se Academy of Sciences,Chengdu 610041,China)【Abstract】In a heterogeneous environment,efficient utilization of computing resources is critical for improving task efficiency and cluster utilization.As a preferred solution in container orchestration,Kubernetes lacks Graphics Processing Unit(GPU)fine-gr
7、ained information in heterogeneous resource scheduling and can not satisfy user-defined requirements.Moreover,the scheduler can not perceive heterogeneous resources under the hybrid deployment of Central Processing Unit(CPU)/GPU nodes,leading to resource competition.For these reasons,a fine-grained
8、scheduling strategy for CPU/GPU heterogeneous resources based on Kubernetes is proposed to comprehensively reflect the distribution of heterogeneous resources on nodes and hardware usage.First,GPU resource metrics are input in the scheduling algorithm,which uses the device plugin mechanism to collec
9、t detailed information regarding the GPUs on each node.Second,the filtering algorithm of the scheduler is improved based on the original filtering method of the CPU and memory,and the filtering of custom GPU information is added to screen out the nodes that satisfy the fine-grained requirements of u
10、sers.Finally,for the hybrid deployment of the CPU/GPU nodes,the scoring algorithm of the scheduler is improved.The application types are dynamically sensed:the load balancing algorithm is used for CPU applications,and the least-fit algorithm is used for GPU applications.This ensures that the heterog
11、eneous resource scheduling strategy can correctly schedule different types of applications and fully utilize the fragmented GPU node resources when CPU 基金项目:国家自然科学基金(11875283)。作者简介:刘志彬(1996),男,硕士研究生,主研方向为容器编排与调度;黄秋兰,副研究员、博士;胡庆宝,助理研究员、硕士;程耀东(通信作者),研究员、博士;胡誉,助理研究员、博士;田浩来,副研究员、博士。收稿日期:2022-01-06 修回日期:2
12、022-03-16 Email:热点与综述文章编号:1000-3428(2023)02-0031-06 文献标志码:A 中图分类号:TP3912023年 2月 15日Computer Engineering 计算机工程resources are insufficient.Experiments are conducted to verify the scheduling effect of GPU fine-grained scheduling and the scheduling under hybrid deployment of CPU/GPU nodes.The experimenta
13、l results show that this strategy can effectively achieve GPU scheduling and prevent resource competition.【Key words】cloud computing;Kubernetes scheduling;heterogeneous resource;resource scheduling;CPU/GPU clusterDOI:10.19678/j.issn.1000-3428.00637090概述 在复杂的计算环境中,云计算技术可以显著提高计算资源的利用率1。随着容器化技术2的快速发展,海
14、量的服务正在从虚拟机的单体架构迁移到基于容器的云原生架构3。谷歌的开源容器编排工具 Kubernetes4已经成为在云环境中部署容器化应用的事实标准。因此,需要合理的资源调度技术来提高资源利用率以及服务质量5-6。Kubernetes 的资源调度流程是将用户申请的pod 调度到合适的节点上7。调度器通过硬件厂商提供的设备插件掌握拓展的异构资源,并利用拓展资源进行异构资源的调度8,但是目前 Kubernetes仅支持卡级别的调度,即用户 pod 可以申请独占一块或者多块 GPU 卡9,而调度器无法判断单个硬件资源是否满足细粒度的需求10-12。在 CPU 和内存的调度方面,学者们开展了一系列研究
15、工作并取得了一定 的 成 果。文 献13提 出 一 种 基 于 遗 传 算 法 的Kubernetes资源调度算法,保证了集群的负载均衡。文献 14 结合蚁群算法和粒子群优化算法对调度器进行改进,降低了节点最大负载并使任务分配更加均衡。文献 15 设计一种综合的监控机制,将系统资源利用率和应用指标提交给调度算法以指定更好的调度策略。文献 16 在 CPU和内存的基础上添加了 I/O 和网络指标,提高了集群的负载均衡效率。文献 17 提出一种干扰-拓扑感知的深度学习并行化方法,该方法有效提高了GPU资源利用率。文献 18考虑了 GPU 和 CPU 异构资源调度,使用机器学习方法提取 pod任务特
16、征,并且按照任务类型将 pod调度到合适节点。本文针对交互式计算中 pod 异构资源需求依赖于用户申请的情况,提出一种异构计算资源混合调度策略,拓展 GPU 资源信息以满足细粒度的资源需求,并且通过优化默认调度器的过滤和打分策略,实现异构资源混合部署情况下的资源调度,以避免资源竞争导致不合理的资源分配,并提高集群资源的利用率。1Kubernetes 默认调度策略及其对 GPU 的支持 1.1Kubernetes调度流程在 Kubernetes 集群中,Kube-scheduler 组件的任务是将 pod调度到集群19-20中特定的节点,该组件默认的行为是根据 pod期望的资源(例如 CPU、memory等)来过滤节点,然后对可用的节点进行打分,最终选 择 一 个 分 数 最 高 的 节 点 完 成 与 待 调 度 pod 的绑定。Kube-scheduler提供了一个调度框架,可根据多种内置算法进行过滤和打分,并且支持开发者拓展自定义的调度算法。目前,Kube-scheduler framework调度流程分为两个阶段:过滤阶段和打分阶段。过滤阶段的主要目标是过滤不满足需求的节点,每个