容器云环境下可视化编排技术

2021-01-13 01:07梁进科陈路路王一张建廷
计算机与网络 2021年23期
关键词:微服务可视化

梁进科 陈路路 王一 张建廷

摘要:以Docker和Kubernetes为代表的容器技术为微服务运行提供了一种新的方式,简化了微服务创建、集成、部署和运行的流程。但其复杂的命令行操作以及陡峭的学习曲线,提高了开发者的使用门槛。提出了一种基于Kubernetes容器编排引擎,前端采用Vue+jTopo框架,后端利用Spring Boot框架结合Kubernetes Java客户端,实现可视化微服务部署编排的方法。利用这种方法屏蔽了底层复杂的命令行操作,降低了使用门槛。

关键词:微服务;Docker;容器编排;Kubernetes;可视化

中图分类号:TP393文献标志码:A文章编号:1008-1739(2021)23-58-3

0引言

随着互联网与云计算的快速发展,高并发访问以及大数据处理的业务需求无法只依赖单体应用程序。微服务架构以其模块化、易扩展、高可用的优势为应用程序的开发带来了新的设计思路[1]。以Docker为代表的容器技术为微服务提供了理想的载体,同时以Kubernetes为代表的容器编排引擎极大地简化了容器化微服务创建、集成、部署和运维的整个流程,但Kubernetes学习曲线坡度高对人员的专业素质要求较高[2]。从易用性角度出发,本文提供了一种容器编排的可视化方法。实践证明,利用此方法进行的微服务部署不仅为研发人员提供了友好型服务创建界面,还缩短了服务创建过程,提高了服务开发部署效率。

1容器编排可视化设计

1.1容器编排原理

Kubernetes源于Google公司内部的集群调度系统,提供了面向容器的集群部署和管理能力。Kubernetes简化了CPU、内存、网络和存储的资源编排过程,使开发人员聚焦到以容器为中心的系统构建中[3]。Kubernetes具备完善的集群管理能力,包括可扩展的集群访问控制机制、多租户资源隔离能力[4]、基于DNS的服务注册和发现能力、基于虚拟IP的服务负载均衡能力、健康检查和自我恢复能力、服务滚动更新和自动弹性伸缩能力、插件化的资源调度框架及多维度的资源额度管理能力。Kubernetes架构如图1所示[5]。

Kubernetes主要由以下8个核心组件组成:

①Etcd存储整个集群的状态。

②API Server是集群的资源控制门户,默认具备基于RBAC的资源访问控制能力,同时提供基于API注册和发现资源扩展机制。

③Controller Manager负责集群状态的维护,例如容器健康检测、服务容器的弹性伸缩、服务容器的滚动更新等。

④Scheduler负责调度集群资源,按照预定的调度策略将服务实例调度到合适的集群节点中。

⑤Kubelet维护容器的生命周期,提供容器存储接口和容器网络接口的管理。

⑥Runtime负责容器镜像管理以及容器运行引擎管理。

⑦Proxy负责为容器服务提供集群内部的服务发现以及负载均衡。

⑧Kubectl是面向用户的集群管理客户端命令行工具。

1.2可视化设计与实现

1.2.1设计

可视化软件前端采用Vue+jTopo框架,后端采用Spring Boot框架。后端通过使用Kubernetes-client-4.1.1.jar与Kubernets的API Server組件通信,通过API Server的REST接口进行容器的编排部署操作。将图形化界面设置的编排信息保存到MySQL数据库中。可视化架构如图2所示。

用户登录可视化工具,可以选择已有的应用模板直接部署。部署完成后,用户可以进入应用的监视界面查看服务的运行状态。用户登录可视化工具,拖拽服务图元到编排面板,在编排面板中进行服务配置以及服务依赖关系关联,编排完成后可以保存为应用模板或者直接部署,用户可以进入应用的监视界面,查看服务的运行状态。可视化的流程如图3所示。

1.2.2实现

可视化界面如图4所示。左侧为图元列表,中间为编排面板,右侧为服务图元配置面板。服务类型图元主要包括无状态服务图元、有状态服务图元、驻守服务图元、定时任务图元、外部服务接入图元以及存储资源图元。在编排面板中可以编辑面板中的图元,同时可以通过连线的方式排列图元对象资源的创建顺序。点击连线可以连接2个图元,连线代表部署的前后顺序。点击创建应用直接在Kubernetes中创建编排面板中的服务。点击另存为可以保存为应用模板,可保存多个容器镜像以及容器配置信息。

2实验与评价

为了测试微服务环境下容器编排可视化的开发效率,实验选取基于Spring Cloud的微服务组件,包括注册中心、配置中心、服务网关、监控中心、用户管理服务及认证服务等6个业务服务作为测试对象。从3个角度进行测试比较,依次是虚拟机环境下应用的搭建、基于Kubernetes以YAML文件方式在命令行模式下服务集的部署和基于Kubernetes以可视化方式生成服务集的部署。

2.1实验环境

为了对开发的容器编排可视化功能进行验证,实验环境为6台64位的虚拟机,操作系统为CentOS18.04,CPU为8核,内存为32 GB,Docker容器版本为v17.03,容器编排引擎为Kubernetes v1.17.0。实验所用的Kubernetes集群设置3个master节点,6个slave节点。

2.2实验设置

(1)基于Linux虚拟机的方式

实际应用中,微服务组件以及业务服务主要部署在Linux系统中。使用Spring Cloud框架需要在操作系统中预先安装JDK。首先在6台虚拟机中完成基础配置安装,包括JDK的安装和配置SSH免密登陆。其次,运行服务集群,需规划服务与虚拟机的对应关系,包括为服务程序进行IP分配以及端口分配。然后,按照规划表将服务程序通过sftp传输到对应的虚拟机中。最后,在各个虚拟机中通过命令行启动服务程序,使用ps命令簡单查看各服务的运行状况[6]。

(2)基于YAML文件方式

在开发工具中使用Maven插件docker-maven-plugin将工程打包成镜像,并将镜像推送到镜像仓库。其次,编写为组件以及业务服务编写部署YAML,共需编写10个YMAL文件。然后,根据彼此间依赖关系使用kubectl apply命令,使用YAML文件依次部署各个服务,最后通过kubeclt get pods查看生成的服务容器[7]。

(3)基于可视化界面方式

首先,在开发工具中使用Maven插件docker-maven-plugin将工程打包成镜像,并将镜像推送到镜像仓库。其次,通过图元在编排面板通过可视化界面配置服务,需要配置10个无状态服务图元,根据彼此间依赖关系使用连线将图元连接起来。然后,点击另存模板按钮将部署方案保存为模板,点击部署按钮将部署服务,最后通过监控界面查看各服务的部署情况。

2.3实验结果与分析

实验采用2.1节的测试环境,随机抽取此领域多人对2.2节3种实验的设置分别进行实验,并记录每次实验所花费的时间,着重对比3种方式下所构建服务的性能指标。性能指标对比如表1所示,可以看出构建服务方式很多,但每种方式的部署过程复杂度是不同的。

3结束语

大型应用系统使用微服务架构可以明确分工,简化开发、构建过程,但增加系统部署难度,采用容器编排引擎部署微服务系统可简化部署难度。本文提出的基于Docker容器、Kubernetes容器编排、Vue前端开发框架以及借助Kubernetes Java客户端实现了容器编排的可视化的方法。通过实验分析得出相对于虚拟机的部署方式,本文提出的容器引擎部署方式,从多方面简化繁琐的部署运维工作。相比较于命令行式的容器引擎部署方式,提出的可视化方式具有简洁的操作方式,可面向不具有容器编排引擎知识的普通开发者。

参考文献

[1]浙江大学SEL实验室.Docker容器与容器云[M].北京:人民邮电出版社,2015.

[2]徐珉.Docker环境下容器编排工具的选择[J].集成电路应用, 2017,34(7):62-66.

[3]杨鸥,张羿,耿贞伟.微服务架构在容器云中的应用实践[J].电脑与电信,2017(7):79-81.

[4]毕小红,刘渊,陈飞.微服务应用平台的网络性能研究与优化[J].计算机工程,2018,44(5):53-59.

[5]刘琳羽,南凯.一种基于Docker的开发者服务平台设计[J].科研信息化技术与应用,2015,6(5):65-72.

[6]张建,谢天钧.基于Docker的平台即服务架构研究[J].信息技术与信息化,2014(10):131-134.

[7]杜威科.基于Kubemetes的大数据流式计算Spark平台设计与实现[D].南京:南京邮电大学,2017.

猜你喜欢
微服务可视化
数据可视化设计在美妆类APP中的应用
画图:数学思维可视化的有效工具
思维可视化
基于GeoGebra的高中物理可视化教学研究
复变函数级数展开的可视化实验教学
复变函数级数展开的可视化实验教学
复变函数共形映射的可视化实验教学
复变函数共形映射的可视化实验教学
基于供给侧改革理论的图书馆社交网络微服务研究
微信公众平台在医院图书馆的应用现状调查