CN112783646A - 有状态应用容器化部署方法及装置 - Google Patents

有状态应用容器化部署方法及装置 Download PDF

Info

Publication number
CN112783646A
CN112783646A CN202110042809.0A CN202110042809A CN112783646A CN 112783646 A CN112783646 A CN 112783646A CN 202110042809 A CN202110042809 A CN 202110042809A CN 112783646 A CN112783646 A CN 112783646A
Authority
CN
China
Prior art keywords
stateful application
configuration file
user configuration
stateful
instance
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
CN202110042809.0A
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.)
Industrial and Commercial Bank of China Ltd ICBC
Original Assignee
Industrial and Commercial Bank of China Ltd ICBC
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 Industrial and Commercial Bank of China Ltd ICBC filed Critical Industrial and Commercial Bank of China Ltd ICBC
Priority to CN202110042809.0A priority Critical patent/CN112783646A/zh
Publication of CN112783646A publication Critical patent/CN112783646A/zh
Pending legal-status Critical Current

Links

Images

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/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

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

本发明提供了一种有状态应用容器化部署方法及装置,可用于云计算技术领域。所述方法包括:若根据获取的用户配置文件,获知所述用户配置文件对应的有状态应用实例未部署,则获取所述用户配置文件对应的有状态应用通用模型;其中,所述用户配置文件包括有状态应用实例名称及有状态应用实例通用模型名称;根据所述用户配置文件及其对应的有状态应用通用模型,利用Kubernetes Operator技术进行有状态应用实例容器化部署。本发明基于Kubernetes Operator进行有状态应用容器化部署,通过定义有状态应用的通用模型,结合用户配置文件,实现了有状态应用的容器化自动部署。

Description

