CN117369942A - 一种应用服务资源编排及自动化部署方法及系统 - Google Patents

一种应用服务资源编排及自动化部署方法及系统 Download PDF

Info

Publication number
CN117369942A
CN117369942A CN202311235760.6A CN202311235760A CN117369942A CN 117369942 A CN117369942 A CN 117369942A CN 202311235760 A CN202311235760 A CN 202311235760A CN 117369942 A CN117369942 A CN 117369942A
Authority
CN
China
Prior art keywords
application
orchestration
tool
aos
deployment
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202311235760.6A
Other languages
English (en)
Inventor
王井
徐英辉
刘鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Electric Power Research Institute Co Ltd CEPRI
Original Assignee
China Electric Power Research Institute Co Ltd CEPRI
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China Electric Power Research Institute Co Ltd CEPRI filed Critical China Electric Power Research Institute Co Ltd CEPRI
Priority to CN202311235760.6A priority Critical patent/CN117369942A/zh
Publication of CN117369942A publication Critical patent/CN117369942A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供了一种应用服务资源编排及自动化部署方法及系统包括:通过应用编排服务AOS解析用户请求,生成应用部署计划命令,并将所述命令发送至编排工具K8S;通过预先优化后的编排工具K8S根据命令调度容器、资源需求和约束条件选择对应的节点创建实例;通过应用编排服务AOS基于实例进行应用部署;其中,所述预先优化后的编排工具K8S是基于资源情况进行源码修改,以及通过选择主机和选择污点、标签规则灵活创建资源池构建的。本发明将应用编排服务AOS和预先优化后的编排工具K8S结合,用户只需调用已有模板并根据环境简单定制化,再通过应用编排服务AOS即可自动生成应用编排模板并完成应用部署,实现了低代码、低门槛。

Description

