论文部分内容阅读
现代集群是一个集中了大量异构的基础资源,并且运行着差异化的数据业务的分布式平台。作为集群资源的管理者,一个稳定可靠的资源调度器在集群中尤为重要。资源调度器管理整个集群中所有的资源使用和分配,它可以被独立设计成一个单独的抽象层,既便于日常运维管理,又能够降低系统耦合度。Kubernetes作为当前社区最为流行的容器管理工具,已经在业界被密切关注并广泛运用到实际生产环境中。Kubernetes调度器在集群中是一个松耦合的组件,支持用户自定义调度策略,支持动态加入和退出。调度器的加入和退出不会造成系统运行环境崩溃,具有容灾能力。然而,当前Kubernetes的调度器是一个单节点的调度器,虽然能够满足日常生产环境的需要,但是不能有效地应对生产环境中的复杂环境,其中单节点故障就是影响调度器稳定性的最主要因素。另外,生产环境的集群规模日益增长,对资源调度器提出了更高的需求。因此,需要设计一种具有伸缩性的分布式资源调度器来满足大规模集群的需要。在深入研究了Kubernetes各个组件间的协同关系,以及Kubernetes资源调度器的业务逻辑的基础上,本文提出了一个全新的分布式调度框架,来对Kubernetes调度器进行改进,并首次提出了Kubernetes资源调度器分布式架构、可动态伸缩特性和调度器负载均衡解决方案。本文介绍了当前业界相对成熟的分布式资源调度框架,深入探究了其设计理念和工作流程,并分析了它们的优缺点;详细阐述了Kubernetes调度器在集群中的业务角色和工作流程;分析了Kubernetes调度器的需求,给出了分布式资源调度器所具有的功能;然后进行了系统架构设计,通过对调度器工作过程中的数据流向分析进行了概要设计和功能模块划分;通过分析数据流的内容,设计了各个功能模块的数据结构;根据之前的业务逻辑分析,实现了调度器的各个功能模块。最后本文对资源调度器的功能性需求和非功能性需求进行了验证和测试,并对测试结果进行了分析和总结。基于Kubernetes的伸缩性分布式资源调度器的测试结果表明,分布式资源调度器虽然在小规模集群中的性能与原有的的资源调度器相差不大,但是在大规模的集群中有效地提升了资源调度性能;并且在长时间工作时,性能指标恶化程度低,有效降低了出现业务中断的概率,达到了预定设计目标。