有状态应用容器化部署方法及装置
技术领域
本发明涉及云计算技术领域,尤指一种有状态应用容器化部署方法及装置。
背景技术
有状态应用,比如ElasticSearch,作为一个分布式、高扩展、高实时搜索与数据分析引擎,在建立索引、搜索、数据分析及存储等方面都有非常优异的表现。充分利用ElasticSearch的水平伸缩性,能使数据在生产环境变得更有价值,这就需要大量部署ElasticSearch集群以供需要。不过ElasticSeacrch集群本身构成较为复杂,至少需要master节点、client节点、data节点三种组成,并且对机器资源要求较高。当前生产环境采用传统方式部署,只能通过单台机器进行单个ElasticSearch集群节点部署,不同节点均需要手动更改配置文件,并且当前机器操作系统必须统一安装。类似还有solr、zookeeper等有存储状态、拓扑状态需求的较复杂应用,均面临同ElasticSearch相似的问题。
随着云平台技术的发展,越来越多的应用比如常见的web apps或者移动端后台程序,均基于Kubernetes平台入PaaS云,实现容器化部署。容器化部署可以让应用享受一键搭建、一键伸缩、一键升级等红利,甚至应用无需关心部署的服务器是否是应用安装所需要的操作系统,而且单台服务器在资源足够的情况下,可以部署多个节点,充分利用机器的资源。开发者甚至不用十分了解Kubernetes就可以利用Deployment、Service等基本单元模型构建出自己的应用拓扑并暴露服务。
不过,以上快速容器化部署的主要应用均为无状态应用。无状态应用的特性支持其在任意时刻进行部署、迁移、升级等操作,可以享受入PaaS云带来的快速上线、弹性扩容的红利。但是,ElasticSearch作为提供分布式体系中间件支撑能力的应用,因其有状态应用的编排关系复杂、需支持持久化存储等需要,就无法直接使用无状态应用入PaaS云方案。
随着集群规模日益庞大,如何实现ElasticSearch等有状态应用快速搭建、扩容缩容以及升级等基本运维部署操作,是本领域亟待解决的问题。
发明内容
针对现有技术存在的问题,本发明实施例的主要目的在于提供一种有状态应用容器化部署方法及装置,实现对ElasticSearch等有状态应用进行容器化部署。
为了实现上述目的,本发明实施例提供一种有状态应用容器化部署方法,所述方法包括:
若根据获取的用户配置文件,获知所述用户配置文件对应的有状态应用实例未部署,则获取所述用户配置文件对应的有状态应用通用模型;其中,所述用户配置文件包括有状态应用实例名称及有状态应用实例通用模型名称;
根据所述用户配置文件及其对应的有状态应用通用模型,利用KubernetesOperator技术进行有状态应用实例容器化部署。
可选的,在本发明一实施例中,所述方法还包括:若根据获取的用户配置文件,获知所述用户配置文件对应的有状态应用实例已部署,则对比所述用户配置文件与已部署的有状态应用实例,得到对比结果;根据所述对比结果,对已部署的有状态应用实例进行更新。
可选的,在本发明一实施例中,所述根据所述对比结果,对已部署的有状态应用实例进行更新包括:根据所述对比结果,对已部署的有状态应用实例进行实例名称修改、实例数量修改和节点数量修改三种更新操作中的至少一种。
可选的,在本发明一实施例中,所述有状态应用通用模型包括通用要素及实例配置信息,所述通用要素是预先设置的。
可选的,在本发明一实施例中,所述根据所述用户配置文件及其对应的有状态应用通用模型,利用Kubernetes Operator技术进行有状态应用实例容器化部署包括:根据所述用户配置文件,设置有状态应用通用模型中对应的实例配置信息,得到所述用户配置文件对应的有状态应用实例;利用Kubernetes Operator技术,按照预设的节点编排对象、网络访问方式及节点启动顺序,对所述用户配置文件对应的有状态应用实例进行容器化自动部署。
可选的,在本发明一实施例中,所述方法还包括:监控所述用户配置文件对应的有状态应用实例的运行状态,若获知所述运行状态不正常,则停止所述用户配置文件对应的有状态应用实例的运行。
可选的,在本发明一实施例中,所述方法还包括:利用本地卷存储方式,对所述用户配置文件对应的有状态应用实例进行动态存储。
本发明实施例还提供一种有状态应用容器化部署装置,所述装置包括:
通用模型模块,用于若根据获取的用户配置文件,获知所述用户配置文件对应的有状态应用实例未部署,则获取所述用户配置文件对应的有状态应用通用模型;其中,所述用户配置文件包括有状态应用实例名称及有状态应用实例通用模型名称;
容器化部署模块,用于根据所述用户配置文件及其对应的有状态应用通用模型,利用Kubernetes Operator技术进行有状态应用实例容器化部署。
可选的,在本发明一实施例中,所述装置还包括:对比模块,用于若根据获取的用户配置文件,获知所述用户配置文件对应的有状态应用实例已部署,则对比所述用户配置文件与已部署的有状态应用实例,得到对比结果;更新模块,用于根据所述对比结果,对已部署的有状态应用实例进行更新。
可选的,在本发明一实施例中,所述更新模块还用于:根据所述对比结果,对已部署的有状态应用实例进行实例名称修改、实例数量修改和节点数量修改三种更新操作中的至少一种。
可选的,在本发明一实施例中,所述有状态应用通用模型包括通用要素及实例配置信息,所述通用要素是预先设置的。
可选的,在本发明一实施例中,所述容器化部署模块包括:应用实例单元,用于根据所述用户配置文件,设置有状态应用通用模型中对应的实例配置信息,得到所述用户配置文件对应的有状态应用实例;自动部署单元,用于利用Kubernetes Operator技术,按照预设的节点编排对象、网络访问方式及节点启动顺序,对所述用户配置文件对应的有状态应用实例进行容器化自动部署。
可选的,在本发明一实施例中,所述装置还包括:监控模块,用于监控所述用户配置文件对应的有状态应用实例的运行状态,若获知所述运行状态不正常,则停止所述用户配置文件对应的有状态应用实例的运行。
可选的,在本发明一实施例中,所述装置还包括:动态存储模块,用于利用本地卷存储方式,对所述用户配置文件对应的有状态应用实例进行动态存储。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述方法的计算机程序。
本发明基于Kubernetes Operator进行有状态应用容器化部署,通过定义有状态应用的通用模型,结合用户配置文件,实现了有状态应用的容器化自动部署。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一种有状态应用容器化部署方法的流程图;
图2为本发明实施例中有状态应用实例更新的流程图;
图3为本发明实施例中容器化部署的流程图;
图4为本发明实施例中节点启动顺序示意图;
图5为本发明实施例中应用有状态应用容器化部署方法的系统结构示意图;
图6为本发明实施例中有状态应用模型定义模块的结构示意图;
图7为本发明实施例中自动控制模块的结构示意图;
图8为本发明实施例中有状态应用实例部署模块的结构示意图;
图9为本发明实施例中应用有状态应用容器化部署方法的系统的工作流程图;
图10为本发明实施例中网络连接示意图;
图11为本发明实施例一种有状态应用容器化部署装置的结构示意图;
图12为本发明实施例中容器化部署模块结构示意图;
图13为本发明一实施例所提供的电子设备的结构示意图。
具体实施方式
本发明实施例提供一种有状态应用容器化部署方法及装置,可用于云计算技术领域。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的有状态应用容器化部署方法的执行主体包括但不限于计算机。本发明实施例提供的基于Kubernetes Operator的有状态应用容器化部署方法,可解决ElasticSearch等有状态应用通过传统方式部署过程中,遇到的各种运维困难问题,包括:节点搭建复杂、扩容困难、升级工作量大、单台服务器只能部署单个节点等,实现ElasticSearch等有状态应用入PaaS云,支持维持其拓扑状态、存储状态,提供以整个ElasticSearch等有状态应用集群为单位的自动化部署,通过配置文件的更新实现一键扩容和一键升级,并且在资源充足的情况下,单台服务器可支持多ElasticSearch实例的节点部署。
如图1所示为本发明实施例一种有状态应用容器化部署方法的流程图,图中所示方法包括:
步骤S1,若根据获取的用户配置文件,获知所述用户配置文件对应的有状态应用实例未部署,则获取所述用户配置文件对应的有状态应用通用模型;其中,所述用户配置文件包括有状态应用实例名称及有状态应用实例通用模型名称。
其中,以有状态应用ElasticSearch为例,获取用户提供的配置文件,用户配置文件可以为yaml文件。将用户配置文件中记录的有状态应用实例名称与已部署的有状态应用实例的名称进行比对,判断用户配置文件中记录的有状态应用实例是否已经被部署。若没有,则根据用户配置文件中记录的有状态应用实例通用模型名称,获取预先设置好的有状态应用实例通用模型。
进一步的,对有状态应用实例通用模型预先设置,也可称为有状态应用实例通用模型定义,主要定义通用模型中的通用要素及实例配置信息。有状态应用实例中包括多种类型的节点,通用要素主要是指有状态应用实例中所包括的节点种类、各类节点各个数以及实例个数。以有状态应用ElasticSearch(缩写ES)为例,通用模型如表1所示,实例配置信息如表2所示。其中,Kibana节点是elastic官网为ES节点提供日志分析的Web接口,可使用它对日志进行高效的搜索、可视化、分析等各种操作。Cerebro节点是业界一款通用集群监控工具,可使用它对ES集群各项指标进行监控。
表1
Figure BDA0002895937650000061
表2
Figure BDA0002895937650000062
步骤S2,根据所述用户配置文件及其对应的有状态应用通用模型,利用Kubernetes Operator技术进行有状态应用实例容器化部署。
其中,以有状态应用ElasticSearch为例,用户可配置的yaml文件,即用户配置文件如表3所示。基于用户提供的用户配置文件可以对有状态应用实例通用模型进行设置,具体的,主要利用用户配置文件设置表2中的数值部分。
表3
Figure BDA0002895937650000071
进一步的,利用用户配置文件设置有状态应用的通用模型后,就完成了与用户配置文件对应的有状态应用实例的构建。利用Kubernetes Operator技术,对构建完成的有状态应用实例进行自动的容器化部署。其中,Kubernetes Operator技术是管理特定应用程序的控制器,支持对kubernetes各类原生资源对象的配置和编排,通过扩展kubernetes API以软件的方式实现复杂有状态应用实例的创建、配置和管理。
具体的,以有状态应用ElasticSearch为例,为维护有状态应用的拓扑状态,通过Kubernetes Operator技术有序将有状态应用各个节点和服务依次建立起来,节点启动顺序如图4所示。
作为本发明的一个实施例,如图2所示,方法还包括:
步骤S21,若根据获取的用户配置文件,获知所述用户配置文件对应的有状态应用实例已部署,则对比所述用户配置文件与已部署的有状态应用实例,得到对比结果。
其中,将用户配置文件中记录的有状态应用实例名称与已部署的有状态应用实例进行比对,判断用户配置文件中记录的有状态应用实例是否已经被部署。若已部署,则将用户配置文件与已部署的有状态应用实例的名称进行对比,得到对比结果。具体的,若用户配置文件中实例个数比已部署的有状态应用实例个数多两个,则对比结果为增加两个实例。
步骤S22,根据所述对比结果,对已部署的有状态应用实例进行更新。
具体的,若对比结果可以包括增加实例个数、修改实例名称及增加节点个数等中的一个或多个。按照对比结果,对已部署的有状态应用实例进行相应的更新。
在本实施例中,根据所述对比结果,对已部署的有状态应用实例进行更新包括:根据所述对比结果,对已部署的有状态应用实例进行实例名称修改、实例数量修改和节点数量修改三种更新操作中的至少一种。
作为本发明的一个实施例,有状态应用通用模型包括通用要素及实例配置信息,所述通用要素是预先设置的。
其中,通用要素主要是指有状态应用实例中所包括的节点种类、各类节点各个数以及实例个数。以有状态应用ElasticSearch(缩写ES或es)为例,实例配置信息如表2所示。
在本实施例中,如图3所示,根据所述用户配置文件及其对应的有状态应用通用模型,利用Kubernetes Operator技术进行有状态应用实例容器化部署包括:
步骤S31,根据所述用户配置文件,设置有状态应用通用模型中对应的实例配置信息,得到所述用户配置文件对应的有状态应用实例。
步骤S32,利用Kubernetes Operator技术,按照预设的节点编排对象、网络访问方式及节点启动顺序,对所述用户配置文件对应的有状态应用实例进行容器化自动部署。
其中,以有状态应用ElasticSearch为例,用户可配置的yaml文件,即用户配置文件如表3所示,有状态应用实例通用模型如表1所示,实例配置信息如表2所示。基于用户提供的用户配置文件可以对有状态应用实例通用模型进行设置,具体的,主要利用用户配置文件设置表2中的数值部分。
进一步的,为维护有状态应用ElasticSearch的拓扑状态,通过KubernetesOperator技术有序将有状态应用各个节点和服务依次建立起来,节点启动顺序如图4所示。此外,利用Kubernetes Operator技术进行容器化部署时,按照预设的节点编排对象及网络访问方式进行部署。以有状态应用ElasticSearch为例,节点编排对象及网络访问方式如表4所示。
表4
Figure BDA0002895937650000091
在本实施例中,方法还包括:监控所述用户配置文件对应的有状态应用实例的运行状态,若获知所述运行状态不正常,则停止所述用户配置文件对应的状态应用实例的运行。
其中,以有状态应用ElasticSearch为例,利用Kubernetes Operator技术,根据预设的通用要素和ES拓扑状态,对有状态应用实例的运行状态进行监控。当运行状态不正常时,则停止有状态应用实例的运行。
在本实施例中,方法还包括:利用本地卷存储方式,对所述用户配置文件对应的有状态应用实例进行动态存储。
其中,采用local-volume(本地卷)的存储方式,实现有状态应用实例动态存储。
如图5所示为本发明实施例中应用有状态应用容器化部署方法的系统结构示意图,有状态应用模型定义模块1、自动控制模块2及有状态应用实例部署模块3、有状态应用模型定义模块1与自动控制模块2相连;自动控制模块2与有状态应用实例部署模块3相连;有状态应用模型定义模块1与有状态应用实例部署模块3相连。
其中,有状态应用模型定义模块1用于用户自定义对有状态应用模型的配置,建立一个有状态应用集群需要哪些必备元素,并且对希望建立的实例进行数量定义,比如建几个ElasticSearch集群和每个ElasticSearh集群中的节点建多少个数以及存储量。相关定义信息保存到项目配置文件中。
自动控制模块2从有状态应用模型定义模块1中读取配置信息,主要包含通用要素和实例配置信息,之后执行模块会相应的采取执行逻辑。用户向该模块发动创建/更新、扩容等请求均会被解析,该模块可以保证请求被自动执行,并且实时监控是否达到期望值。
有状态应用实例部署模块3根据自动控制模块2的命令,从有状态应用模型定义模块1中读取配置,按照命令创建出符合预期的有状态应用实例,包括节点、网络、存储以及对外暴露服务和对该有状态应用实例的数据监控。
如图9所示为应用有状态应用容器化部署方法的系统的工作流程图,系统具体工作过程结合系统中各模型结构进行如下说明。如图6是有状态应用模型定义模块1内部结构示意图,有状态应用模型定义模块1包括通用要素配置单元11、实例配置单元12和状态维护单元13,其中:
通用要素配置单元11用于定义一个有状态应用集群需要哪些基本要素,主要包含哪几种节点,节点使用的Kubernetes的编排对象是什么。
实例配置单元12用于根据通用要素配置单元11定义各个节点的数量,以及定义实例个数,即创建多少个有状态应用实例。
状态维护单元13用于有状态应用需要维护拓扑状态和存储状态,需要用到Kubernets平台的StatefulSet和PV/PVC模型,以及Kubernetes Operator技术有序创建出不同的ES集群节点。StatefulSet(有状态集),是kubernetes为解决有状态服务问题引入的标准编排对象。Pod是kubernetes管理的最小单位级,是一个或多个容器的组合。StatefulSet所管理的Pod拥有固定的名称和启停顺序;StatefulSet结合PV/PVC可以维持应用的存储状态,可以让Pod和PV的绑定关系不随重启或迁移而改变。PV指持久化卷,Persistent Volume,是存储系统中的一块存储空间,PV具有持久性,生命周期独立于Pod。PVC指持久化卷申明,Persistent Volume Claim,是对PV的申请说明,即用户进行存储的请求。StatefulSet基于PVC存储申请配置为每个Pod绑定专用PV,并维持绑定关系不变;StatefulSet结合Headless Service可进一步实现节点网络持久化。通用Service(指Kubernetes Service,将运行在一组Pods上的应用程序公开为网络服务的抽象方法,使用标签选择器标识一组Pod。)仅会将访问自动负载到后端某一节点,而Headless Service(Kubernetes Service的一种,指无头服务,不分配具体集群IP,而是通过域名解析出节点IP)被访问时会返回后端节点的全量地址列表,结合Pod名可精确访问到具体Pod,通过StatefulSet所管理Pod名称不变的特性可实现稳定访问。
状态包括:1)网络持久化:为实现内部稳定通信,Pod迁移或重启时,需维持Pod访问地址不变;2)存储持久化:需要在Pod内实现持久化存储,Pod迁移或重启等情况下存储内容不能丢失;3)拓扑状态,节点创建需有序:比如ElasticSearch,先后顺序为master(管理)节点,data(存储)节点,client(客户端)节点。
使用StatefulSet编排对象是需要维护应用的状态信息的节点,有网络和存储持久化的需求;使用Deployment(是kubernetes为解决无状态服务问题引入的标准编排对象)编排对象无需维护状态,可任意在不同机器上启停。ElasticSearch集群有拓扑状态的需求保留,通过Kubernetes Operator技术有序将各个节点和服务依次建立起来,如图4所示。
如图7所示是自动控制模块2内部结构示意图,自动控制模块2包括请求解析单元21和策略执行单元22和监控管理单元23,其中:
请求解析单元21用于解析用户的请求,用户只需要改配置yaml文件,解析为与当前机器上已部署实例的对比,解析为创建实例、升级实例、扩容节点等。具体的,若集群名称不同,则创建新的ES集群,若镜像不同,则升级对应的节点镜像,若节点数量不同,则扩容相应的节点。
策略执行单元22用于根据请求判断当前已部署有状态应用ElasticSearch实例和用户更新的配置文件区别,有镜像区别则启动升级策略,有数量区别则启动扩容节点策略,有es集群名区别则创建一个新ElasticSearch实例。
监控管理单元23用于基于Kubernetes Operator技术根据通用要素配置单元11和定义的ES拓扑状态设计创建的ES-operator用于实例创建的监控和生命周期管理,监控创建的容器是否都处于健康运行状态,并显示出当前状态。部署容器时根据容器要求的资源和服务器规格自动进行分配部署,按照顺序依次建立,如果资源不够,显示Pending(待定)状态,并且显示是cpu还是内存或者存储不够原因,按需通知用户扩充服务器。
如图8所示是有状态应用实例部署模块3内部结构示意图,有状态应用实例部署模块3包括节点部署单元31、动态存储单元32和网络连接单元33。其中:
节点部署单元31用于依照有状态应用模型定义模块1的通用要素配置单元11,以及根据自动控制模块2的策略执行单元22部署有状态应用容器实例。
动态存储单元32主要面向需要持久化存储的master和data节点,采用本地盘local-volume的存储方式,为防止提前创建PV造成存储资源浪费,在容器部署在对应宿主机上时根据宿主机的本地盘资源,动态创建需要大小的PV,其中master和data节点会生成需要的存储声明即PVC,实现PVC和PV绑定,实现动态存储连接。
网络连接单元33为了保证创建的有状态应用集群能对外暴露服务,需要执行负载均衡策略,并且ElasticSearch需要申请对应的ES域名。通过业界通用的Ingress方案实现ES集群内服务的外部访问,进一步结合F5等负载均衡器,实现SLB(Server Load Balancer,指网络服务器的负载均衡)负载均衡:在k8s(Kubernetes)集群的每台宿主机上部署Ingress容器(Ingress是用于暴露从集群外到集群内服务的HTTP或HTTPS路由),通过在宿主机上指定端口以NodePort(Node节点端口,kubernetes的一种外部访问方式,这里的Node节点是指kubernetes集群中的一台虚拟机或物理机)的方式实现外部流量接入;在Ingress容器内部指定路由规则,根据域名将流量路由到集群内相应的Service服务;以yaml配置的形式,支持路由规则的在线调整,动态生效。以ElasticSearch为例,具体如图10所示。
本发明通过应用自定义有状态应用集群的通用元素以及一个有状态应用实例配置文件,执行配置文件输入命令(如kubectl apply-f+文件名)后,Operator技术根据对比期望值和当前值的区别,实现生命周期管理,自动在服务器上部署有状态应用容器,并且提供存储持久化支持和网络对外服务。通过Kubernetes的Statefulset和PV模型构建应用的基础拓扑,帮助实现相应的持久化存储,按顺序部署、顺序扩容、顺序滚动更新等特性。其优点如下:实现有状态应用快速上线搭建;支持有状态应用节点的弹性扩容;支持有状态应用节点的一键升级;支持自动生命周期管理,简化运维操作;在服务器资源充足的情况下,一台机器上可以部署多个有状态应用节点,充分利用资源。
如图11所示为本发明实施例一种有状态应用容器化部署装置的结构示意图,图中所示装置包括:
通用模型模块10,用于若根据获取的用户配置文件,获知所述用户配置文件对应的有状态应用实例未部署,则获取所述用户配置文件对应的有状态应用通用模型;其中,所述用户配置文件包括有状态应用实例名称及有状态应用实例通用模型名称。
其中,以有状态应用ElasticSearch为例,获取用户提供的配置文件,用户配置文件可以为yaml文件。将用户配置文件中记录的有状态应用实例名称与已部署的有状态应用实例进行比对,判断用户配置文件中记录的有状态应用实例是否已经被部署。若没有,则根据用户配置文件中记录的有状态应用实例通用模型名称,获取预先设置好的有状态应用实例通用模型。
进一步的,对有状态应用实例通用模型预先设置,也可称为有状态应用实例通用模型定义,主要定义通用模型中的通用要素及实例配置信息。有状态应用实例中包括多种类型的节点,通用要素主要是指有状态应用实例中所包括的节点种类、各类节点各个数以及实例个数。
容器化部署模块20,用于根据所述用户配置文件及其对应的有状态应用通用模型,利用Kubernetes Operator技术进行有状态应用实例容器化部署。
其中,以有状态应用ElasticSearch为例,用户可配置的yaml文件,即用户配置文件。基于用户提供的用户配置文件,可以对有状态应用实例通用模型进行设置。
作为本发明的一个实施例,装置还包括:对比模块,用于若根据获取的用户配置文件,获知所述用户配置文件对应的有状态应用实例已部署,则对比所述用户配置文件与已部署的有状态应用实例,得到对比结果;更新模块,用于根据所述对比结果,对已部署的有状态应用实例进行更新。
在本实施例中,更新模块还用于:根据所述对比结果,对已部署的有状态应用实例进行实例名称修改、实例数量修改和节点数量修改三种更新操作中的至少一种。
作为本发明的一个实施例,有状态应用通用模型包括通用要素及实例配置信息,所述通用要素是预先设置的。
在本实施例中,如图12所示,容器化部署模块包括:
应用实例单元,用于根据所述用户配置文件,设置有状态应用通用模型中对应的实例配置信息,得到所述用户配置文件对应的有状态应用实例;
自动部署单元,用于利用Kubernetes Operator技术,按照预设的节点编排对象、网络访问方式及节点启动顺序,对所述用户配置文件对应的有状态应用实例进行容器化自动部署。
在本实施例中,装置还包括:监控模块,用于监控所述用户配置文件对应的有状态应用实例的运行状态,若获知所述运行状态不正常,则停止所述用户配置文件对应的有状态应用实例的运行。
在本实施例中,装置还包括:动态存储模块,用于利用本地卷存储方式,对所述用户配置文件对应的有状态应用实例进行动态存储。
基于与上述一种有状态应用容器化部署方法相同的申请构思,本发明还提供了上述一种有状态应用容器化部署装置。由于该一种有状态应用容器化部署装置解决问题的原理与一种有状态应用容器化部署方法相似,因此该一种有状态应用容器化部署装置的实施可以参见一种有状态应用容器化部署方法的实施,重复之处不再赘述。
本发明基于Kubernetes Operator进行有状态应用容器化部署,通过定义有状态应用的通用模型,结合用户配置文件,实现了有状态应用的容器化自动部署。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述方法的计算机程序。
如图13所示,该电子设备600还可以包括:通信模块110、输入单元120、音频处理单元130、显示器160、电源170。值得注意的是,电子设备600也并不是必须要包括图13中所示的所有部件;此外,电子设备600还可以包括图13中没有示出的部件,可以参考现有技术。
如图13所示,中央处理器100有时也称为控制器或操作控件,可以包括微处理器或其他处理器装置和/或逻辑装置,该中央处理器100接收输入并控制电子设备600的各个部件的操作。
其中,存储器140,例如可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其它合适装置中的一种或更多种。可储存上述与失败有关的信息,此外还可存储执行有关信息的程序。并且中央处理器100可执行该存储器140存储的该程序,以实现信息存储或处理等。
输入单元120向中央处理器100提供输入。该输入单元120例如为按键或触摸输入装置。电源170用于向电子设备600提供电力。显示器160用于进行图像和文字等显示对象的显示。该显示器例如可为LCD显示器,但并不限于此。
该存储器140可以是固态存储器,例如,只读存储器(ROM)、随机存取存储器(RAM)、SIM卡等。还可以是这样的存储器,其即使在断电时也保存信息,可被选择性地擦除且设有更多数据,该存储器的示例有时被称为EPROM等。存储器140还可以是某种其它类型的装置。存储器140包括缓冲存储器141(有时被称为缓冲器)。存储器140可以包括应用/功能存储部142,该应用/功能存储部142用于存储应用程序和功能程序或用于通过中央处理器100执行电子设备600的操作的流程。
存储器140还可以包括数据存储部143,该数据存储部143用于存储数据,例如联系人、数字数据、图片、声音和/或任何其他由电子设备使用的数据。存储器140的驱动程序存储部144可以包括电子设备的用于通信功能和/或用于执行电子设备的其他功能(如消息传送应用、通讯录应用等)的各种驱动程序。
通信模块110即为经由天线111发送和接收信号的发送机/接收机110。通信模块(发送机/接收机)110耦合到中央处理器100,以提供输入信号和接收输出信号,这可以和常规移动通信终端的情况相同。
基于不同的通信技术,在同一电子设备中,可以设置有多个通信模块110,如蜂窝网络模块、蓝牙模块和/或无线局域网模块等。通信模块(发送机/接收机)110还经由音频处理器130耦合到扬声器131和麦克风132,以经由扬声器131提供音频输出,并接收来自麦克风132的音频输入,从而实现通常的电信功能。音频处理器130可以包括任何合适的缓冲器、解码器、放大器等。另外,音频处理器130还耦合到中央处理器100,从而使得可以通过麦克风132能够在本机上录音,且使得可以通过扬声器131来播放本机上存储的声音。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (10)