一种应用服务资源编排及自动化部署方法及系统
技术领域
本发明涉及云原生、自动化技术领域,具体涉及一种应用服务资源编排及自动化部署方法及系统。
背景技术
随着云计算技术的快速发展,Kubernetes(简称K8S)作为云原生应用的主要编排工具,自动化地部署、扩展和管理容器化的应用程序,已经成为企业和开发者的首选。从本地部署和单个云K8S部署,转向混合云和多云的趋势正在加速,同时集群规模和数量也呈爆发式增长,K8S环境扩展到数据中心、公有云和边缘环境,团队不得不面对接踵而来的各种挑战,如运维管理复杂、应用依赖关系繁多、扩缩容不便、跨平台兼容性差异和缺乏专业技能等问题。
Helm是一个开源的K8S应用程序包管理工具,它可以帮助开发者和运维人员更便捷地管理、部署和升级应用,可以将应用和依赖打包成一个可部署的Helm Chart,并通过简单的命令行操作来安装、升级、卸载。它不仅提供了方便的应用部署方式,还能管理依赖关系、配置管理和版本控制。Helm的出现极大地简化了K8S应用程序的部署和管理过程,提高了开发团队的生产力。
综上,在云原生场景中,越是规模庞大、环境复杂的环境,越是难以使用传统方式人工地进行应用部署、配置和运维,应用编排的使用必不可少。但是,目前原生K8S所提供的容器编排功能十分有限,比如配置文件使用门槛高,尤其是在复杂的网络和存储条件中,需要相当的专业知识和经验;自动伸缩功能也只能基于部分监控指标,不够灵活且无法满足应用的实时性需求等。
发明内容
为了解决目前原生K8S所提供的容器编排功能十分有限,比如配置文件使用门槛高,尤其是在复杂的网络和存储条件中,需要相当的专业知识和经验;自动伸缩功能也只能基于部分监控指标,不够灵活且无法满足应用的实时性需求等的问题,本发明提出了一种应用服务资源编排及自动化部署方法,包括:
通过应用编排服务AOS解析用户请求,生成应用部署计划命令,并将所述命令发送至预先优化后的编排工具K8S;
通过预先优化后的编排工具K8S根据命令调度容器、资源需求和约束条件选择对应的节点创建实例;
通过应用编排服务AOS基于实例进行应用部署;
其中,所述预先优化后的编排工具K8S是基于资源情况和已知问题进行源码修改,优化算法、增加故障域感知功能和监控告警功能。
可选的,所述通过应用编排服务AOS解析用户请求,生成应用部署计划命令,并将所述命令发送至预先优化后的编排工具K8S,包括:
通过应用编排服务AOS的编排引擎解析用户请求,并根据定义的规则和策略生成应用部署计划;
通过应用编排服务AOS的部署管理器与底层的资源管理系统交互,创建、调度和部署容器,并生成命令;
通过应用编排服务AOS的事件管理器将命令通过API接口传输至预先优化后的编排工具K8S。
可选的,所述编排工具K8S的优化,包括:
基于资源情况和已知问题对编排工具K8S组件的源码进行修改,优化算法、增加故障域感知功能和监控告警功能,并增加以供用户自定义使用的控制器和策略;
采用编排工具K8S中的应用程序包管理工具Helm部署和管理应用编排服务AOS发送的命令,通过命令行界面或API调用执行部署操作,自动将Chart解析并在编排工具K8S集群中创建相应的资源对象。
可选的,所述基于资源情况对编排工具K8S组件的源码进行修改,优化算法、增加故障域感知功能和监控告警功能,并增加以供用户自定义使用的控制器和策略,包括:
基于资源情况和已知问题对编排工具K8S组件的源码进行二次开发,优化调度算法;
通过选择主机和选择污点、标签的规则,创建资源池。
可选的,所述采用编排工具K8S中的应用程序包管理工具Helm部署和管理应用编排服务AOS发送的命令,包括:
应用程序包管理工具Helm管理应用编排服务AOS发送的命令对应的应用的发布,并允许将应用回滚到旧版本;
应用程序包管理工具Helm根据应用编排服务AOS发送的命令在Chart中定义应用的配置选项,并在部署时动态配置。
可选的,所述通过预先优化后的编排工具K8S根据命令调度容器、资源需求和约束条件选择对应的节点创建实例,包括:
预先优化后的编排工具K8S根据命令调度容器,按照编排引擎的计划进行创建和配置;
预先优化后的编排工具K8S根据资源需求和约束条件确定节点,由所述节点创建实例。
可选的,所述预先优化后的编排工具K8S根据命令调度容器,按照编排引擎的计划进行创建和配置,包括:
预先优化后的编排工具K8S中的应用程序包管理工具Helm部署和管理应用编排服务AOS发送的命令,通过命令行界面或API调用执行部署操作,自动将Chart解析并在预先优化后的编排工具K8S集群中创建相应的资源对象。
可选的,所述通过应用编排服务AOS基于实例进行应用部署,包括:
通过应用编排服务AOS的部署管理器根据实例自动生成应用编排模板;
由应用编排模板进行应用部署。
可选的,还包括:通过可视化网站的方式,将管理应用编排服务AOS的功能作为一个组件展现;
其中,所述管理应用编排服务AOS的功能包括:应用管理、容器镜像管理、应用模板管理、Helm应用商店和应用编排设计器。
再一方面本发明还提供了一种应用服务资源编排及自动化部署系统,包括:应用编排服务AOS和优化后的编排工具K8S;
所述应用编排服务AOS,用于解析用户请求,生成应用部署计划命令,并将所述命令发送至优化后的编排工具K8S,并基于优化后的编排工具K8S创建的实例进行应用部署;
所述优化后的编排工具K8S,用于根据命令调度容器、资源需求和约束条件选择对应的节点创建实例;
其中,所述优化后的编排工具K8S是基于资源情况和已知问题对编排工具K8S进行源码修改,优化算法、增加故障域感知功能和监控告警功能得到的。
可选的,所述优化后的编排工具K8S包括:应用程序包管理工具Helm;
所述应用程序包管理工具Helm,用于根据命令调度容器,按照编排引擎的计划进行创建和配置;并根据资源需求和约束条件确定节点,由所述节点创建实例。
可选的,应用程序包管理工具Helm中根据命令调度容器,按照编排引擎的计划进行创建和配置的实现步骤包括:
预先优化后的编排工具K8S中的应用程序包管理工具Helm部署和管理应用编排服务AOS发送的命令,通过命令行界面或API调用执行部署操作,自动将Chart解析并在预先优化后的编排工具K8S集群中创建相应的资源对象。
可选的,所述应用编排服务AOS中的通过应用编排服务AOS基于实例进行应用部署实现的步骤包括:
通过应用编排服务AOS的部署管理器根据实例自动生成应用编排模板;
由应用编排模板进行应用部署。
再一方面,本申请还提供了一种计算设备,包括:一个或多个处理器;
处理器,用于执行一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行时,实现如上述所述的一种应用服务资源编排及自动化部署方法。
再一方面,本申请还提供了一种计算机可读存储介质,其上存有计算机程序,所述计算机程序被执行时,实现如上述所述的一种应用服务资源编排及自动化部署方法。
与现有技术相比,本发明的有益效果为:
本发明提供了一种应用服务资源编排及自动化部署方法包括:通过应用编排服务AOS解析用户请求,生成应用部署计划命令,并将所述命令发送至预先优化后的编排工具K8S;通过预先优化后的编排工具K8S根据命令调度容器、资源需求和约束条件选择对应的节点创建实例;通过应用编排服务AOS基于实例进行应用部署;其中,所述预先优化后的编排工具K8S是基于资源情况进行源码修改,以及通过选择主机和选择污点、标签规则灵活创建资源池构建的。本发明将应用编排服务AOS和预先优化后的编排工具K8S结合,用户只需调用已有模板并根据环境简单定制化,再通过应用编排服务AOS即可自动生成应用编排模板并完成应用部署,实现了低代码、低门槛。
附图说明
图1为本发明的一种应用服务资源编排及自动化部署方法流程图;
图2为本发明的AOS系统架构示意图;
图3为本发明的AOS的总体工作流程图;
图4为本发明的容器云平台功能架构涵盖了云原生K8S的全部流程图。
具体实施方式
应用编排服务(Application Orchestration Service,简称AOS)技术是解决K8S中存着的如运维管理复杂、应用依赖关系繁多、扩缩容不便、跨平台兼容性差异和缺乏专业技能等问题的利器,通过定义和执行应用部署的过程和规则,使得开发人员可以更加方便地管理复杂的应用程序,进一步满足了现代应用程序开发和部署过程中复杂性的需求。
在过去,应用程序开发和部署往往是一个非常复杂的过程。开发人员需要处理各种不同的组件和服务,如数据库、消息队列、缓存等,同时还要解决不同服务之间的通信和协调问题。这样的过程不仅耗费时间和精力,还容易出现错误和故障。随着云计算和容器技术的快速发展,应用程序的复杂性进一步增加。现代应用程序往往是分布式和微服务架构,涉及到大量的组件和服务,需要动态地进行扩展、升级和故障恢复。这些要求提高了对应用程序管理和协调的需求。
AOS全称为Application Orchestration Service,可以定义应用程序的拓扑结构,包括组件之间的依赖关系和配置信息,并根据定义的拓扑结构来自动部署和配置应用程序,简化部署过程;可以根据实时监测到的系统负载情况,自动进行应用程序的伸缩和扩展,并根据预设的规则和策略,动态地增加或减少应用程序的实例数量,以适应不同的负载情况;故障恢复方面,AOS根据预设的策略和规则进行故障恢复,自动重启或重新部署故障实例,以确保应用程序的稳定性和可用性;AOS可以管理应用程序的整个生命周期,包括版本管理、升级和回滚等,简化应用程序的更新和升级过程,确保应用程序的可靠性和稳定性。
为了解决原生K8S在应用部署、管理中存在的问题,优化原生K8S组件的功能,提高系统性能和使用效率,本发明提出了一种应用服务资源编排及自动化部署方法。
实施例1:
一种应用服务资源编排及自动化部署方法,如图1所示,包括:
通过应用编排服务AOS解析用户请求,生成应用部署计划命令,并将所述命令发送至预先优化后的编排工具K8S;
通过预先优化后的编排工具K8S根据命令调度容器、资源需求和约束条件选择对应的节点创建实例;
通过应用编排服务AOS基于实例进行应用部署;
其中,所述预先优化后的编排工具K8S是基于资源情况和已知问题进行源码修改,优化算法、增加故障域感知功能和监控告警功能。
进一步的,所述通过应用编排服务AOS解析用户请求,生成应用部署计划命令,并将所述命令发送至预先优化后的编排工具K8S,包括:
通过应用编排服务AOS的编排引擎解析用户请求,并根据定义的规则和策略生成应用部署计划;
通过应用编排服务AOS的部署管理器与底层的资源管理系统交互,创建、调度和部署容器,并生成命令;
通过应用编排服务AOS的事件管理器将命令通过API接口传输至预先优化后的编排工具K8S。
进一步的,所述编排工具K8S的优化,包括:
基于资源情况和已知问题对编排工具K8S组件的源码进行修改,优化算法、增加故障域感知功能和监控告警功能,并增加以供用户自定义使用的控制器和策略;
采用编排工具K8S中的应用程序包管理工具Helm部署和管理应用编排服务AOS发送的命令,通过命令行界面或API调用执行部署操作,自动将Chart解析并在编排工具K8S集群中创建相应的资源对象。
进一步的,所述基于资源情况对编排工具K8S组件的源码进行修改,优化算法、增加故障域感知功能和监控告警功能,并增加以供用户自定义使用的控制器和策略,包括:
基于资源情况和已知问题对编排工具K8S组件的源码进行二次开发,优化调度算法;
通过选择主机和选择污点、标签的规则,灵活创建资源池。
进一步的,所述采用编排工具K8S中的应用程序包管理工具Helm部署和管理应用编排服务AOS发送的命令,包括:
应用程序包管理工具Helm管理AOS发送的命令对应的应用的发布,并允许将应用回滚到旧版本;
应用程序包管理工具Helm根据AOS发送的命令在Chart中定义应用的配置选项,并在部署时动态配置。
预先优化后的编排工具K8S是基于资源情况和已知问题进行源码修改,解决了应用升级时可能发生故障和安全方面的问题,增加了故障域感知功能和完善的监控告警功能,优化了自动伸缩响应慢、伸缩策略不灵活、伸缩策略机制单一和负载均衡算法和负载器单一等一系列问题,比如通过选择主机和选择污点、标签规则灵活创建资源池;用户在使用时全程无需关心基础设施和资源,并提供了低代码、图形化的操作界面。
原生编排工具K8S能够根据用户定义的监控指标,自动进行横向扩展(水平伸缩)和纵向扩展(垂直伸缩),以满足应用程序的需求。但这种伸缩机制是基于指标的自动伸缩,对于延迟敏感的应用(如实时计算、流媒体等),这样的伸缩策略可能不足够灵活,无法满足应用的实时性要求;而且它需要等待一定时间周期来判定是否需要进行伸缩操作,这可能导致在应用发生突发性负载增加时,无法及时进行伸缩,从而导致应用的性能下降。
本发明中优化后的编排工具K8S支持用户根据第三方业务数据以及时间等自定义容器伸缩规则、支持扩容指标和缩容指标独立配置、支持基于CPU、内存、时间段和自定义指标进行弹性伸缩、支持弹性伸缩通知等,实现实例自动调度。
原生编排工具K8S提供了内置的负载均衡和服务发现机制,可以将流量分发到集群中的各个容器实例,并通过DNS解析将服务暴露给其他应用程序。原生K8S默认使用Ingress Controller作为负载均衡器,也提供了一些负载均衡算法,例如轮询和IP散列,但是一个单一的负载均衡器和简单的算法,并不能很好地适应大规模应用的负载均衡需求;加上没有提供自动扩展的机制,需要手动调整实例的数量来应对负载变化,进一步加剧了易用性的问题。
本发明中优化后的编排工具K8S支持使用多个Ingress Controllers和权重配置来实现更灵活的负载均衡,支持使用Nginx、HAProxy等负载均衡器,支持加权轮询、IP哈希、动态负载均衡等多种算法,支持Macvlan、Calico等多种CNI顶层网络规划,且任何一种Macvlan、Calico或其它CNI可同时支持IPv4/IPv6网络管理等。
原生K8S通过副本集和故障恢复机制,确保应用程序在节点故障或容器崩溃时的高可用性和容错性,但是其没有内置的故障域感知功能,无法自动将Pods和副本集分散在多个故障域中,这可能导致当某个故障域发生故障时,整个集群都无法正常工作;在滚动升级的过程中,新旧版本的Pods可能会同时存在,如果在此期间发生故障,可能导致整个应用程序不可用。
本发明中优化后的编排工具K8S使用了多集群部署,在发生故障时,可以通过跨集群的方式自动实现故障转移和容灾;使用了自定义调度器,可以根据节点的故障域信息使用亲和/反亲和性规则,添加污点标签等方式指定pod和节点之间的关联关系;提供灰度升级和蓝绿升级两种应用升级方式,避免出现应用程序不可用的问题。
进一步的,所述通过预先优化后的编排工具K8S根据命令调度容器、资源需求和约束条件选择对应的节点创建实例,包括:
预先优化后的编排工具K8S根据命令调度容器,按照编排引擎的计划进行创建和配置;
预先优化后的编排工具K8S根据资源需求和约束条件确定节点,由所述节点创建实例。
进一步的,所述预先优化后的编排工具K8S根据命令调度容器,按照编排引擎的计划进行创建和配置,包括:
预先优化后的编排工具K8S中的应用程序包管理工具Helm部署和管理应用编排服务AOS发送的命令,通过命令行界面或API调用执行部署操作,自动将Chart解析并在K8S集群中创建相应的资源对象。
进一步的,所述通过应用编排服务AOS基于实例进行应用部署,包括:
通过应用编排服务AOS的部署管理器根据实例自动生成应用编排模板;
由应用编排模板进行应用部署。
下面对管理应用编排服务AOS作详细介绍:
AOS系统架构如图2所示,user(即用户终端)、oam(操作与维护)、task(任务)和storage(存储)均通过gateway(网关)与AOS进行交互。user(即用户终端)、oam(操作与维护)、task(任务)和storage(存储)随后将数据经MYSQL(关系型数据库管理系统)传输至kubernetes(开源系统)中,AOS的核心组件,包括编排引擎、部署管理器、事件管理器等。
编排引擎接收应用编排描述文件,并进行解析,根据定义的规则和策略生成应用部署计划,包括创建、启动和配置所需的容器组件,并定义它们之间的关系和通信方式。编排引擎会将生成的部署计划发送给编排引擎的部署管理器,部署管理器负责与底层的资源管理系统交互,来创建、调度和部署容器。
AOS的技术架构底层为K8S,编排引擎的事件管理器与K8S进行通信,通过API接口发送命令,包括创建、调度容器、配置网络和存储等。K8S根据命令调度容器,按照编排引擎的计划进行创建和配置,它会根据资源需求和约束条件选择最合适的节点,然后创建实例。
编排引擎的事件管理器会监测容器的状态,并将信息返回给用户终端,让用户实时了解部署和运行情况。如果需要更新或删除应用,可以通过用户终端提交相应的请求,编排引擎会解析请求并生成相应的更新或删除计划,然后通过事件管理器与K8S进行通信,执行相应的操作。
AOS可以使用Helm来部署和管理已经打包好的应用,通过命令行界面或API调用来执行部署操作,Helm会自动将Chart解析并在K8S集群中创建相应的资源对象。Helm可以管理应用不同版本的发布,并允许将应用回滚到旧版本,使AOS可以轻松管理和切换不同版本的应用。应用配置管理方面,Helm允许在Chart中定义应用的配置选项,并在部署时动态配置。这使得AOS能够根据实际需求对应用进行个性化配置。这里的Chart是其使用的压缩包格式名称,Helm是一个工具。
AOS的总体工作流程图,如图3所示,资源编排将环境的销毁和重建、在扩容的场景下重复完成多个新实例的配置、创建数据库、创建虚拟机等重复性操作进行工具化、流程化,使用模板对应用所需资源进行统一描述;资源栈管理功能提供众多资源自动化部署或销毁操作。用户只需使用模板,将大批量、不同服务、不同规格的资源实例统一定义在模板中,AOS即可完成自动化创建,实现资源的快速部署和灵活配置。其核心思路是:使用户花更少的时间在基础设施的管理上,应用上云所需的操作集中在AOS模板和可视化低代码平台上,包括资源规划、应用设计、部署、状态监控、生命周期管理能力等,实现一键式云资源与应用的开通与复制,从而更加专注于业务创新。
AOS模板是一个YAML或JSON格式的文本描述文件,用于描述需要的云对象。AOS根据描述文件完成各种云对象的创建。AOS支持Docker Compose编排模板来描述多容器应用。用户自己创建的编排模板或通过AOS图形化应用编排设计器产生的编排模板保存了每个服务本身具体的部署信息以及依赖关系,只需要在不同环境下修改环境对应的配置,即可以通过应用模板实现在新环境应用的快速部署。在模板中需要定义云资源和应用程序的部署配置,包括服务器、存储和网络设置、应用的依赖关系、引用关系等。AOS模板是一种描述语言来控制其自动化的执行流程,如各种云对象的创建、销毁等流程。这里的Yaml、json是文件格式,Docker Compose是一个工具的名称。
Helm模板是使用Go语言的文本模板引擎生成的yaml文件,Helm使用模板来动态生成K8S资源配置文件,以根据不同环境和参数值自定义部署。模板文件包含两个主要部分:模板和值文件。模板使用Go语言模板引擎的标记来定义变量、逻辑和控制流,并根据特定的值文件生成实际资源配置。值文件是包含将要应用的具体参数值的yaml文件。
Helm模板和AOS模板都是用于管理应用部署的工具,但它们的实现方式略有不同。Helm用于通过动态生成K8S资源文件来实现应用的配置和部署。而AOS模板是一种严格定义的配置文件,通过定义资源对象和对象关系来描述应用的部署拓扑和配置参数。两者之间的选择取决于具体的使用场景和需求。
本发明针对原生K8S中容器编排能力的缺陷,尤其是在复杂的、庞大的云原生环境中应用部署经常遇到的问题,进行了二次开发和深度优化。首先,通过对源码进行修改,解决了原生K8S在容器资源调度和应用生命周期管理中可能发生严重生产事故的问题,并增加了更多的控制器和策略以供用户自定义使用;其次,将AOS与Helm相结合,进一步简化应用部署和管理流程,在应用版本管理和应用集成扩展方面更加灵活、稳定、高效,大幅提高了用户在应用部署、生命周期管理和运维时的操作体验,做到真正的自动化;另外,AOS和Helm模板可以将应用程序的配置参数化,并根据实际情况进行定制化,快速在不同的环境中部署和管理;最后,提供了简洁易懂的可视化界面,包括图形化应用编排设计器和应用部署管理的各个环节,用户只需调用已有模板并根据环境简单定制化,再通过应用编排设计器完成应用拓补图的设计,AOS即可自动生成应用编排模板并完成应用部署,实现了低代码、低门槛。
这里的各个环节具体包括:
图形化应用编排设计器:
模板管理(模板创建、修改、删除、调用、自动补全等)、应用编排生命周期管理(创建、修改、部署、启停、删除等)
实际使用时的流程:创建模板→创建应用编排→调用模板→修改模板→修改拓补关系(图形化应用编排设计器)→完成创建→开始部署→部署完成→实时监控。
其中“创建应用编排”部分是在平台上完成的,同样是可视化操作界面但并没有使用图形化应用编排设计器;
“调用模板”“修改拓补关系”是图形化应用编排设计器的主要功能,“修改模板”使用的内嵌式的代码编辑器,在平台上的很多页面都有,其中也包括“图形化应用编排设计器”的页面。
应用部署管理:
应用生命周期管理(应用创建、修改、部署、升级、启停、删除等)。
实施例2:
下面对本发明作进一步介绍:
通过可视化网站的方式,将AOS的功能作为一个组件单独展现出来,主要功能包括应用管理、容器镜像管理、应用模板管理、Helm应用商店和应用编排设计器,用户可以在页面上简单操作来完成在K8S集群上的应用部署和管理、镜像管理、应用编排模板管理、Helm应用发布和应用编排设计。
用户可以直接使用容器镜像仓库中已有的镜像,再自行修改容器、应用、环境等各个参数配置,完成应用发布。如果已经创建过应用模板,则可以直接使用应用模板进行应用部署,同样可以在创建过程中修改各个参数配置。即用户根据所属项目的权限,可以随意调用该项目下的私有模板(模块)或公有模板。
目前提供的容器设置选项包括容器的名称、镜像、部署版本、内存配额、cpu权重、端口配置、配置文件、日志挂载、执行命令、执行参数、环境变量、健康检查,钩子函数和持久化存储等。
接下来可以根据需要对应用设置和网络环境设置进行修改,自定义IP分配策略、服务域名、重启策略、POD亲和、POD反亲和、POD分散、主机分组调度、主机亲和、主机PID、主机IPC、主机网络、host自定义、JVM监控,以及网络所在集群、网络域、IP分配策略等,这的pod:指容器;host为主机,JVM全称为Java Virtual Machine,又称Java虚拟机;PAAS全称为Platform as a Service,中文为平台即服务。
在应用部署完成后可进行应用管理,可以随时查看应用的容器配置、应用配置、网络配置、副本状态、事件列表和详情、pod列表和详情、日志监控和yaml文件,此外还可以对应用的部分配置和调度策略等通过灰度升级或蓝绿升级进行修改。
用户在应用模板页面可以创建和管理应用编排模板,点击模板名称可查看yaml文件详情,点击右侧编辑功能按钮可修改yaml文件。其中应用模板创建后在应用部署功能中使用,yaml模板创建后在应用编排设计功能中使用。每个模板只有创建者和管理员可以进行修改,其它用户只能查看。
根据用户提供的创建信息AOS自动生成应用编排模板的功能;应用编排模板包括应用基础信息、容器配置、应用配置和网络配置。
应用基础信息包括应用名称、标签、自定义描述(简介)、部署位置(命名空间、集群)、实例数量等;
容器配置包括每个容器所使用的镜像(名称、版本)及镜像仓库信息、容器端口、资源配置(CPU、内存等)以及众多高级选项(爆发模式配置、卷挂载配置、镜像获取策略、配置文件、私密文件、环境变量配置、命令、参数配置等等)
应用配置包括创建关联的service(服务)、重启策略、pod亲和/反亲和/分散、主机亲和、主机PID、主机IPC、依赖服务配置、JVM监控配置等等;
网络配置包括IP分配策略和网络域的选择。
应用商店部分功能在权限方面同样分为管理员和普通用户,管理员可以对Helm应用进行管理,为普通用户提供常用的chart包的应用合集;而普通用户只能使用已有的Helm应用,可以查看应用的yaml文件和模板,点击发布即可快速部署应用。
在进行应用编排设计时,需要从左侧组件列表中选择所需应用,这些应用模板需要在模板管理功能的对应页面中进行事先创建,或者在编排时直接编写yaml文件;在右侧的应用编排拓补图中,用户可自行定义各个应用或服务的拓补关系,通过拖拽等操作即可完成修改;应用编排设计创建好后,AOS会根据其自动生成应用编排描述文件,再由编排引擎进行解析,最后由管理器等自动完成应用部署。
实施例3:
云原生PAAS平台:对原生K8S组件源码全面优化,并集成第三方插件,在功能和性能上进行了大幅提升。本发明基于Helm的应用服务资源编排及自动化部署方法及系统为该平台提供了应用编排服务和应用资源供给方法,实现应用自动化部署。
a.基本构件/步骤
如图4所示,容器云平台功能架构涵盖了云原生K8S的全部流程,从基础设施、PAAS组件到功能架构、解决方案,其中AOS与单/多集群应用管理密切相关,核心组件包括编排引擎、部署管理器、事件管理器等。
b.具体实施步骤
以自动化批量部署应用为例,首先需要创建应用模板,再使用图形化应用编排设计器直接调用已有的模板完成应用编排设计,之后等待应用自动部署完成即可。
用户根据所属项目的权限,可以随意调用该项目下的私有模板或公有模板。
如果Helm应用商店中有所需应用,点击发布再简单修改配置即可快速完成应用部署。
c.优点和效果
在应用编排部署方面,实现了应用纯容器化交付部署,减少运维人员投入;省去了传统的人工和装脚本的步骤,分钟级可交付;基于容器的更细粒度部署规格和更高的部署密度,可根据业务需求按需部署,提高资源利用率。
云原生PAAS平台还支持多个发行版K8S的统一管理,解决了用户从开源K8S平滑迁移到观云台的难题;可将联邦集群、云边协同、微服务等能力快速的通过资源池管理器赋能给现有的开源和其他发行版K8S;内置的数据备份、恢复功能,同时结合高可用的部署方案,保障数据安全可靠;完善的日志、监控模块,配合基于容器的自恢复和自调度策略和界面化的运维属性配置,大量降低人力运维成本等。
实施例4:
再一方面本发明还提供了一种应用服务资源编排及自动化部署系统,包括:应用编排服务AOS和优化后的编排工具K8S;
所述应用编排服务AOS,用于解析用户请求,生成应用部署计划命令,并将所述命令发送至优化后的编排工具K8S,并基于优化后的编排工具K8S创建的实例进行应用部署;
所述优化后的编排工具K8S,用于根据命令调度容器、资源需求和约束条件选择对应的节点创建实例;
其中,所述优化后的编排工具K8S是基于资源情况和已知问题对编排工具K8S进行源码修改,优化算法、增加故障域感知功能和监控告警功能得到的。
可选的,所述优化后的编排工具K8S包括:应用程序包管理工具Helm;
所述应用程序包管理工具Helm,用于根据命令调度容器,按照编排引擎的计划进行创建和配置;并根据资源需求和约束条件确定节点,由所述节点创建实例。
可选的,应用程序包管理工具Helm中根据命令调度容器,按照编排引擎的计划进行创建和配置的实现步骤包括:
预先优化后的编排工具K8S中的应用程序包管理工具Helm部署和管理应用编排服务AOS发送的命令,通过命令行界面或API调用执行部署操作,自动将Chart解析并在K8S集群中创建相应的资源对象。
可选的,所述应用编排服务AOS中的通过应用编排服务AOS基于实例进行应用部署实现的步骤包括:
通过应用编排服务AOS的部署管理器根据实例自动生成应用编排模板;
由应用编排模板进行应用部署。
实施例5:
基于同一种发明构思,本发明还提供了一种计算机设备,该计算机设备包括处理器以及存储器,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器用于执行所述计算机存储介质存储的程序指令。处理器可能是中央处理单元(CentralProcessing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital SignalProcessor、DSP)、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其是终端的计算核心以及控制核心,其适于实现一条或一条以上指令,具体适于加载并执行计算机存储介质内一条或一条以上指令从而实现相应方法流程或相应功能,以实现上述实施例中一种应用服务资源编排及自动化部署方法的步骤。
实施例6:
基于同一种发明构思,本发明还提供了一种存储介质,具体为计算机可读存储介质(Memory),所述计算机可读存储介质是计算机设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机可读存储介质既可以包括计算机设备中的内置存储介质,当然也可以包括计算机设备所支持的扩展存储介质。计算机可读存储介质提供存储空间,该存储空间存储了终端的操作系统。并且,在该存储空间中还存放了适于被处理器加载并执行的一条或一条以上的指令,这些指令可以是一个或一个以上的计算机程序(包括程序代码)。需要说明的是,此处的计算机可读存储介质可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。可由处理器加载并执行计算机可读存储介质中存放的一条或一条以上指令,以实现上述实施例中一种应用服务资源编排及自动化部署方法的步骤。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上仅为本发明的实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均包含在发明待批的本发明的权利要求范围之内。

