云原生系统的快速部署方法、装置、电子设备和存储介质转让专利

申请号 : CN202110293057.5

文献号 : CN113127150B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 侯诗军

申请人 : 同盾控股有限公司同盾科技有限公司

摘要 :

本申请涉及云原生系统的快速部署方法、装置、电子设备和存储介质,属于云计算技术领域,所述方法包括:接收一键部署指令,该一键部署指令携带目标服务器的信息;根据预先在Playbook流程化部署工具中编排的流程,自动向所述目标服务器发送部署所需的软件包,并从所述软件包中查找基础依赖软件以进行安装;从所述软件包中查找软件,自动部署Docker、云原生网络和Kubernetes的依赖环境,根据网络场景自动通过Etcd数据库将容器的IP网段配置信息关联到网络插件上,并自动部署应用程序。通过本申请实施例,能够一键式自动部署Kubernetes和容器、自动打通网络、自动部署要运转的应用程序,实现了一键式全流程快速部署云原生系统,极大地提高了部署效率和降低了人工成本。

权利要求 :

1.一种云原生系统的快速部署方法,其特征在于,包括:

接收一键部署指令,所述一键部署指令携带目标服务器的信息;

根据预先在Playbook流程化部署工具中编排的流程,自动向所述目标服务器发送部署所需的软件包,并从所述软件包中查找基础依赖软件以进行安装;

从所述软件包中查找软件,自动部署Docker、云原生网络和Kubernetes的依赖环境,根据网络场景自动通过Etcd数据库将容器的IP网段配置信息关联到网络插件上,并自动部署应用程序。

2.根据权利要求1所述的方法,其特征在于,自动部署Kubernetes的依赖环境包括:通过Master部署模块从所述软件包中查找Kubernetes所需的Api‑server、Controller‑manager和Scheduler主控软件包,并进行安装;

通过Node部署模块从所述软件包中查找Kubernetes所需的Kubelet和kube‑proxy被控组件,并进行安装。

3.根据权利要求2所述的方法,其特征在于,在所述网络场景为VLAN网络或直接路由网络的情况下,根据网络场景自动通过Etcd数据库将容器的IP网段配置信息关联到网络插件上包括:在接收一键部署指令后,通过所述Controller‑manager接收所述一键部署指令中的IP网段配置信息;

通过所述Api‑server将所述IP网段配置信息写入所述Etcd数据库中;

通过网络插件模块从所述Etcd数据库中读取所述IP网段配置信息,将IP网段切分为若干个小网段,并将所述小网段应用于所述Node部署模块上。

4.根据权利要求2所述的方法,其特征在于,在所述网络场景为VxLAN网络的情况下,根据网络场景自动通过Etcd数据库将容器的IP网段配置信息关联到网络插件上包括:在接收一键部署指令后,在所述Etcd数据库中设置IP网段配置信息;

通过网络插件模块从所述Etcd数据库中读取所述IP网段配置信息,将IP网段切分为若干个小网段,并用所述小网段给每个所述Node部署模块添加VxLAN隧道连接。

5.根据权利要求2所述的方法,其特征在于,在所述网络场景为BGP网络的情况下,根据网络场景自动通过Etcd数据库将容器的IP网段配置信息关联到网络插件上包括:在接收一键部署指令后,通过网络插件模块获取所述一键部署指令中的IP网段配置信息,将IP网段切分为若干个小网段,将所述小网段应用于所述Node部署模块上并写入所述Etcd数据库中;

通过所述网络插件模块将所述小网段以BGP路由协议的方式发送给北向的上联BGP网络设备。

6.根据权利要求1所述的方法,其特征在于,自动部署应用程序包括:通过应用部署模块从所述软件包中查找Kubernetes所需的守护进程组件、应用数据库和应用程序,并安装所述守护进程组件,启动所述应用数据库和所述应用程序。

7.一种云原生系统的快速部署装置,其特征在于,包括:

接收单元,用于接收一键部署指令,所述一键部署指令携带目标服务器的信息;

部署单元,用于根据预先在Playbook流程化部署工具中编排的流程,自动向所述目标服务器发送部署所需的软件包,并从所述软件包中查找基础依赖软件以进行安装;从所述软件包中查找软件,自动部署Docker、云原生网络和Kubernetes的依赖环境,根据网络场景自动通过Etcd数据库将容器的IP网段配置信息关联到网络插件上,并自动部署应用程序。

8.根据权利要求7所述的装置,其特征在于,所述部署单元包括:

Master部署模块,用于从所述软件包中查找Kubernetes所需的Api‑server、Controller‑manager和Scheduler主控软件包,并进行安装;

Node部署模块,用于从所述软件包中查找Kubernetes所需的Kubelet和kube‑proxy被控组件,并进行安装。

9.一种电子设备,包括处理器和存储有计算机程序的存储介质,其特征在于,所述计算机程序被所述处理器执行时实现如权利要求1至6中任一项所述的方法。

10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6中任一项所述的方法。

说明书 :

云原生系统的快速部署方法、装置、电子设备和存储介质

技术领域

[0001] 本申请涉及云计算技术领域,特别是涉及云原生系统的快速部署方法、装置、电子设备和存储介质。

背景技术

[0002] 目前,虽然云计算技术快速发展,但是许多中小企业没有大量的云原生研发人员,然而他们又需要借助于云原生技术来提高应用程序运行的效率和降低运行成本。传统的做法是通过手工部署Kubernetes、容器、网络等各种依赖的基础系统环境,然后再在基础系统环境之上部署应用程序,这样效率低下,耗费人力成本也多。
[0003] 因此,如何提高云原生系统的部署效率同时降低人工成本,成为本领域技术人员亟待解决的问题。

发明内容

[0004] 本申请实施例提供了一种云原生系统的快速部署方法、装置、电子设备和存储介质,以至少解决相关技术中如何提高云原生系统的部署效率同时降低人工成本的问题。
[0005] 第一方面,本申请实施例提供了一种云原生系统的快速部署方法,包括:接收一键部署指令,所述一键部署指令携带目标服务器的信息;根据预先在Playbook流程化部署工具中编排的流程,自动向所述目标服务器发送部署所需的软件包,并从所述软件包中查找基础依赖软件以进行安装;从所述软件包中查找软件,自动部署Docker、云原生网络和Kubernetes的依赖环境,根据网络场景自动通过Etcd数据库将容器的IP网段配置信息关联到网络插件上,并自动部署应用程序。
[0006] 在其中一些实施例中,自动部署Kubernetes的依赖环境包括:通过Master部署模块从所述软件包中查找Kubernetes所需的Api‑server、Controller‑manager和Scheduler主控软件包,并进行安装;通过Node部署模块从所述软件包中查找Kubernetes所需的Kubelet和kube‑proxy被控组件,并进行安装。
[0007] 在其中一些实施例中,在所述网络场景为VLAN网络或直接路由网络的情况下,根据网络场景自动通过Etcd数据库将容器的IP网段配置信息关联到网络插件上包括:在接收一键部署指令后,通过所述Controller‑manager接收所述一键部署指令中的IP网段配置信息;通过所述Api‑server将所述IP网段配置信息写入所述Etcd数据库中;通过网络插件模块从所述Etcd数据库中读取所述IP网段配置信息,将IP网段切分为若干个小网段,并将所述小网段应用于所述Node部署模块上。
[0008] 在其中一些实施例中,在所述网络场景为VxLAN网络的情况下,根据网络场景自动通过Etcd数据库将容器的IP网段配置信息关联到网络插件上包括:在接收一键部署指令后,在所述Etcd数据库中设置IP网段配置信息;通过网络插件模块从所述Etcd数据库中读取所述IP网段配置信息,将IP网段切分为若干个小网段,并用所述小网段给每个所述Node部署模块添加VxLAN隧道连接。
[0009] 在其中一些实施例中,在所述网络场景为BGP网络的情况下,根据网络场景自动通过Etcd数据库将容器的IP网段配置信息关联到网络插件上包括:在接收一键部署指令后,通过网络插件模块获取所述一键部署指令中的IP网段配置信息,将IP网段切分为若干个小网段,将所述小网段应用于所述Node部署模块上并写入所述Etcd数据库中;通过所述网络插件模块将所述小网段以BGP路由协议的方式发送给北向的上联BGP网络设备。
[0010] 在其中一些实施例中,自动部署应用程序包括:通过应用部署模块从所述软件包中查找Kubernetes所需的守护进程组件、应用数据库和应用程序,并安装所述守护进程组件,启动所述应用数据库和所述应用程序。
[0011] 第二方面,本申请实施例提供了一种云原生系统的快速部署装置,包括:接收单元和部署单元,接收单元用于接收一键部署指令,所述一键部署指令携带目标服务器的信息;根据预先在Playbook流程化部署工具中编排的流程,自动向所述目标服务器发送部署所需的软件包,并从所述软件包中查找基础依赖软件以进行安装;从所述软件包中查找软件,自动部署Docker、云原生网络和Kubernetes的依赖环境,根据网络场景自动通过Etcd数据库将容器的IP网段配置信息关联到网络插件上,并自动部署应用程序。
[0012] 在其中一些实施例中,上述装置的所述部署单元包括:Master部署模块和Node部署模块,其中:
[0013] Master部署模块用于从所述软件包中查找Kubernetes所需的Api‑server、Controller‑manager和Scheduler主控软件包,并进行安装;
[0014] Node部署模块用于从所述软件包中查找Kubernetes所需的Kubelet和kube‑proxy被控组件,并进行安装。
[0015] 第三方面,本申请实施例提供了一种电子设备,包括处理器和存储有计算机程序的存储介质,所述计算机程序被所述处理器执行时实现如上述任一项所述的方法。
[0016] 第四方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述的方法。
[0017] 相较于快速部署Kubernetes集群的方法,其部署交付的Kubernetes集群上并没有应用程序可以使用,而本申请实施例利用Playbook功能将Kubernetes部署任务、容器部署任务、网络配置任务和应用启动任务进行编排,从而一键式自动部署Kubernetes和容器、自动打通网络、自动部署要运转的应用程序,实现了一键式全流程快速部署云原生系统,极大地提高了部署云原生系统的效率和降低了人工成本。而且,本申请实施例中,通过各个模块实现了自动化网络通信和自动化处理依赖关系;实现了自动化根据不同的网络场景创建IP网段配置信息,并关联到网络插件上,从而将Kubernetes启动所需的网络底层就绪。相较于在已有Kubernetes集群的基础上部署应用程序的方法来说,如果没有现成的Kubernetes集群,就无法部署应用程序,因此在部署应用程序时,首先需要花费很大的工作量来部署Kubernetes集群和解决依赖关系的相关问题。而通过本申请实施例的云原生系统的快速部署方法,一键式自动部署Kubernetes和容器、自动打通网络、自动部署要运转的应用程序,实现了一键式全流程快速部署云原生系统,极大地提高了部署效率和降低了人工成本,还可以使得云原生产品的演示流程更加顺畅。

附图说明

[0018] 此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0019] 图1是根据本申请实施例的云原生系统的快速部署方法的流程图;
[0020] 图2是根据本申请实施例的任务流程图;
[0021] 图3是根据本申请实施例的云原生系统的快速部署装置的结构示意图;
[0022] 图4是根据本申请实施例的电子设备的结构框图。

具体实施方式

[0023] 为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0024] 显而易见地,下面描述中的附图仅仅是本申请的一些示例或实施例,对于本领域的普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图将本申请应用于其他类似情景。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。
[0025] 在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
[0026] 除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本申请所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
[0027] 本申请实施例所涉及的“云原生”,是基于分布部署和统一运管的云端服务,以容器、微服务、DevOps等技术为基础建立的一套云技术产品体系。云原生应用也就是面向“云”而设计的应用,在使用云原生技术后,开发者无需考虑底层的技术实现,可以充分发挥云平台的弹性和分布式优势,实现快速部署、按需伸缩、不停机交付等。
[0028] 为了提高部署效率,本申请的发明人考虑了两种方法:一种是快速部署Kubernetes集群的方法,另一种是在已有Kubernetes集群的基础上部署应用程序的方法,然而,这两种方法都有不足的地方:
[0029] (1)对于快速部署Kubernetes集群的方法来说,只能实现Kubernetes集群的快速部署交付,但是部署交付的Kubernetes集群上并没有实际业务可以使用。
[0030] (2)对于在已有Kubernetes集群的基础上部署应用程序的方法来说,虽然可以在已有的Kubernetes集群上部署应用程序,但这明显只是“空中楼阁”。因为,如果没有Kubernetes集群,就无法部署应用程序。实际上,在企业内部往往都只有几台服务器,并没有现成的Kubernetes集群,因此,需要很大的工作量来部署Kubernetes集群和解决依赖关系的相关问题。
[0031] 综上,通过上述两种方式提高的部署效率有限。
[0032] 为了极大化提高部署效率,本申请实施例提供一种云原生系统的快速部署方法,旨在实现一键快速部署整套系统,并自动运行应用程序,从而降低中小企业使用云原生技术的门槛,让人人都可以享用技术带来的红利。
[0033] 作为一种实施方式,本申请实施例的云原生系统的快速部署方法可以包括以下步骤:当接收到一键部署指令(该一键部署指令携带目标服务器的信息)之后,在目标服务器上按照预先编排的任务流程自动执行Kubernetes部署任务、容器部署任务、网络配置任务和应用启动任务,其中,各任务流程是通过Playbook流程化部署工具编排得到;当上述各任务流程执行完成,得到云原生系统。可选的,采用Playbook流程化部署工具,将Kubernetes、Etcd数据库和网络插件按照先后服务的依赖关系进行编排。
[0034] 作为一种实施方式,图1是根据本申请实施例的云原生系统的快速部署方法的流程图,如图1所示,本申请实施例的云原生系统的快速部署方法包括:
[0035] S100:接收一键部署指令,该一键部署指令携带目标服务器的信息;
[0036] S200:根据预先在Playbook流程化部署工具中编排的流程,自动向目标服务器发送部署所需的软件包,并从软件包中查找基础依赖软件以进行安装;
[0037] S300:从软件包中查找软件,自动部署Docker、云原生网络和Kubernetes的依赖环境,根据网络场景自动通过Etcd数据库将容器的IP网段配置信息关联到网络插件上,并自动部署应用程序。
[0038] Kubernetes是开源的一个容器编排引擎,支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效,Kubernetes提供了应用部署、规划、更新、维护的一种机制。
[0039] 容器是伴随着瘦客户端系统的发展而诞生的。在开发瘦客户端系统时,开发人员要花费大量的精力去关注线程安全、事务、网络、资源等等细节,从而降低了开发效率。由于这些对这些细节的解决方法一般是固定不变,或者只有参数改变的,所以从代码重用和设计模式的角度出发,开发人员将这些底层细节提取出来,做成平台,并提供一定的接口。这样,业务开发人员就不需要在关注与这些底层细节的实现,而专注于业务逻辑的实现。容器一般位于应用服务器之内,由应用服务器负责加载和维护。一个容器只能存在于一个应用服务器之内,一个应用服务器可以建立和维护多个容器。
[0040] Playbook是一种命令行执行方式的模式,其功能强大且灵活。简单来说,Playbook是一个非常简单的配置管理和多主机部署系统,不同于任何已经存在的模式,可作为一个适合部署复杂应用程序的基础。Playbook可以定制配置,可以按照指定的操作步骤有序执行,支持同步和异步方式。另外,Playbook是通过YAML格式来进行描述定义的。
[0041] 现有的技术难以对云原生集群里面微小的组件依赖关系进行如此精细化的排布与流程操作,本申请实施例通过Playbook将一个庞大的系统的若干细小零部件进行角色化,再给每个角色赋予“扮演的身份”,然后技术人员可以自定义的将这些流程串起来。
[0042] Etcd是一种可靠的分布式KV存储产品,由CoreOS公司开发,其底层使用Raft算法保证一致性,主要用于共享配置和服务发现。
[0043] 基于上述内容,在本申请实施例中利用Playbook功能将Kubernetes部署任务、容器部署任务、网络配置任务和应用启动任务进行编排,从而一键式自动部署Kubernetes和容器、自动打通网络、自动部署要运转的应用程序,实现了一键式全流程快速部署云原生系统,极大地提高了部署效率和降低了人工成本。
[0044] 为了进一步说明本申请实施例所带来的技术效果,此处例举一个场景:在给用户演示云原生应用的时候,如果客户没有现成的Kubernetes集群,那么需要部署Kubernetes、容器、网络等各种依赖的环境,然后才能继续演示,不仅效率低,而且整个演示的流程也不顺畅。但是,若采用本申请实施例的云原生系统的快速部署方法,能够一键快速部署整套系统环境,并自动运行应用程序,不仅在效率上有了极大的提高,还使得整个演示的流程更加顺畅。
[0045] 针对本申请实施例的技术方案,技术人员需要研究Kubernetes、Etcd数据库、容器和Playbook流程化部署工具等技术,然后设计架构和编排流程。具体的,采用Playbook流程化部署工具,将Kubernetes、Etcd数据库和网络插件按照先后服务的依赖关系进行编排。
[0046] 作为一个示例,自动向目标服务器发送部署所需的软件包,并从软件包中查找基础依赖软件以进行安装包括:通过文件分发模块向目标服务器发送部署所需的软件包;通过基础软件安装模块从软件包中查找基础依赖软件,并进行安装。
[0047] 作为一个示例,自动部署Docker包括:通过容器部署模块从软件包中查找容器运行时所需的驱动软件,并进行安装。
[0048] 作为一个示例,本申请实施例中通过Etcd存储模块从软件包中查找Etcd数据库所需的软件,并进行安装。
[0049] 作为一个示例,自动部署云原生网络包括:通过网络插件模块从软件包中查找云原生网络插件包,并进行安装。
[0050] 作为一个示例,自动部署Kubernetes的依赖环境包括:通过Master部署模块从软件包中查找Kubernetes所需的Api‑server、Controller‑manager和Scheduler主控软件包,并进行安装;通过Node部署模块从软件包中查找Kubernetes所需的Kubelet和kube‑proxy被控组件,并进行安装;
[0051] 作为一个示例,自动部署应用程序包括:通过应用部署模块从软件包中查找Kubernetes所需的守护进程组件、应用数据库和应用程序,并安装守护进程组件,启动应用数据库和应用程序。
[0052] 为了更清楚的说明本申请实施例,以下对上述任务流程(即接收到一键部署指令之后的流程)进行完整的阐述。例如,图2是根据本申请实施例的任务流程图,如图2所示,在接收到一键部署指令之后,自动执行以下流程:
[0053] S201:通过文件分发模块向目标服务器发送部署所需的软件包;
[0054] S202:通过基础软件安装模块从软件包中查找基础依赖软件,并进行安装;
[0055] S203:通过Etcd存储模块从软件包中查找Etcd数据库所需的软件,并进行安装;
[0056] S204:通过容器部署模块从软件包中查找容器运行时所需的驱动软件,并进行安装;
[0057] S205:通过网络插件模块从软件包中查找云原生网络插件包,并进行安装;
[0058] S206:通过Master部署模块从软件包中查找Kubernetes所需的Api‑server、Controller‑manager和Scheduler主控软件包,并进行安装;
[0059] S207:通过Node部署模块从软件包中查找Kubernetes所需的Kubelet和kube‑proxy被控组件,并进行安装;
[0060] S208:通过应用部署模块从软件包中查找Kubernetes所需的守护进程组件、应用数据库和应用程序,并安装守护进程组件,启动应用数据库和应用程序。
[0061] 基于以上内容,能够将Kubernetes、Etcd数据库和网络插件按照先后服务的依赖关系把流程串起来,从而实现在服务器上一键式全流程自动部署Kubernetes和容器、自动打通网络、自动部署要运转的应用程序,使得部署效率最大化,极大的降低了人工成本。
[0062] 需要说明的是,在上述流程中或者附图的流程图中示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0063] 本申请实施例还提供一种云原生系统的快速部署装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。本申请所使用的术语“模块”、“单元”等可以实现预定功能的软件和/或硬件的组合。尽管本申请实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
[0064] 作为一种实施方式,上述装置包括接收单元和部署单元,其中,接收单元用于接收一键部署指令,该一键部署指令携带目标服务器的信息;部署单元用于根据预先在Playbook流程化部署工具中编排的流程,自动向目标服务器发送部署所需的软件包,并从软件包中查找基础依赖软件以进行安装;从软件包中查找软件,自动部署Docker、云原生网络和Kubernetes的依赖环境,根据网络场景自动通过Etcd数据库将容器的IP网段配置信息关联到网络插件上,并自动部署应用程序。
[0065] 作为一个示例,图3是根据本申请实施例的云原生系统的快速部署装置的结构示意图,如图3所示,该装置包括文件分发模块、基础软件安装模块、Etcd存储模块、Master部署模块、容器部署模块、网络插件模块、Node部署模块和应用部署模块,下文对各模块的作用与关系进行描述:
[0066] 文件分发模块:在接收到操作人员输入的一键部署指令后,用于将部署所需的软件包分发到目标服务器上,以便于在后续的流程中相关模块来调取。
[0067] 基础软件安装模块:通过设置一些先决条件初始化准备工作,安装一些必备的基础依赖软件。
[0068] Etcd存储模块:用于部署云原生集群所需的底层分布式状态存储库(例如Etcd数据库),还可以用于在Etcd数据库中创建网络插件所需的IP网段配置信息。
[0069] Master部署模块:用于部署Kubernetes所需的Api‑server、Controller‑manager、Scheduler这三个主控组件。
[0070] 容器部署模块:用于部署容器底层运行时的驱动模块。
[0071] 网络插件模块:用于部署云原生网络插件,例如,从Etcd数据库中读取IP网段配置信息,然后根据该IP网段配置信息来部署云原生网络插件。
[0072] Node部署模块:用于部署Kubernetes所需的Kubelet、kube‑proxy这两个被控组件。
[0073] 应用部署模块:用于部署Kubernetes所需的守护进程组件,并依次按顺序启动应用数据库和应用程序。
[0074] 需要说明的是,上述各个模块可以是功能模块也可以是程序模块,既可以通过软件来实现,也可以通过硬件来实现。对于通过硬件来实现的模块而言,上述各个模块可以位于同一处理器中;或者上述各个模块还可以按照任意组合的形式分别位于不同的处理器中。
[0075] 在使用上述装置进行数据处理的前期,准备步骤和辅助步骤如下:
[0076] 首先,需要准备好各种集群角色的配置信息,确定哪些主机用于作为Master,哪些主机用来作为Node;
[0077] 其次,准备好Kubernetes集群所需的IP网段配置信息,例如容器IP网段信息、Service服务IP网段信息、Master集群虚拟机IP地址等;
[0078] 最后,准备好待执行的一键部署指令,以便于上述装置的接收。
[0079] 通过上述的准备步骤和辅助步骤,可以提前梳理好配置对应关系,这样装置才能精准的识别用户的需求,从而得到最终想要的成品。
[0080] 请继续参阅图3所示,作为一个示例,下文对上述装置的实施流程进行说明:
[0081] 第一步:操作人员将一键部署指令输入装置后,文件分发模块开始向目标服务器分发软件包。
[0082] 第二步:基础软件安装模块收到文件分发模块发过来的软件包后,开始从软件包中查找所需要的底层初始化基础依赖软件,并执行安装操作。
[0083] 第三步:并行部署分布式状态存储库(例如Etcd数据库)和容器运行所需的驱动:
[0084] (1)Etcd存储模块从文件分发模块发过来的软件包中查找分布式状态存储库所需的软件,并执行安装操作;另外还可以在Etcd数据库中设置IP网段配置信息;
[0085] (2)容器部署模块从文件分发模块发过来的软件包中查找容器运行时所需的驱动软件,即部署容器底层运行所需的驱动模块。
[0086] 第四步:网络插件模块从Etcd数据库中读取IP网段配置信息,然后从文件分发模块发过来的软件包中查找云原生网络插件包,并执行安装操作。
[0087] 第五步:Master部署模块从文件分发模块发过来的软件包中查找Kubernetes所需的Api‑server、Controller‑manager、Scheduler这三个主控软件包,并执行安装操作。
[0088] 第六步:Node部署模块从文件分发模块发过来的软件包中查找Kubernetes所需的Kubelet、kube‑proxy这两个被控软件包,并执行安装操作。
[0089] 第七步:应用部署模块从文件分发模块发过来的软件包中查找Kubernetes所需的守护进程组件包、应用数据库和应用程序;然后,先安装Kubernetes所需的守护进程组件,再确认Kubernetes所需的守护进程组件启动正常无误,之后再启动应用数据库,最后启动应用程序。
[0090] 值得说明的是,本申请实施例技术方案在开发过程中的难点之一是如何实现自动化在Etcd数据库中根据不同的网络场景创建IP网段配置信息,并关联到网络插件上,从而将Kubernetes集群启动所需的网络底层就绪。
[0091] 实际中,根据客户的云原生集群网络需求例如VLAN网络、直接路由网络、VxLAN网络和BGP网络四种情况,本申请的发明人通过对这四种情况分别进行不同的流程设置以解决上述问题。因此,根据网络场景自动通过Etcd数据库将容器的IP网段配置信息关联到网络插件上包括如下流程:
[0092] (1)在VLAN网络或直接路由网络的场景下:操作人员将一键部署指令传入装置后,Etcd存储模块暂时对IP网段配置信息不做处理,而是经后面的Master部署模块安装Api‑server和Controller‑manager主控软件包之后,由Controller‑manager接收一键部署指令中的IP网段配置信息,然后通过Api‑server将该IP网段配置信息写入到Etcd数据库中。最后网络插件模块从Etcd数据库中读取IP网段配置信息,再默认按照25位子网掩码将IP网段切分为若干个小网段,并将这些小网段应用到已有的Node部署模块上;
[0093] (2)在VxLAN网络的场景下:操作人员将一键部署指令传入装置后,Etcd存储模块从文件分发模块发过来的软件包中查找Etcd数据库运行所需的软件,安装这些软件后,在Etcd数据库中设置IP网段配置信息。然后网络插件模块从Etcd数据库中读取IP网段配置信息,再默认按照25位子网掩码将IP网段切分为若干个小网段。最后网络插件模块使用这些小网段给每个已有的Node部署模块添加VxLAN隧道连接;
[0094] (3)在BGP网络的场景下:操作人员将一键部署指令传入装置后,Etcd存储模块和Master部署模型暂时对IP网段配置信息不做处理,而是由后面的网络插件模块获取一键部署指令中的IP网段配置信息,再默认按照25位子网掩码将IP网段切分为若干个小网段,将这些小网段应用到已有的Node部署模块上,并将其写入Etcd数据库中。最后网络插件模块将这些小网络以BGP路由协议的方式发送给北向的上联BGP网络设备。
[0095] 基于以上内容,技术人员向装置输入配置参数和命令指令后,经过本申请的流程化处理,最终可得到一个完整的云原生系统集群成品。
[0096] 综上,本申请实施例的技术方案,不仅能够一键快速部署Kubernetes集群并自动启动Kubernetes集群之上的业务应用程序,极大化提高了部署效率和降低人工成本;还解决了其中网络通信相关的技术问题和依赖关系相关的技术问题。
[0097] 本申请实施例还提供一种电子设备,图4是根据本申请实施例的电子设备的结构框图,如图4所示,该电子设备可以包括处理器81以及存储有计算机程序指令的存储器82。
[0098] 具体地,上述处理器81可以包括中央处理器(CPU),或者特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者可以被配置成实施本申请实施例的一个或多个集成电路。
[0099] 其中,存储器82可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器82可包括硬盘驱动器(Hard Disk Drive,简称为HDD)、软盘驱动器、固态驱动器(Solid State Drive,简称为SSD)、闪存、光盘、磁光盘、磁带或通用串行总线(Universal Serial Bus,简称为USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器82可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器82可在数据处理装置的内部或外部。在特定实施例中,存储器82是非易失性(Non‑Volatile)存储器。在特定实施例中,存储器82包括只读存储器(Read‑Only Memory,简称为ROM)和随机存取存储器(Random Access Memory,简称为RAM)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(Programmable Read‑Only Memory,简称为PROM)、可擦除PROM(Erasable Programmable Read‑Only Memory,简称为EPROM)、电可擦除PROM(Electrically Erasable Programmable Read‑Only Memory,简称为EEPROM)、电可改写ROM(Electrically Alterable Read‑Only Memory,简称为EAROM)或闪存(FLASH)或者两个或更多个以上这些的组合。在合适的情况下,该RAM可以是静态随机存取存储器(Static Random‑Access Memory,简称为SRAM)或动态随机存取存储器(Dynamic Random Access Memory,简称为DRAM),其中,DRAM可以是快速页模式动态随机存取存储器(Fast Page Mode Dynamic Random Access Memory,简称为FPMDRAM)、扩展数据输出动态随机存取存储器(Extended Date Out Dynamic Random Access Memory,简称为EDODRAM)、同步动态随机存取内存(Synchronous Dynamic Random‑Access Memory,简称SDRAM)等。
[0100] 存储器82可以用来存储或者缓存需要处理和/或通信使用的各种数据文件,以及处理器81所执行的可能的计算机程序指令。
[0101] 处理器81通过读取并执行存储器82中存储的计算机程序指令,以实现上述实施例中的任意一种云原生系统的快速部署方法。
[0102] 在其中一些实施例中,电子设备还可包括通信接口83和总线80。其中,如图4所示,处理器81、存储器82、通信接口83通过总线80连接并完成相互间的通信。
[0103] 通信接口83用于实现本申请实施例中各模块、装置、单元和/或设备之间的通信。通信接口83还可以实现与其他部件例如:外接设备、图像/数据采集设备、数据库、外部存储以及图像/数据处理工作站等之间进行数据通信。
[0104] 总线80包括硬件、软件或两者,将。。。设备的部件彼此耦接在一起。总线80包括但不限于以下至少之一:数据总线(Data Bus)、地址总线(Address Bus)、控制总线(Control Bus)、扩展总线(Expansion Bus)、局部总线(Local Bus)。举例来说而非限制,总线80可包括图形加速接口(Accelerated Graphics Port,简称为AGP)或其他图形总线、增强工业标准架构(Extended Industry Standard Architecture,简称为EISA)总线、前端总线(Front Side Bus,简称为FSB)、超传输(Hyper Transport,简称为HT)互连、工业标准架构(Industry Standard Architecture,简称为ISA)总线、无线带宽(InfiniBand)互连、低引脚数(Low Pin Count,简称为LPC)总线、存储器总线、微信道架构(Micro Channel Architecture,简称为MCA)总线、外围组件互连(Peripheral Component Interconnect,简称为PCI)总线、PCI‑Express(PCI‑X)总线、串行高级技术附件(Serial Advanced Technology Attachment,简称为SATA)总线、视频电子标准协会局部(Video Electronics Standards Association Local Bus,简称为VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线80可包括一个或多个总线。尽管本申请实施例描述和示出了特定的总线,但本申请考虑任何合适的总线或互连。
[0105] 另外,结合上述实施例中的云原生系统的快速部署方法,本申请实施例可提供一种计算机可读存储介质来实现。该计算机可读存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种云原生系统的快速部署方法。
[0106] 以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0107] 以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。