1.一种有状态应用容器化部署方法,其特征在于,所述方法包括:
若根据获取的用户配置文件,获知所述用户配置文件对应的有状态应用实例未部署,则获取所述用户配置文件对应的有状态应用通用模型;其中,所述用户配置文件包括有状态应用实例名称及有状态应用实例通用模型名称;
根据所述用户配置文件及其对应的有状态应用通用模型,利用Kubernetes Operator技术进行有状态应用实例容器化部署。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若根据获取的用户配置文件,获知所述用户配置文件对应的有状态应用实例已部署,则对比所述用户配置文件与已部署的有状态应用实例,得到对比结果;
根据所述对比结果,对已部署的有状态应用实例进行更新。
3.根据权利要求2所述的方法,其特征在于,所述根据所述对比结果,对已部署的有状态应用实例进行更新包括:根据所述对比结果,对已部署的有状态应用实例进行实例名称修改、实例数量修改和节点数量修改三种更新操作中的至少一种。
4.根据权利要求1所述的方法,其特征在于,所述有状态应用通用模型包括通用要素及实例配置信息,所述通用要素是预先设置的。
5.根据权利要求4所述的方法,其特征在于,所述根据所述用户配置文件及其对应的有状态应用通用模型,利用Kubernetes Operator技术进行有状态应用实例容器化部署包括:
根据所述用户配置文件,设置有状态应用通用模型中对应的实例配置信息,得到所述用户配置文件对应的有状态应用实例;
利用Kubernetes Operator技术,按照预设的节点编排对象、网络访问方式及节点启动顺序,对所述用户配置文件对应的有状态应用实例进行容器化自动部署。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:监控所述用户配置文件对应的有状态应用实例的运行状态,若获知所述运行状态不正常,则停止所述用户配置文件对应的有状态应用实例的运行。
7.根据权利要求5所述的方法,其特征在于,所述方法还包括:利用本地卷存储方式,对所述用户配置文件对应的有状态应用实例进行动态存储。
8.一种有状态应用容器化部署装置,其特征在于,所述装置包括:
通用模型模块,用于若根据获取的用户配置文件,获知所述用户配置文件对应的有状态应用实例未部署,则获取所述用户配置文件对应的有状态应用通用模型;其中,所述用户配置文件包括有状态应用实例名称及有状态应用实例通用模型名称;
容器化部署模块,用于根据所述用户配置文件及其对应的有状态应用通用模型,利用Kubernetes Operator技术进行有状态应用实例容器化部署。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至7任一项所述方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求1至7任一项所述方法的计算机程序。
CN202110042809.0A 2021-01-13 2021-01-13 有状态应用容器化部署方法及装置 Pending CN112783646A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110042809.0A CN112783646A (zh) 2021-01-13 2021-01-13 有状态应用容器化部署方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110042809.0A CN112783646A (zh) 2021-01-13 2021-01-13 有状态应用容器化部署方法及装置

