论文部分内容阅读
目前,以Docker为代表的容器技术,凭借其轻量易用的优势而被广泛使用,Kubernetes也成为当下大规模容器化应用程序部署的行业标准。目前,Kubernetes默认调度存在以下三点不足:第一,Kubernetes调度器在调度时根据Pod的资源申请量进行调度,并不感知节点的实际资源使用情况,容易出现调度结果不准确的问题。第二,Kubernetes不关注磁盘I/O这一资源类型,多个I/O密集型的应用可能调度到少数重复节点上,造成这些节点的I/O瓶颈。第三,磁盘I/O资源充足而CPU不足的节点由于无法通过调度预选阶段,其磁盘I/O无法被Pod利用,从而影响集群整体的磁盘I/O资源利用率。针对上述三点不足,本文做了如下工作:针对默认调度不监控节点实际资源使用情况的问题,本文设计并实现了一个基于资源监控的自定义调度系统,该系统包含资源监控和自定义调度两大模块,其中资源监控组件基于开源监控工具Prometheus实现,自定义调度组件基于Kubernetes Extender实现,自定义调度组件向资源监控组件获取节点监控数据,并加载运行自定义的调度算法。针对默认调度不关注磁盘I/O导致的节点I/O瓶颈问题,本文提出了一种基于集群磁盘I/O均衡的动态调度算法Balanced Disk IOPriority,根据Pod的磁盘I/O需求和节点的实际磁盘I/O进行调度,以提升集群的磁盘I/O均衡水平。针对CPU不足的节点磁盘I/O无法得到充分利用的问题,提出了一种基于节点CPU和磁盘I/O均衡的动态调度算法Balanced Cpu Disk IOPriority,通过计算Pod对节点CPU和磁盘I/O资源消耗的倾斜度,结合节点的实际CPU和磁盘I/O利用率来划分节点的调度优先级。实验结果表明,Balanced Disk IOPriority算法能够提升Kubernetes集群的磁盘I/O均衡水平,改善Kubernetes集群节点I/O瓶颈问题;Balanced Cpu Disk IOPriority算法能够提高Kubernetes集群整体的磁盘I/O利用率。