Claims (12)

1.一种应用服务资源编排及自动化部署方法,其特征在于,包括:
通过应用编排服务AOS解析用户请求,生成应用部署计划命令,并将所述命令发送至预先优化后的编排工具K8S;
通过预先优化后的编排工具K8S根据命令调度容器、资源需求和约束条件选择对应的节点创建实例;
通过应用编排服务AOS基于实例进行应用部署;
其中,所述预先优化后的编排工具K8S是基于资源情况和已知问题进行源码修改,优化算法、增加故障域感知功能和监控告警功能。
2.如权利要求1所述的方法,其特征在于,所述通过应用编排服务AOS解析用户请求,生成应用部署计划命令,并将所述命令发送至预先优化后的编排工具K8S,包括:
通过应用编排服务AOS的编排引擎解析用户请求,并根据定义的规则和策略生成应用部署计划;
通过应用编排服务AOS的部署管理器与底层的资源管理系统交互,创建、调度和部署容器,并生成命令;
通过应用编排服务AOS的事件管理器将命令通过API接口传输至预先优化后的编排工具K8S。
3.如权利要求1所述的方法,其特征在于,所述编排工具K8S的优化,包括:
基于资源情况和已知问题对编排工具K8S组件的源码进行修改,优化算法、增加故障域感知功能和监控告警功能,并增加以供用户自定义使用的控制器和策略;
采用编排工具K8S中的应用程序包管理工具Helm部署和管理应用编排服务AOS发送的命令,通过命令行界面或API调用执行部署操作,自动将Chart解析并在编排工具K8S集群中创建相应的资源对象。
4.如权利要求3所述的方法,其特征在于,所述基于资源情况对编排工具K8S组件的源码进行修改,优化算法、增加故障域感知功能和监控告警功能,并增加以供用户自定义使用的控制器和策略,包括:
基于资源情况和已知问题对编排工具K8S组件的源码进行二次开发,优化调度算法;
通过选择主机和选择污点、标签的规则,创建资源池。
5.如权利要求3所述的方法,其特征在于,所述采用编排工具K8S中的应用程序包管理工具Helm部署和管理应用编排服务AOS发送的命令,包括:
应用程序包管理工具Helm管理应用编排服务AOS发送的命令对应的应用的发布,并允许将应用回滚到旧版本;
应用程序包管理工具Helm根据应用编排服务AOS发送的命令在Chart中定义应用的配置选项,并在部署时动态配置。
6.如权利要求1所述的方法,其特征在于,所述通过预先优化后的编排工具K8S根据命令调度容器、资源需求和约束条件选择对应的节点创建实例,包括:
预先优化后的编排工具K8S根据命令调度容器,按照编排引擎的计划进行创建和配置;
预先优化后的编排工具K8S根据资源需求和约束条件确定节点,由所述节点创建实例。
7.如权利要求6所述的方法,其特征在于,所述预先优化后的编排工具K8S根据命令调度容器,按照编排引擎的计划进行创建和配置,包括:
预先优化后的编排工具K8S中的应用程序包管理工具Helm部署和管理应用编排服务AOS发送的命令,通过命令行界面或API调用执行部署操作,自动将Chart解析并在预先优化后的编排工具K8S集群中创建相应的资源对象。
8.如权利要求1所述的方法,其特征在于,所述通过应用编排服务AOS基于实例进行应用部署,包括:
通过应用编排服务AOS的部署管理器根据实例自动生成应用编排模板;
由应用编排模板进行应用部署。
9.一种应用服务资源编排及自动化部署系统,其特征在于,包括:应用编排服务AOS和优化后的编排工具K8S;
所述应用编排服务AOS,用于解析用户请求,生成应用部署计划命令,并将所述命令发送至优化后的编排工具K8S,并基于优化后的编排工具K8S创建的实例进行应用部署;
所述优化后的编排工具K8S,用于根据命令调度容器、资源需求和约束条件选择对应的节点创建实例;
其中,所述优化后的编排工具K8S是基于资源情况和已知问题对编排工具K8S进行源码修改,优化算法、增加故障域感知功能和监控告警功能得到的。
10.如权利要求9所述的系统,其特征在于,所述优化后的编排工具K8S包括:应用程序包管理工具Helm;
所述应用程序包管理工具Helm,用于根据命令调度容器,按照编排引擎的计划进行创建和配置;并根据资源需求和约束条件确定节点,由所述节点创建实例。
11.一种计算机设备,其特征在于,包括:一个或多个处理器;
所述处理器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行时,实现如权利要求1至8中任一项所述的一种应用服务资源编排及自动化部署方法。
12.一种计算机可读存储介质,其特征在于,其上存有计算机程序,所述计算机程序被执行时,实现如权利要求1至8中任一项所述的一种应用服务资源编排及自动化部署方法。
CN202311235760.6A 2023-09-22 2023-09-22 一种应用服务资源编排及自动化部署方法及系统 Pending CN117369942A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311235760.6A CN117369942A (zh) 2023-09-22 2023-09-22 一种应用服务资源编排及自动化部署方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311235760.6A CN117369942A (zh) 2023-09-22 2023-09-22 一种应用服务资源编排及自动化部署方法及系统