Publications (1)

Publication Number Publication Date
CN112783646A true CN112783646A (zh) 2021-05-11

Family

ID=75755737

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110042809.0A Pending CN112783646A (zh) 2021-01-13 2021-01-13 有状态应用容器化部署方法及装置

Country Status (1)

Country Link
CN (1) CN112783646A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114153525A (zh) * 2021-11-30 2022-03-08 国电南瑞科技股份有限公司 一种面向电网调控业务的ai模型服务化共享方法及系统
CN114745378A (zh) * 2022-02-14 2022-07-12 优刻得科技股份有限公司 基于边缘云场景的函数模块分发方法及系统
CN114756261A (zh) * 2022-03-23 2022-07-15 广域铭岛数字科技有限公司 一种容器集群的升级方法、系统、电子设备及介质
CN114995957A (zh) * 2022-06-24 2022-09-02 中国电信股份有限公司 容器组部署方法、装置、电子设备及计算机可读存储介质
CN115309400A (zh) * 2022-10-10 2022-11-08 阿里巴巴(中国)有限公司 任务部署方法、服务平台、部署平台、设备和存储介质
CN115695319A (zh) * 2022-11-01 2023-02-03 上海金融期货信息技术有限公司 支持多优先级策略的网关路由规则计算、设置和匹配方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190065323A1 (en) * 2017-08-25 2019-02-28 Vmware, Inc. Containerized application snapshots
CN111831394A (zh) * 2020-06-30 2020-10-27 新浪网技术(中国)有限公司 采用kubernetes部署有状态pod的方法及装置
CN112214330A (zh) * 2020-11-04 2021-01-12 腾讯科技(深圳)有限公司 集群中主节点的部署方法、装置及计算机可读存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190065323A1 (en) * 2017-08-25 2019-02-28 Vmware, Inc. Containerized application snapshots
CN111831394A (zh) * 2020-06-30 2020-10-27 新浪网技术(中国)有限公司 采用kubernetes部署有状态pod的方法及装置
CN112214330A (zh) * 2020-11-04 2021-01-12 腾讯科技(深圳)有限公司 集群中主节点的部署方法、装置及计算机可读存储介质

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114153525A (zh) * 2021-11-30 2022-03-08 国电南瑞科技股份有限公司 一种面向电网调控业务的ai模型服务化共享方法及系统
CN114153525B (zh) * 2021-11-30 2024-01-05 国电南瑞科技股份有限公司 一种面向电网调控业务的ai模型服务化共享方法及系统
CN114745378A (zh) * 2022-02-14 2022-07-12 优刻得科技股份有限公司 基于边缘云场景的函数模块分发方法及系统
CN114745378B (zh) * 2022-02-14 2024-05-28 优刻得科技股份有限公司 基于边缘云场景的函数模块分发方法及系统
CN114756261A (zh) * 2022-03-23 2022-07-15 广域铭岛数字科技有限公司 一种容器集群的升级方法、系统、电子设备及介质
CN114995957A (zh) * 2022-06-24 2022-09-02 中国电信股份有限公司 容器组部署方法、装置、电子设备及计算机可读存储介质
CN115309400A (zh) * 2022-10-10 2022-11-08 阿里巴巴(中国)有限公司 任务部署方法、服务平台、部署平台、设备和存储介质
CN115695319A (zh) * 2022-11-01 2023-02-03 上海金融期货信息技术有限公司 支持多优先级策略的网关路由规则计算、设置和匹配方法

