基于Kubernetes的资源调度器优化策略研究
发布时间:2020-04-11 01:51
【摘要】:Kubernetes作为当前最被业界广泛认可的Docker容器编排系统,大多数云服务提供商都将其作为云原生应用的部署解决方案。虽然它拥有十分丰富的系统功能,但作为编排系统,其最核心的依然是调度功能。本文将Kubernetes中实现调度功能的系统组件——资源调度器作为研究对象,针对现有调度器存在的静态与动态调度问题,提出了相应的优化策略。首先对涉及到的相关技术,如Docker容器技术、Kubernetes技术和云计算集群调度器技术分别进行研究。在此基础上,对Kubernetes资源调度器及其调度策略进行深入分析,并探讨现有资源调度器所存在的问题。然后针对资源调度器在静态调度时存在的冗余计算问题,通过重新优化其静态调度流程,提出了一套RRC(Reduce Redundancy Calculations)调度算法。此算法针对同一资源控制器的不同副本在进行调度时,可减少冗余计算步骤,以此提升调度器的调度效率。接着针对静态调度过后可能会出现的集群负载极不均衡的问题,通过分析其动态调度需求,提出了一套集群动态负载均衡机制。该机制根据某些触发条件以及节点负载信息变化情况,能够动态选择合适的Pod进行重新调度,从而达到负载均衡的目的。最后搭建Kubernetes集群实验环境,并设计实验方案进行验证。在此基础上,对实验结果做数据分析,验证优化方案的可用性与有效性。静态调度实验结果表明,经静态调度优化方案优化后,调度器在针对同一资源控制器的Pod副本进行调度时,平均调度时间缩短了约9%,调度器经优化后表现出了更好的调度性能;负载均衡实验结果显示,在Pod刚被调度时,静态调度可以使集群保持负载的相对均衡,但集群长时间运行情况下则会出现负载不均衡的问题。而本文提出的动态负载均衡机制,结合静态与动态调度,可以保证集群在长时间运行的情况下,依然可以很好的维持集群系统的均衡性,从而更好的保持集群系统的稳定。
【图文】:
.1.1 Docker 简介Docker 是由 dotCloud 公司开源的一个用于研发、测试、交付和运行软件应用器引擎。为了使开发者交付软件的周期更短,Docker 将上层应用与底层架构分,它能够像管理上层应用一样管理底层架构。利用 Docker 可以快速交付、测试署代码,从而显著减少应用开发到上线所需的时间[22]。Docker 使得用户可以在容器中封装和运行软件应用。高资源利用率与隔离性在同一时间、同一服务器上可以运行多个容器。容器十分轻量的特性使得它们可系统内核中直接运行,而不需要对应用的额外负载进行管理。因此相较于虚拟机一服务器中可以运行更多的 Docker 容器。并且虚拟机中也可以创建容器并运行ocker 使用 Go 语言进行开发且遵从 Apache 2.0 协议,其源代码托管在 Github 上。.1.2 Docker 架构Docker 使用客户端-服务器架构。Docker 客户端通过 REST API,,使用 UNIX 字与 Docker 守护进程通信。创建、运行和分发 Docker 容器都是由 Docker 守护负责的。Docker 客户端和 Docker 守护进程可以在同一服务器中运行,也可以将 Docker 客户端连接至远程 Docker 守护进程[23]。如图 2.1 所示。
西安邮电大学硕士学位论文(5)操作系统级虚拟化主机的操作系统来负责在多个虚拟服务器之间分配硬件资源,并且让这些服务器之间彼此独立。与前述虚拟化技术相比,一个明显的区别就是,如果使用操作系统级虚拟化,所有虚拟服务器必须运行同一操作系统。内核通过创建多个虚拟的操作系统实例来隔离不同的进程。如 OpenVZ、Docker 等实现了操作系统级虚拟化。由此可见,Docker 和其它容器技术都属于操作系统级的虚拟化技术。在容器技术出现之前,业界多数都使用虚拟机来实现计算资源的虚拟化,云原生应用大多也都部署在虚拟机中运行上线[25]。图 2.2 直观的展现了 Docker 容器与传统虚拟机的区别。
【学位授予单位】:西安邮电大学
【学位级别】:硕士
【学位授予年份】:2019
【分类号】:TP393.09
【图文】:
.1.1 Docker 简介Docker 是由 dotCloud 公司开源的一个用于研发、测试、交付和运行软件应用器引擎。为了使开发者交付软件的周期更短,Docker 将上层应用与底层架构分,它能够像管理上层应用一样管理底层架构。利用 Docker 可以快速交付、测试署代码,从而显著减少应用开发到上线所需的时间[22]。Docker 使得用户可以在容器中封装和运行软件应用。高资源利用率与隔离性在同一时间、同一服务器上可以运行多个容器。容器十分轻量的特性使得它们可系统内核中直接运行,而不需要对应用的额外负载进行管理。因此相较于虚拟机一服务器中可以运行更多的 Docker 容器。并且虚拟机中也可以创建容器并运行ocker 使用 Go 语言进行开发且遵从 Apache 2.0 协议,其源代码托管在 Github 上。.1.2 Docker 架构Docker 使用客户端-服务器架构。Docker 客户端通过 REST API,,使用 UNIX 字与 Docker 守护进程通信。创建、运行和分发 Docker 容器都是由 Docker 守护负责的。Docker 客户端和 Docker 守护进程可以在同一服务器中运行,也可以将 Docker 客户端连接至远程 Docker 守护进程[23]。如图 2.1 所示。
西安邮电大学硕士学位论文(5)操作系统级虚拟化主机的操作系统来负责在多个虚拟服务器之间分配硬件资源,并且让这些服务器之间彼此独立。与前述虚拟化技术相比,一个明显的区别就是,如果使用操作系统级虚拟化,所有虚拟服务器必须运行同一操作系统。内核通过创建多个虚拟的操作系统实例来隔离不同的进程。如 OpenVZ、Docker 等实现了操作系统级虚拟化。由此可见,Docker 和其它容器技术都属于操作系统级的虚拟化技术。在容器技术出现之前,业界多数都使用虚拟机来实现计算资源的虚拟化,云原生应用大多也都部署在虚拟机中运行上线[25]。图 2.2 直观的展现了 Docker 容器与传统虚拟机的区别。
【学位授予单位】:西安邮电大学
【学位级别】:硕士
【学位授予年份】:2019
【分类号】:TP393.09
【相似文献】
相关期刊论文 前10条
1 江涛;袁景凌;陈e
本文编号:2622992
本文链接:https://www.wllwen.com/guanlilunwen/ydhl/2622992.html