李杰 白喆 陈武 胡芳
摘要:最近几年,云计算技术发展较快,其主要能力是通过网络将不同服务器的计算资源进行聚合,形成资源池,以供各个应用系统按需索取,动态提供计算服务,为大规模应用集群奠定基础,针对上层应用,关注点在于如何快捷稳定地从池中获取资源,如何对资源高效利用。按照当前的解决方案,通过将容器做集群处理,以编排调度的方式使用资源,对计算资源进行利用,是一个比较好的解决渠道,配合高效的编排框架,让软件的开发工作更加聚焦于逻辑的实现。同时,为了保证资源传递的可靠和高效,对于容器运行及计算资源的使用状态进行监控,文章基于容器技术和调度编排技术,设计并实现了一种监控管理系统,以图形化方式展现,具备一定的通用性,对于采用容器虚拟化技术和k8s编排框架构建的PaaS环境,能够提供较高的兼容支持,实现运行环境的高效运维。
关键词:容器;云计算;编排框架
中图分类号:TP311 文献标识码:A
文章编号:1009-3044(2022)14-0106-03
1 引言
容器[1]是当前最热门的服务器端技术,其作为PaaS类型项目的最核心能力,提供应用运行时的隔离环境,该环境可以理解为程序运行的“沙箱”。早在2013年,AWS、OpenStack以及Cloud Foundry等PaaS项目已经助力云计算技术从概念到落地,包括IBM、华为、京东等主流技术厂商,均以实际行动启动了以PaaS平台为核心构建平台层服务能力的变革。
为了支撑PaaS平台的应用托管能力,主流用户一般采用容器的方式进行项目部署,与传统的方式相比,容器方式可很好地解决云端虚拟机和本地環境不一致的问题,因此经过一段时间的发展,以容器方式部署已经成为约定俗成的操作。在初期,Heroku、Pivotal、RedHat等容器类产品层出不穷,但他们都存在一个问题,即在部署之前的制品打包过于烦琐,用户需要为每种语言、每种框架甚至不同的版本都单独打好和维护一个包,因为过于复杂,导致有些应用在本地运行时没问题,但在PaaS平台上运行则不太容易。为了解决该问题,Docker实现了“镜像”功能,镜像是直接由一个完整操作系统的所有文件和目录构成,因此本地开发、测试环境以及运行环境可以做到完全一样,同时打包好的镜像还能够作为制品重复使用。
由于容器镜像的良好体验,云计算领域相关项目开始依托该技术栈实现,同时也对PaaS的构架体系进行了重新梳理,重点对容器组织和管理规范的“容器编排”技术进行研究,目前最主流的是Kubernetes容器集群调度框架[2],该框架能够对运行在大规模集群中的各种任务相互关系进行处理,进行作业编排和管理。
本文基于容器技术(Docker),依托kubernetes调度、编排和管理能力,对容器调度的功能进行梳理和划分,并按照活动执行过程的关联程度,抽象并开发对应的通用组件,形成资源监控的基础功能服务清单,按照流转顺序进行集成[3],设计并实现了一套监控调度系统,能够让用户在管理容器集群,运行业务应用的同时,更好地监控运行状态和资源使用情况,提高巡检运维的效率和准确性,有利于提高PaaS平台对应用支撑的稳定性。
2 业务活动设计
本监控系统主要由11个业务活动模型组成,涵盖了监控数据的获取,存储、分析和输出展示,同时也可根据指标对系统运行情况进行巡检,实现按照级别记录日志、告知用户、执行调度等功能。对于每个业务活动模型,进行了依赖关系的梳理以及活动内容定义。这样在该系统的实现过程中,能够更加清晰地锁定功能边界,跟踪服务链路关系。
3 组件关联设计
根据业务活动层11个模块的具体功能要求,可以通过两张组件关联图将涉及的组件关系进行梳理,对于系统需要的计算资源和网络环境,将依赖基础设施层的操作系统提供,通过计算、控制和展示的经典方式,将获取到的环境信息经过分析输出传递到展现层,以图形化方式[4]为用户提供有效数据。对于告警通知业务功能要求,可直接向kubernetes容器集群采集最直接的数据,采集组件为prometheus,其可以对容器主机的CPU、内存、磁盘等信息进行采集和展现[5],本系统中主要利用其数据采集能力,同时prometheus也提供告警组件alertmanager,可通过配置报警规则,发送报警信息到alertmanager上,该组件可对报警信息进行管理[6],包括silencing、inhibition,在聚合报警信息后,通过邮件、短信、微信等方式发送消息提示。
4 程序时序设计
上图对本系统的5个关键服务组件(以告警通知为例)执行顺序进行了说明,其中监控检查涉及的计算、存储、网络及负载均衡活动时序状态基本一致[7],相关信息均会按照相同的传递路线进行流转,通过IaaS层获取相关资源信息,分析后进行展现。在告警通知部分,信息来源的层级有一定差异,为直接从PaaS层容器集群管控框架获取,prometheus组件抽取相关数据后,按照配置进行分析和转发,alertmanager对系统内部和第三方系统进行告警信息的发送。
5 系统运行验证
系统基于容器技术运行,通过虚拟化框架实现对应指标数据的获取。在运行期间可监控环境组件健康情况、计算资源使用情况、网络使用情况、存储使用情况等,并且形成告警数据,按照配置规则进行告警信息的转发。监控管理的类别包括:kubernetes基础组件、网络组件、监控组件、日志组件、其他组件等。
6 结语
本文设计了一种针对容器集群的资源监控和管理系统,并按照该设计思路落地实现。该类型的监控管理系统对于云计算环境或PaaS平台均能够提供好的监控支持。巡检人员可根据对应的计算资源、告警日志等信息快速掌握环境状态,高效准确地进行运维决策,降低容器集群的运维复杂度。
容器和编排框架的技术发展日新月异,开发工程师、运维工程师和架构师可根据本文思路,进一步结合最新技术进展丰富监控管理功能,为合理、稳健利用云计算技术拓宽道路。
参考文献:
[1] 张怡.基于Docker的虚拟化应用平台设计与实现[D].广州:华南理工大学,2016.
[2] 陈彦菲.基于微服务与容器化的智能一体化平台设计[J].智慧中国,2020(12):80-81.
[3] 宋汉松.容器网络技术研究与前景展望[J].金融电子化,2019(12):88-89.
[4] 郭建磊,董蕾,邱忠杰.一种工业云PaaS平台统一日志服务系统[J].信息技术与信息化,2020(3):37-39.
[5] 刘启东.基于Prometheus的边缘机房监控系统设计与实现[D].杭州:浙江大学,2021.
[6] 李翔.在私有Kubernetes集群中实现服务的负载均衡[J].电子技术与软件工程,2020(14):36-38.
[7] 谢超群.基于Kubernetes容器云的应用研究[J].西安文理学院学报(自然科学版),2020,23(4):37-40.
收稿日期:2022-02-26
作者简介:李杰(1984—),男,河南南阳人,工程师,硕士研究生,主要研究方向为云计算、微服务、人工智能、大数据。73204D0B-5291-4F58-9A13-9E563D3459D7