Similar Documents

Publication Publication Date Title
CN112783646A (zh) 有状态应用容器化部署方法及装置
CN108809722B (zh) 一种部署Kubernetes集群的方法、装置和存储介质
EP3170071B1 (en) Self-extending cloud
CN102571940B (zh) 应用程序远程安装系统、方法、智能终端、应用服务器
CN108089913B (zh) 一种超融合系统的虚拟机部署方法
CN112506617B (zh) Kubernetes集群中边车容器的镜像更新方法及装置
CN113778623B (zh) 资源处理方法和装置、电子设备及存储介质
CN111796838B (zh) Mpp数据库自动部署方法及装置
CN105487891A (zh) 一种分布式集群的部署方法及系统
US20190196808A1 (en) Collaborative maintenance of software programs
CN113572862A (zh) 一种集群部署方法、装置、电子设备及存储介质
CN106911741B (zh) 一种虚拟化网管文件下载负载均衡的方法及网管服务器
CN117112122A (zh) 一种集群部署方法和装置
CN106301855B (zh) 一种网络管理系统部署方法、装置和网络管理系统
CN114866570A (zh) 一种信息处理方法、装置、电子设备及存储介质
CN104104701A (zh) 在线服务的配置更新的方法和系统
CN110113217B (zh) 微服务管理方法、装置、管理平台及存储介质
CN111897565A (zh) 基于物联网的数据处理方法、装置和设备
CN113268272B (zh) 基于私有云的应用交付方法、装置及系统
CN115268951A (zh) 一种操作系统的安装方法、装置、设备及存储介质
CN113157823A (zh) 集群系统部署方法及装置
CN105204876A (zh) 系统启动方法以及电子设备
WO2016206437A1 (zh) Rom包生成方法及装置
CN110971665A (zh) 一种对接多类型存储的管理方法、系统、设备及存储介质
CN113835715A (zh) 机箱板卡、集群系统、软件部署方法及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination