掌桥专利:专业的专利平台
掌桥专利
首页

集群插件的升级方法、装置和服务器

文献发布时间:2023-06-19 11:08:20


集群插件的升级方法、装置和服务器

技术领域

本说明书属于互联网技术领域,尤其涉及集群插件的升级方法、装置和服务器。

背景技术

在一些分布式集群中,常常需要对部署于集群中的处理节点(例如,集群中的某个节点服务器)上的插件进行更新、升级等操作。

基于现有的涉及集群插件的升级方法,通常需要利用诸如Ansible等运维工具,并基于相关协议先连接上待升级的处理节点;再获取并利用该处理节点的用户账户和用户密码,通过执行编写好的ansible脚本,进行相对较为繁琐的操作处理后,才能最终完成该处理节点上相关插件的升级。

可见,基于现有方法,具体实施时,往往存在集群插件升级时,操作处理过程复杂、繁琐,升级效率低,对集群插件维护成本高,且容易泄露处理节点的用户账户和用户密码等隐私数据的技术问题。

针对上述问题,目前尚未提出有效的解决方案。

发明内容

本说明书提供了一种集群插件的升级方法、装置和服务器,以高效、便捷地对目标节点上部署的目标插件进行相应的升级处理,降低对集群插件的维护成本。

本说明书提供了一种集群插件的升级方法,应用于部署有目标插件的目标节点,包括:

响应基于目标集群的调度请求,从预设的镜像仓库中拉取目标升级镜像;其中,所述目标升级镜像至少包括:免密登录模块、版本检测模块和版本升级模块;所述版本升级模块至少携带有关于目标插件的更新版本的介质文件和升级脚本;

在本地容器内运行所述目标升级镜像;并根据预设的处理规则,通过组合利用所述免密登录模块、所述版本检测模块和所述版本升级模块,对目标节点上部署的目标插件进行升级处理。

在一个实施例中,所述目标集群包括:支持容器化操作的集群。

在一个实施例中,根据预设的处理规则,通过组合利用所述免密登录模块、所述版本检测模块和所述版本升级模块,对目标节点上部署的目标插件进行升级处理,包括:

根据预设的处理规则,利用所述免密登录模块,以预设的免密登录模式,实现对目标节点的免密登录;其中,所述预设的免密登录模式不需要使用目标节点的用户账户和用户密码;

根据预设的处理规则,利用所述版本检测模块,确定当前状态是否满足关于目标插件的预设升级要求;

在确定当前状态满足关于目标插件的预设升级要求的情况下,根据预设的处理规则,利用所述版本升级模块,基于更新版本的介质文件,对目标节点上部署的目标插件进行升级处理。

在一个实施例中,根据预设的处理规则,利用所述免密登录模块,以预设的免密登录模式,实现对目标节点的免密登录,包括:

根据预设的处理规则,将目标节点的目录挂载到容器内;

利用所述免密登录模块生成SSH秘钥;其中,所述SSH秘钥包括SSH公钥和SSH私钥;

基于所挂载的目标节点的目录,将所述SSH公钥写入到目标节点,以实现对目标节点的免密登录。

在一个实施例中,根据预设的处理规则,利用所述版本检测模块,确定当前状态是否满足关于目标插件的预设升级要求,包括:

根据预设的处理规则,利用所述版本检测模块分别采集当前目标节点的资源参数、当前目标插件的版本参数、当前容器的状态参数;

根据所述当前目标节点的资源参数,确定当前是否满足预设的资源条件;根据所述目标插件的版本参数,确定当前是否满足预设的版本条件;根据所述当前容器的状态参数,确定当前是否满足预设的容器状态条件;

在确定当前状态满足预设的资源条件、预设的版本条件、预设的容器状态条件的情况下,确定当前状态满足关于目标插件的预设升级要求。

在一个实施例中,在确定当前状态不满足关于目标插件的预设升级要求的情况下,所述方法还包括:

以当前时间点开始计时,在确定累计时长达到预设的时间间隔的情况下,根据预设的处理规则,利用所述版本检测模块,确定是否满足关于目标插件的预设升级要求。

在一个实施例中,根据预设的处理规则,利用所述版本升级模块,对目标节点上部署的目标插件进行升级处理,包括:

根据预设的处理规则,利用所述版本升级模块执行升级脚本,停止目标节点当前关于目标插件的进程;利用更新版本的介质文件替换当前使用的目标插件,并重新启动关于目标插件的进程。

在一个实施例中,所述目标插件包括通过二进制方式部署的插件。

本说明书还提供了一种集群插件的升级方法,应用于升级节点,包括:

接收并响应关于目标插件的升级请求,获取目标插件的更新版本的介质文件;

根据预设的构建规则,构建针对目标插件的目标升级镜像;并将所述目标升级镜像,推送至预设的镜像仓库;其中,所述目标升级镜像至少包括:免密登录模块、版本检测模块和版本升级模块;所述版本升级模块至少携带有关于目标插件的更新版本的介质文件和升级脚本;

确定出目标集群中当前部署有目标插件的处理节点作为目标节点;并基于目标集群的调度机制,向所述目标节点发起调度请求。

在一个实施例中,所述升级节点包括目标集群中的处理节点,或目标集群外的处理节点。

本说明书还提供了一种集群插件的升级装置,包括:

拉取模块,用于响应目标集群的调度请求,从预设的镜像仓库中拉取目标升级镜像;其中,所述目标升级镜像至少包括:免密登录模块、版本检测模块和版本升级模块;所述版本升级模块至少携带有关于目标插件的更新版本的介质文件和升级脚本;

升级模块,用于在本地容器内运行所述目标升级镜像;并根据预设的处理规则,通过组合利用所述免密登录模块、所述版本检测模块和所述版本升级模块,对目标节点上部署的目标插件进行升级处理。

本书明书还提供了一种集群插件的升级装置,包括:

获取模块,用于接收并响应关于目标插件的升级请求,获取目标插件的更新版本的介质文件;

构建模块,用于根据预设的构建规则,构建针对目标插件的目标升级镜像;并将所述目标升级镜像,推送至预设的镜像仓库;其中,所述目标升级镜像至少包括:免密登录模块、版本检测模块和版本升级模块;所述版本升级模块至少携带有关于目标插件的更新版本的介质文件和升级脚本;

处理模块,用于确定出目标集群中当前部署有目标插件的处理节点作为目标节点;并基于目标集群的调度机制,向所述目标节点发起调度请求。

本说明书还提供了一种服务器,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现所述集群插件的升级方法的步骤。

本说明书还提供了一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现所述集群插件的升级方法的步骤。

本说明书提供了一种集群插件的升级方法、装置和服务器,基于该方法,负责集群插件升级的升级节点可以根据预设的构建规则,先构建出针对待升级的目标插件的目标升级镜像;其中,该目标升级镜像至少包括:免密登录模块、版本检测模块和版本升级模块;进一步,上述版本升级模块至少携带有关于目标插件的更新版本的介质文件和升级脚本;接着,升级节点可以确定出目标集群中的目标节点,并基于目标集群的调度机制,向上述目标节点发起调度请求。相应的,目标节点可以响应基于目标集群的调度请求,主动从预设的镜像仓库中拉取相应的目标升级镜像;进而,目标节点可以各自分别在本地容器内运行该目标升级镜像,并根据预设的处理规则,通过组合利用目标升级镜像中预先准备好的免密登录模块、版本检测模块和版本升级模块,高效、便捷地对目标节点上部署的目标插件进行相应的升级处理。从而可以有效地提高集群插件的升级效率,降低针对集群插件的维护成本。此外,由于上述过程不需要使用用户账户和用户密码,可以避免在插件升级过程中泄露用户的隐私数据,保护用户的数据安全。

附图说明

为了更清楚地说明本说明书实施例,下面将对实施例中所需要使用的附图作简单地介绍,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是应用本说明书实施例提供的集群插件的升级方法的集群的结构组成的一个实施例的示意图;

图2是在一个场景示例中,应用本说明书实施例提供的集群插件的升级方法的一种实施例的示意图;

图3是在一个场景示例中,应用本说明书实施例提供的集群插件的升级方法的一种实施例的示意图;

图4是在一个场景示例中,应用本说明书实施例提供的集群插件的升级方法的一种实施例的示意图;

图5是在一个场景示例中,应用本说明书实施例提供的集群插件的升级方法的一种实施例的示意图;

图6是本说明书的一个实施例提供的集群插件的升级方法的流程示意图;

图7是本说明书的一个实施例提供的集群插件的升级方法的流程示意图;

图8是本说明书的一个实施例提供的服务器的结构组成示意图;

图9是本说明书的一个实施例提供的集群插件的升级装置的结构组成示意图;

图10是在一个场景示例中,应用本说明书实施例提供的集群插件的升级方法的一种实施例的示意图;

图11是在一个场景示例中,应用本说明书实施例提供的集群插件的升级方法的一种实施例的示意图。

具体实施方式

为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。

本说明书实施例提供一种集群插件的升级方法,所述集群插件的升级方法具体可以应用于包含有多个节点服务器的分布式系统中。具体可以参阅图1所示,多个节点服务器之前通过有线或无线的方式相连,以进行具体的数据交互。并且,上述多个节点服务器中的各个节点服务器支持容器化操作。其中,每一个节点服务器可以作为一个处理节点,组合构成支持容器化操作的集群。例如,Kubernetes集群。

在本实施例中,所述节点服务器具体可以包括一种应用于数据处理系统一侧,能够实现数据传输、数据处理等功能的后台服务器。具体的,所述节点服务器例如可以为一个具有数据运算、存储功能以及网络交互功能的电子设备。或者,所述节点服务器也可以为运行于该电子设备中,为数据处理、存储和网络交互提供支持的软件程序。在本实施例中,并不具体限定所述节点服务器所包含的服务器数量。所述节点服务器具体可以为一个服务器,也可以为几个服务器,或者,由若干服务器形成的服务器集群。

在上述集群中,存在部分节点服务器上部署并运行有目标插件。当前,需要对该集群中的目标插件进行升级处理。

负责集群插件升级的节点服务器(可以简称为升级节点)可以接收并响应关于目标插件的升级请求,先获取该目标插件的更新版本的介质文件(例如,目标插件的更新版本的安装程序包等)。接着,升级节点可以根据预设的构建规则,利用目标插件的更新版本的介质文件,构建并制作针对该目标插件的目标升级镜像。可以参阅图2所示。镜像制作具体可以包括:免密登录模块(11)、版本检测模块(12)和版本升级模块(13)三个模块的制作和构建。

具体的,升级节点可以先根据预设的构建规则,结合目标插件的运行要求,以及更新版本的具体特点,生成相应的版本检测脚本、版本升级脚本。

进一步,升级节点可以通过生成并组合存储挂载单元(21)、密钥生成单元(22)和公钥输出单元(23),得到支持通过不需要用户账户和用户密码的预设的免密登录模式实现免密登录的免密登录模块。可以参阅图3所示。

升级节点可以通过根据版本检测脚本,生成并组合宿主机状态检测单元(31)、插件状态检测单元(32)和容器状态检测单元(33),得到支持通过自动检测判断宿主机(例如,部署有待升级的目标插件的节点服务器,或者称目标节点)是否满足关于目标插件的预设升级要求的版本检测模块。可以参阅图4所示。

升级节点可以通过根据版本升级脚本和更新版本的介质文件,生成并组合版本介质单元(41)和升级脚本单元(42),得到携带有目标插件的更新版本的介质文件,同时支持基于上述更新版本的介质文件,自动对宿主机上部署的目标插件进行升级处理的版本升级模块。可以参阅图5所示。

升级节点可以组合上述免密登录模块、版本检测模块和版本升级模块,并打包成镜像文件,从而可以得到针对目标插件的目标升级镜像。并将上述目标升级镜像,推送至预设的镜像仓库进行保存。其中,上述预设的镜像仓库具体可以理解为支持集群中的节点服务器访问,用于存储镜像文件的数据库。

接着,升级节点可以在集群中所包含的多个节点服务器(可以记为处理节点)进行检测,确定出部署有目标插件的节点服务器作为目标节点;并基于集群的调度机制向上述目标节点发起关于升级目标插件的调度请求。

目标节点可以响应基于目标集群的调度请求,从预设的镜像仓库中拉取得到目标升级镜像。目标节点可以在本地容器内运行上述目标升级镜像;并根据预设的处理规则,通过在容器内组合利用镜像中的免密登录模块、版本检测模块和版本升级模块,对目标节点上部署的目标插件进行升级处理。

具体进行升级处理时,目标节点可以先根据预设的处理规则,利用免密登录模块,以不需要使用用户账户和用户密码的预设的免密登录模式,实现对目标节点的免密登录。这样可以有效地避免在升级处理过程中泄露用户账户和用户密码,保护数据安全。

在完成免密登录后,目标节点可以根据预设的处理规则,利用版本检测模块,通过检测,判断当前是否满足预设的资源条件、判断当前是否满足预设的版本条件、判断当前是否满足预设的容器状态条件,来确定当前状态是否满足关于目标插件的预设升级要求。

在确定当前状态满足关于目标插件的预设升级要求的情况下,目标节点可以根据预设的处理规则,利用所述版本升级模块,基于更新版本的介质文件,对目标节点上部署的目标插件进行升级处理。

从而可以以相对较低的实现成本,高效、便捷地对目标节点上部署的目标插件进行相应的升级处理。从而可以有效地提高集群插件的升级效率,降低对集群插件的维护成本。

参阅图6所示,本说明书实施例提供了一种集群插件的升级方法。其中,该方法具体应用于部署有目标插件的目标节点一侧。具体实施时,该方法可以包括以下内容。

S601:响应基于目标集群的调度请求,从预设的镜像仓库中拉取目标升级镜像;其中,所述目标升级镜像至少包括:免密登录模块、版本检测模块和版本升级模块;所述版本升级模块至少携带有关于目标插件的更新版本的介质文件和升级脚本。

S602:在本地容器内运行所述目标升级镜像;并根据预设的处理规则,通过组合利用所述免密登录模块、所述版本检测模块和所述版本升级模块,对目标节点上部署的目标插件进行升级处理。

通过上述实施例,部署有待升级的目标插件的目标节点可以响应于基于目标集群的调度请求,高效地从预设的镜像仓库中主动拉取得到同时携带有更新版本的介质文件的目标升级镜像,而不需要像现有方法那样由负责升级的升级节点将更新版本的介质文件分别发送给集群中的各个目标节点,从而可以减少升级过程所涉及到的数据传输量;进一步,目标节点在拉取得到上述目标升级镜像后,可以在本地容器通过运行该目标升级镜像,通过组合使用镜像中的免密登录模块、版本检测模块和版本升级模块,自动、高效地实现对目标节点上部署的目标插件的升级处理,从而可以提高升级效率,有效地降低了针对集群插件的维护成本。

在一些实施例中,上述目标集群具体可以包括:支持容器化操作的集群。上述目标集群中具体可以包括多个相对独立的处理节点(例如,节点服务器)。并且,每个处理节点又可以支持相应容器化操作。其中,上述容器化操作具体可以是指基于Docker的容器化操作。

具体的,上述目标集群可以是Kubernetes集群(也可以称为K8s集群)。其中,上述Kubernetes是指一种容器编排引擎,支持自动化部署、大规模可伸缩、应用容器化管理。基于Kubernetes,可以创建并管理多个容器,每个容器里面又可以运行一个具体的应用实例。

通过上述实施例,可以将本说明书所提供的集群插件的升级方法具体应用到支持容器化操作的集群中,从而可以有效地利用上述集群的特性、优势(包括:支持容器化操作、集群的调度机制等),以便能够较为高效地实现对上述集群中插件的升级处理。

在一些实施例中,上述目标插件具体可以是指部署于目标集群中的一个或多个处理节点上,待升级的插件。上述目标节点具体可以理解为目标集群中部署有待升级的目标插件的处理节点(例如,部署有待升级目标插件的节点服务器等)。上述目标节点具体可以是目标集群中的一个或多个处理节点,也可以是目标集群中所有的处理节点。

具体的,上述目标插件可以包括通过二进制方式部署的插件。

通常在K8s集群等支持容器化操作的集群中,许多插件都是采用二进制方式进行部署的,且上述插件在部署好后往往还需要进行诸如参数配置、升级更新、删除卸载等维护管理操作。

现有方法往往会使用维工具,例如Ansible,对插件进行升级更新等维护管理。具体的,升级节点(或称管理节点)需要先通过SSH协议连接到需要升级插件的节点,并按序依次执行以下步骤:按照ansible脚本格式生成插件升级任务作业;在升级节点上安装ansible服务端;指定需要执行升级操作的主机列表;为升级节点配置列表中所有宿主机(目标节点)的免密登录;在升级节点执行ansible脚本;在升级节点查看ansible脚本运行结果及日志。

但上述方法在具体实施时,会存在以下问题:首先,基于上述方法,所需要使用到的主机列表的整理耗时费力,不利于大规模集群的维护,尤其当有多个大规模集群的插件需要升级时,主机列表的整理势必会占用掉大量的处理资源和处理时间,影响整体的升级效率。其次,基于上述方法,在升级过程中,需要升级节点获取并利用用户账户和用户密码来配置宿主机的免密登录,这样容易泄露与该宿主机关联的用户账户和用户密码等隐私信息;此外,上述免密登录方式实施较为复杂、繁琐,实施成本相对较高。最后,基于上述方法,所使用的ansible脚本的执行速度会受制于SSH连接速度,导致脚本执行效率低;并且,还需要升级节点另外分别向各个宿主机发送更新版本的介质文件,增加了数据传输量,导致升级效率较低,无法满足实际的业务需求。

正是针对现有方法具体实施时所存在的上述问题,本说明书提供一种引入容器化操作的针对集群插件升级的升级方法。

基于该方法,在升级节点一侧,升级节点可以根据预设的构建规则,预先构建、配置好至少包含有免密登录模块、版本检测模块和版本升级模块,并且同时携带有关于目标插件的更新版本的介质文件和升级脚本的目标升级镜像。

进一步,升级节点在准备好上述目标升级镜像后,不是直接将上述目标升级镜像推送各个目标节点,而是将目标升级镜像先推送至预设的镜像仓库中进行保存。再利用集群的调度机制,通过发起调度请求,以使得目标节点响应调度请求,采用并行的方式,分别主动从预设的镜像仓库中拉取获得相应的目标升级镜像。并且,由于目标升级镜像中已经携带有更新版本的介质文件,因此,升级节点也不需要像现有方法那样另外地逐一分发更新版本的介质文件,从而可以降低数据传输量。

在目标节点一侧,目标节点在响应调度请求,高效地从预设的镜像仓库中拉取得到目标升级镜像后,可以在本地容器内运行该目标升级镜像;并根据预设的处理规则,组合利用镜像中已经准备好的免密登录模块、版本检测模块,以及版本升级模块,先采用不需要使用用户账户和用户密码的模式完成免密登录;在完成免密登录后,并且检测确定当前状态满足关于目标插件的预设升级要求的情况下,自动对目标插件进行相应的升级处理。从而可以有效地解决现有方法所存在的上述问题。

在一些实施例中,上述更新版本的介质文件具体可以包括以下所列举的数据中的一种或多种:与更新版本的目标插件相关的程序代码、脚本、资源文件等。

在一些实施例中,上述根据预设的处理规则,通过组合利用所述免密登录模块、所述版本检测模块和所述版本升级模块,对目标节点上部署的目标插件进行升级处理,具体实施时,可以包括以下内容:

S1:根据预设的处理规则,利用所述免密登录模块,以预设的免密登录模式,实现对目标节点的免密登录;其中,所述预设的免密登录模式不需要使用目标节点的用户账户和用户密码;

S2:根据预设的处理规则,利用所述版本检测模块,确定当前状态是否满足关于目标插件的预设升级要求;

S3:在确定当前状态满足关于目标插件的预设升级要求的情况下,根据预设的处理规则,利用所述版本升级模块,基于更新版本的介质文件,对目标节点上部署的目标插件进行升级处理。

通过上述实施例,目标节点可以在本地容器内运行所获取得到的目标升级镜像,并具体通过组合利用镜像中的免密登录模块、版本检测模块,以及版本升级模块,来高效、安全地实现对目标插件的升级处理。

在一些实施例中,上述根据预设的处理规则,利用所述免密登录模块,以预设的免密登录模式,实现对目标节点的免密登录,具体实施时,可以包括以下内容:

S1:根据预设的处理规则,将目标节点的目录挂载到容器内;

S2:利用所述免密登录模块生成SSH秘钥;其中,所述SSH秘钥包括SSH公钥和SSH私钥;

S3:基于所挂载的目标节点的目录,将所述SSH公钥写入到目标节点,以实现对目标节点的免密登录。

通过上述实施例,可以利用镜像中的免密登录模块,通过采用完全不同的、不需要使用用户账户和用户密码的预设的免密登录模式,先生成SSH秘钥,并将其中的SSH公钥基于所挂载的目标节点的目录写入到目标节点中,以实现对目标节点宿主机的免密登录。从而可以有效地避免升级过程中所使用的用户账户和用户密码等隐私数据遭到泄露,保护目标节点侧的数据安全。

在一些实施例中,具体实施时,可以先利用免密登录模块中的存储挂载单元将目标节点的目录挂载到容器内;接着利用免密登录模块中的密钥生成单元生成包含有SSH公钥和SSH私钥的SSH秘钥;并利用免密登录模块中的公钥输出单元基于所挂载的目标节点的目录,将所述SSH公钥写入到目标节点。

在一些实施例中,具体的,可以利用免密登录模块,根据SSH协议的免密登录条件,基于所挂载的目标节点的目录,将SSH公钥写入到目标节点的用户的authorize_key文件中,以实现对目标节点的免密登录。

在一些实施例中,上述根据预设的处理规则,利用所述版本检测模块,确定当前状态是否满足关于目标插件的预设升级要求,具体实施时,可以包括以下内容:

S1:根据预设的处理规则,利用所述版本检测模块分别采集当前目标节点的资源参数、当前目标插件的版本参数、当前容器的状态参数;

S2:根据所述当前目标节点的资源参数,确定当前是否满足预设的资源条件;根据所述目标插件的版本参数,确定当前是否满足预设的版本条件;根据所述当前容器的状态参数,确定当前是否满足预设的容器状态条件;

S3:在确定当前状态满足预设的资源条件、预设的版本条件、预设的容器状态条件的情况下,确定当前状态满足关于目标插件的预设升级要求。

通过上述实施例,在完成免密登录后,在进行目标插件升级前,可以先利用镜像中的版本检测模块进行状态检测,以准确地判断当前状态是否满足目标插件的预设升级要求。在确定当前状态满足目标插件的预设升级要求的情况下,才会触发利用镜像中的版本升级模块进行后续的目标插件的版本升级处理,这样可以有效地减少后续进行版本升级时由于目标节点、目标插件,或容器等状态因素所导致的升级失败,提高了后续升级处理的成功率。

在一些实施例中,具体实施时,可以利用版本检测模块中的宿主机状态检测单元采集目标节点的诸如CPU、内存、I/O参数等作为用于表征目标节点当前状态情况的当前目标节点的资源参数。利用版本检测模块中的插件状态检测单元采集当前已部署的目标插件(旧版本插件)的诸如版本号、版本运行参数、版本间的衔接关系等作为用于表征当前目标插件状态情况的当前目标插件的版本参数。利用版本检测模块中的容器状态检测单元采集当前目标节点的容器内所运行的其他应用实例的标识信息,以及其他应用实例的运行于目标插件的关联性数据等作为用于表征当前容器状态的当前容器的状态参数。

进一步,利用上述版本检测模块只有在根据所述当前目标节点的资源参数、所述目标插件的版本参数、所述当前容器的状态参数,同时确定当前满足预设的资源条件、当前满足预设的版本条件、当前满足预设的容器状态条件的情况下,才会最终确定当前满足目标插件的预设要求。从而可以有效地避免在后续升级过程出现升级失败的情况。

在一些实施例中,在确定当前状态不满足关于目标插件的预设升级要求的情况下,所述方法具体实施时,还可以包括以下内容:以当前时间点开始计时,在确定累计时长达到预设的时间间隔的情况下,根据预设的处理规则,利用所述版本检测模块,确定是否满足关于目标插件的预设升级要求。

通过上述实施例,在确定当前状态不满足预设升级要求的情况下,为了保证后续升级过程的成功率,避免出现升级失败,可以暂时停止后续的升级处理;并以当前时间点开始计时,在累计时长达到预设的时间间隔(例如,10秒等)时,重新利用上述版本检测模块重复上述检测过程,以确定此时的状态是否满足预设升级要求,如果满足,则可以触发进行后续的升级处理。

在一些实施例中,上述根据预设的处理规则,利用所述版本升级模块,对目标节点上部署的目标插件进行升级处理,具体实施时,可以包括以下内容:根据预设的处理规则,利用所述版本升级模块执行升级脚本,停止目标节点当前关于目标插件的进程;利用更新版本的介质文件替换当前使用的目标插件,并重新启动关于目标插件的进程。

通过上述实施例,可以利用镜像中的版本升级模块,通过执行所携带的升级脚本,利用所携带的更新版本的介质文件,自动、高效地完成针对目标节点上的目标插件的升级处理。

在一些实施例中,所述目标插件具体可以包括通过二进制方式部署的插件。所述目标插件具体可以理解为部署于集群中的处理节点上待升级的插件。

由上可见,基于本说明书实施例提供的集群插件的升级方法,负责集群插件升级的升级节点可以根据预设的构建规则,构建出针对待升级的目标插件的目标升级镜像;其中,该目标升级镜像至少包括:免密登录模块、版本检测模块和版本升级模块;上述版本升级模块至少携带有关于目标插件的更新版本的介质文件和升级脚本;升级节点可以确定出目标集群中的目标节点,并基于目标集群的调度机制,向上述目标节点发起调度请求。相应的,目标节点可以响应基于目标集群的调度请求,分别从预设的镜像仓库中拉取相应的目标升级镜像;目标节点可以分别在本地容器内运行该目标升级镜像,并根据预设的处理规则,通过利用目标升级镜像中预先准备好的免密登录模块、版本检测模块和版本升级模块,高效、便捷地对目标节点上部署的目标插件进行相应的升级处理。从而可以有效地提高集群插件的升级效率,降低对集群插件的维护成本。并且,基于上述集群插件的升级方法,不需要再获取和使用目标节点的用户账户和用户密码,从而可以有效地避免用户账户和用户密码等信息在升级插件时遭到泄露,保护目标节点的数据安全。此外,通过上述方式将用于更新升级的关于目标插件的更新版本的介质文件也一同保存在目标升级镜像中,目标节点可以通过从预设的镜像仓库中拉取目标升级镜像直接获取更新版本的介质文件,不需要像现有方法那样单独通过传输协议,另外向处理节点传输更新版本的介质文件,从而可以降低数据传输量,进一步提高升级效率。

参阅图7所示,本说明书实施例还提供了一种集群插件的升级方法。其中,该方法具体应用于负责集群插件升级的升级节点一侧。具体实施时,该方法可以包括以下内容。

S701:接收并响应关于目标插件的升级请求,获取目标插件的更新版本的介质文件;

S702:根据预设的构建规则,构建针对目标插件的目标升级镜像;并将所述目标升级镜像,推送至预设的镜像仓库;其中,所述目标升级镜像至少包括:免密登录模块、版本检测模块和版本升级模块;所述版本升级模块至少携带有关于目标插件的更新版本的介质文件和升级脚本;

S703:确定出目标集群中当前部署有目标插件的处理节点作为目标节点;并基于目标集群的调度机制,向所述目标节点发起调度请求。

在一些实施例中,上述调度请求具体可以携带有用于指示目标升级镜像的标识信息。相应的,目标节点可以根据调度请求中所携带的标识信息,准确地从预设的镜像仓库中拉取得到对应的目标升级镜像。

在一些实施例中,所述升级节点具体可以包括目标集群中的处理节点,或目标集群外的处理节点。

具体的实施时,针对不同的应用场景和处理需求,发起并负责集群插件升级的可以是目标集群内的某一个处理节点,例如,目标集群中的任意一个节点服务器;也可以是目标集群以外的某一个处理节点,例如,位于目标集群之外,负责目标插件的维护管理的管理服务器等。对于上述多种不同情况,本说明书所提供的集群插件的升级方法都能够较好地适用。

由上可见,本说明书实施例提供的集群插件的升级方法,能够高效、便捷地对目标节点上部署的目标插件进行相应的升级处理。从而可以有效地提高集群插件的升级效率,降低对集群插件的维护成本。并且,基于上述集群插件的升级方法,不需要再获取和使用目标节点的用户账户和用户密码,从而可以有效地避免用户账户和用户密码等信息在升级插件时遭到泄露,保护目标节点的数据安全。

本说明书实施例还提供了一种服务器,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器具体实施时可以根据指令执行以下步骤:响应基于目标集群的调度请求,从预设的镜像仓库中拉取目标升级镜像;其中,所述目标升级镜像至少包括:免密登录模块、版本检测模块和版本升级模块;所述版本升级模块至少携带有关于目标插件的更新版本的介质文件和升级脚本;在本地容器内运行所述目标升级镜像;并根据预设的处理规则,通过组合利用所述免密登录模块、所述版本检测模块和所述版本升级模块,对目标节点上部署的目标插件进行升级处理。

为了能够更加准确地完成上述指令,参阅图8所示,本说明书实施例还提供了另一种具体的服务器,其中,所述服务器包括网络通信端口801、处理器802以及存储器803,上述结构通过内部线缆相连,以便各个结构可以进行具体的数据交互。

其中,所述网络通信端口801,具体可以用于接收基于目标集群的调度请求。

所述处理器802,具体可以用于响应基于目标集群的调度请求,从预设的镜像仓库中拉取目标升级镜像;其中,所述目标升级镜像至少包括:免密登录模块、版本检测模块和版本升级模块;所述版本升级模块至少携带有关于目标插件的更新版本的介质文件和升级脚本;在本地容器内运行所述目标升级镜像;并根据预设的处理规则,通过组合利用所述免密登录模块、所述版本检测模块和所述版本升级模块,对目标节点上部署的目标插件进行升级处理。

所述存储器803,具体可以用于存储相应的指令程序。

在本实施例中,所述网络通信端口801可以是与不同的通信协议进行绑定,从而可以发送或接收不同数据的虚拟端口。例如,所述网络通信端口可以是负责进行web数据通信的端口,也可以是负责进行FTP数据通信的端口,还可以是负责进行邮件数据通信的端口。此外,所述网络通信端口还可以是实体的通信接口或者通信芯片。例如,其可以为无线移动网络通信芯片,如GSM、CDMA等;其还可以为Wifi芯片;其还可以为蓝牙芯片。

在本实施例中,所述处理器802可以按任何适当的方式实现。例如,处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。本说明书并不作限定。

在本实施例中,所述存储器803可以包括多个层次,在数字系统中,只要能保存二进制数据的都可以是存储器;在集成电路中,一个没有实物形式的具有存储功能的电路也叫存储器,如RAM、FIFO等;在系统中,具有实物形式的存储设备也叫存储器,如内存条、TF卡等。

本说明书实施例还提供一种服务器,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器具体实施时可以根据指令执行以下步骤:接收并响应关于目标插件的升级请求,获取目标插件的更新版本的介质文件;根据预设的构建规则,构建针对目标插件的目标升级镜像;并将所述目标升级镜像,推送至预设的镜像仓库;其中,所述目标升级镜像至少包括:免密登录模块、版本检测模块和版本升级模块;所述版本升级模块至少携带有关于目标插件的更新版本的介质文件和升级脚本;确定出目标集群中当前部署有目标插件的处理节点作为目标节点;并基于目标集群的调度机制,向所述目标节点发起调度请求。

本说明书实施例还提供了一种基于上述集群插件的升级方法的计算机存储介质,所述计算机存储介质存储有计算机程序指令,在所述计算机程序指令被执行时实现:响应基于目标集群的调度请求,从预设的镜像仓库中拉取目标升级镜像;其中,所述目标升级镜像至少包括:免密登录模块、版本检测模块和版本升级模块;所述版本升级模块至少携带有关于目标插件的更新版本的介质文件和升级脚本;在本地容器内运行所述目标升级镜像;并根据预设的处理规则,通过组合利用所述免密登录模块、所述版本检测模块和所述版本升级模块,对目标节点上部署的目标插件进行升级处理。

在本实施例中,上述存储介质包括但不限于随机存取存储器(Random AccessMemory,RAM)、只读存储器(Read-Only Memory,ROM)、缓存(Cache)、硬盘(Hard DiskDrive,HDD)或者存储卡(Memory Card)。所述存储器可以用于存储计算机程序指令。网络通信单元可以是依照通信协议规定的标准设置的,用于进行网络连接通信的接口。

在本实施例中,该计算机存储介质存储的程序指令具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。

参阅图9所示,在软件层面上,本说明书实施例还提供了一种集群插件的升级装置,该装置具体可以包括以下的结构模块:

拉取模块901,具体可以用于响应目标集群的调度请求,从预设的镜像仓库中拉取目标升级镜像;其中,所述目标升级镜像至少包括:免密登录模块、版本检测模块和版本升级模块;所述版本升级模块至少携带有关于目标插件的更新版本的介质文件和升级脚本;

升级模块902,具体可以用于在本地容器内运行所述目标升级镜像;并根据预设的处理规则,通过组合利用所述免密登录模块、所述版本检测模块和所述版本升级模块,对目标节点上部署的目标插件进行升级处理。

需要说明的是,上述实施例阐明的单元、装置或模块等,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

由上可见,基于本说明书实施例提供的集群插件的升级装置,能够高效、便捷地对目标节点上部署的目标插件进行相应的升级处理,有效地提高集群插件的升级效率,降低对集群插件的维护成本。

本说明书还提供了另一种集群插件的升级装置,具体可以包括以下结构模块:

获取模块,具体可以用于接收并响应关于目标插件的升级请求,获取目标插件的更新版本的介质文件;

构建模块,具体可以用于根据预设的构建规则,构建针对目标插件的目标升级镜像;并将所述目标升级镜像,推送至预设的镜像仓库;其中,所述目标升级镜像至少包括:免密登录模块、版本检测模块和版本升级模块;所述版本升级模块至少携带有关于目标插件的更新版本的介质文件和升级脚本;

处理模块,具体可以用于确定出目标集群中当前部署有目标插件的处理节点作为目标节点;并基于目标集群的调度机制,向所述目标节点发起调度请求。

在一个具体的场景示例中,可以应用本说明书所提供的集群插件的升级方法来实现基于容器化的集群插件升级。具体实施过程可以参阅以下内容。

在本场景示例中,具体实施时,可以通过构建包含免密登录模块、版本检测模块和版本升级模块在内的升级镜像(例如,目标升级镜像);再利用K8s集群的调度能力实现集群内全量宿主机(例如,部署有待升级的目标插件的目标节点)或指定宿主机插件的升级。具体实施过程可以参阅图10所示,包括以下步骤:

步骤1:制作升级镜像。该升级镜像包括针对宿主机的免密登录模块、版本检测模块、版本升级模块三部分内容。其中,上述免密登录模块具体用于通过挂载共享目录的方式实现容器内免密登录宿主机,为后续插件升级创造条件。上述版本检测模块具体用于检测当前宿主机的状态,比如当前插件版本是否符合升级条件,升级是否会影响正在运行的容器,根据当前宿主机的状态,并综合判断是否可以执行升级动作。上述版本升级模块携带有新版本介质文件(例如,目标插件的更新版本的介质文件)和升级脚本,其中,升级脚本用于提供插件升级所要进行的操作指令,一般可以包括:停止旧插件进程、替换新介质文件、启动新插件进程等操作。

步骤2:镜像推送。具体可以将步骤1)中制作完成的升级镜像推送至镜像仓库,以供k8s调用。

步骤3:镜像调度。具体可以利用K8s的调度能力实现全量宿主机/指定宿主机获取得到升级镜像。

步骤4:容器运行。镜像调度到宿主机后,在宿主机本地容器内,可以按照免密登录模块、版本检测模块、版本升级模块的顺序执行升级动作,完成插件升级。

在本场景示例中,参阅图10所示,整个升级过程可以包括:镜像制作、镜像推送、镜像调度和容器运行四部分。其中,镜像制作用于将插件升级所需的介质、环境检测脚本、版本升级脚本等内容打包制作为镜像;镜像推送用于将制作完成的镜像推送至镜像仓库;镜像调度用于将版本升级镜像调度至需要升级的宿主机节点;容器运行用于在需要升级的宿主机节点上运行该升级镜像。

具体镜像制作时,可以参阅图2所示,主要内容包括:免密登录模块、版本检测模块和版本升级模块。其中,免密登录模块通过在容器内挂载宿主机目录,将容器内用户的SSH公钥写入宿主机,实现免密登录;版本检测模块通过版本检测脚本对宿主机节点的环境进行检测,包括插件版本、插件运行状态、插件配置情况、节点上的容器运行状态等,最终得出该宿主机节点是否可以执行升级动作(例如,确定当前是否满足预设升级要求);版本升级模块通过版本升级脚本将镜像中新版本的插件介质替换宿主机上的老版本介质,并完成配置文件升级和进程重启的动作。

参阅图3所示,免密登录模块具体可以包括:存储挂载单元、密钥生成单元、公钥输出单元。其中,存储挂载单元用于将宿主机目录挂载到容器内;密钥生成单元用于生成容器内系统用户的SSH公钥和私钥;公钥输出单元用于将容器内系统用户的公钥输出到宿主机,以实现免密登录。

参阅图4所示,版本检测模块具体可以包括:宿主机状态检测单元、插件状态检测单元、容器状态检测单元。其中,宿主机状态检测单元具体可以用于检测宿主机的CPU、内存等资源,以确定是否符合插件升级的硬件条件;插件状态检测单元,用于检测宿主机上的插件状态,以确定是否符合插件升级的原始版本;容器状态检测单元,用于检测宿主机中正在运行的业务容器状态,以确定业务容器运行是否会受到本次插件升级的影响,若运行的业务容器中有与本次升级插件相关联,则不能执行升级动作。

参阅图5所示,版本升级模块具体可以包括:版本介质单元、升级脚本单元。其中,版本介质单元进一步可以包括本次升级需要的新版本插件介质;升级脚本单元进一步可以包括升级的动作脚本。一般升级时包括:旧版本插件停机、新版本插件文件替换及配置和新版本插件启动等步骤。

参阅图11所示,利用上述结构模块具体进行基于容器化的集群插件升级时,在容器内的数据处理流程具体可以包括以下步骤:

步骤S01:将宿主机目录挂载到容器内。

步骤S02:生成容器内系统用户的SSH密钥(包括SSH公钥和SSH私钥)。

步骤S03:将容器内系统用户的SSH公钥输出到宿主机文件(例如,所挂载的目录)中。

步骤S04:容器内实现免密登录到宿主机。

步骤S05:开始执行版本检测任务,主要包括宿主机状态、插件版本状态和容器运行状态。

步骤S06:根据步骤S05检测的状态整合检测结果。

步骤S07:根据检测结果判断是否可升级。

步骤S08:开始执行版本升级任务。

步骤S09:版本升级成功。

步骤S10:不具备版本升级条件,升级失败。

步骤S11:升级任务结束。

通过上述场景示例,应用本说明书所提供的方法,可以有效地解决集群中插件升级时采用传统运维工具时存在的运维成本高,容易泄露用户账户和用户密码,以及SSH协议传输速度限制等问题,并且具有如下优点:能够利用集群对宿主机的管理能力,选择插件升级的被执行机器,大大降低了运维成本;使得升级环节避免接触和使用宿主机的用户名/密码,提高了插件升级过程的安全性,避免了密码泄露的风险;由于所使用的插件介质是通过镜像下发,减少了网络传输过程的时间损耗,加快升级速度。

虽然本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。

本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、类等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

通过以上的实施例的描述可知,本领域的技术人员可以清楚地了解到本说明书可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书的技术方案本质上可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,移动终端,服务器,或者网络设备等)执行本说明书各个实施例或者实施例的某些部分所述的方法。

本说明书中的各个实施例采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。本说明书可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。

虽然通过实施例描绘了本说明书,本领域普通技术人员知道,本说明书有许多变形和变化而不脱离本说明书的精神,希望所附的权利要求包括这些变形和变化而不脱离本说明书的精神。

相关技术
  • 集群插件的升级方法、装置和服务器
  • 服务器集群的升级方法和节点服务器
技术分类

06120112811356