Publications (1)

Publication Number Publication Date
CN117369942A true CN117369942A (zh) 2024-01-09

Family

ID=89390197

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311235760.6A Pending CN117369942A (zh) 2023-09-22 2023-09-22 一种应用服务资源编排及自动化部署方法及系统

Country Status (1)

Country Link
CN (1) CN117369942A (zh)

Similar Documents

Publication Publication Date Title
US11722376B2 (en) Execution of a topology
CN107515776B (zh) 业务不间断升级方法、待升级节点和可读存储介质
CN110768833B (zh) 基于kubernetes的应用编排部署方法及装置
EP3455728B1 (en) Orchestrator for a virtual network platform as a service (vnpaas)
CN110413288B (zh) 应用部署方法、装置、服务器及存储介质
US9851989B2 (en) Methods and apparatus to manage virtual machines
US10324709B2 (en) Apparatus and method for validating application deployment topology in cloud computing environment
US8904341B2 (en) Deriving grounded model of business process suitable for automatic deployment
US20170171020A1 (en) Using declarative configuration data to manage cloud lifecycle
US20110004564A1 (en) Model Based Deployment Of Computer Based Business Process On Dedicated Hardware
CN112035228A (zh) 一种资源调度方法及装置
US20120124553A1 (en) Status management for phased implementation of configuration changes
WO2011150777A1 (zh) Web应用的开发装置及其开发方法
WO2013122815A1 (en) Coordination of processes in cloud computing environments
CN115292026B (zh) 容器集群的管理方法、装置、设备及计算机可读存储介质
JP7161560B2 (ja) 人工知能開発プラットフォームの管理方法及び装置、媒体
CN114138754A (zh) 基于Kubernetes平台的软件部署方法及装置
US11108638B1 (en) Health monitoring of automatically deployed and managed network pipelines
CN114912897A (zh) 工作流执行方法、工作流编排方法及电子设备
Tang et al. Application centric lifecycle framework in cloud
CN115237547B (zh) 一种非侵入式hpc计算集群的统一容器集群托管系统和方法
CN117369942A (zh) 一种应用服务资源编排及自动化部署方法及系统
US10417051B2 (en) Synchronizing shared resources in an order processing environment using a synchronization component
CN114615268A (zh) 基于Kubernetes集群的服务网络、监控节点、容器节点及设备
Farhat et al. Safe Dynamic Reconfiguration of Concurrent Component-based Applications

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication