一种k8s集群部署方法及装置,一种部署平台与流程

文档序号:19835758发布日期:2020-02-04 12:59阅读:355来源:国知局
一种k8s集群部署方法及装置,一种部署平台与流程

本申请涉及计算机技术领域,特别涉及一种k8s集群部署方法、装置、设备及可读存储介质,和一种部署平台。



背景技术:

在现有技术中,若需要为云平台部署k8s集群,则可以利用当前云平台开发框架自带的管理工具实现部署。例如:若当前云平台利用openstack开发,那么可使openstack中的magnum使用虚拟机镜像以及openstack中的keystone、neutron等组件部署k8s集群。

上述部署方式由于需要用到开发框架自带的一些组件,导致k8s集群部署与开发框架的耦合度高。并且,此种部署方式使用的虚拟机镜像依赖虚拟机中的操作系统,若虚拟机中的操作系统与openstack不兼容,则无法部署。因此现有部署方式的灵活性和通用性较低。

其中,openstack是一个开源的云计算管理平台项目,可通过各种互补的服务提供基础设施即服务(iaas)的解决方案,每个服务提供api以进行集成。基于openstack可实现虚拟机创建,存储资源划分等iaas层的功能,本申请将实现有iaas层基本功能的平台称为iaas集群。

kubernetes(简称k8s)是google开源的容器集群管理系统。在docker技术的基础上,k8s为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,能够提高大规模容器集群管理的便捷性。

因此,如何实现k8s集群部署与云平台开发框架的解耦,提高k8s集群部署方式的灵活性和通用性,是本领域技术人员需要解决的问题。



技术实现要素:

有鉴于此,本申请的目的在于提供一种k8s集群部署方法、装置、设备及可读存储介质,以实现k8s集群部署与云平台开发框架的解耦,提高k8s集群部署方式的灵活性和通用性。其具体方案如下:

第一方面,本申请提供了一种k8s集群部署方法,包括:

获取iaas集群信息,iaas集群信息至少包括:iaas集群的网络信息和iaas集群中的虚拟机的ip地址;

从预设容器镜像库中获取部署k8s集群的镜像组件;

若根据网络信息建立与iaas集群的通信连接,则将镜像组件部署至iaas集群中的虚拟机,并启动虚拟机中的镜像组件。

优选地,将镜像组件部署至iaas集群中的虚拟机,包括:

登录虚拟机,并通过dockerrun命令将镜像组件部署至虚拟机。

优选地,登录虚拟机,包括:

通过ssh免密码登录虚拟机。

优选地,启动虚拟机中的镜像组件之后,还包括:

若接收到k8s集群删除命令,则从虚拟机中删除镜像组件。

第二方面,本申请提供了一种k8s集群部署装置,包括:

第一获取模块,用于获取iaas集群信息,iaas集群信息至少包括:iaas集群的网络信息和iaas集群中的虚拟机的ip地址;

第二获取模块,用于从预设容器镜像库中获取部署k8s集群的镜像组件;

部署模块,用于若根据网络信息建立与iaas集群的通信连接,则将镜像组件部署至iaas集群中的虚拟机,并启动虚拟机中的镜像组件。

第三方面,本申请提供了一种部署平台,包括:

iaas集群部署端,用于创建iaas集群,生成iaas集群信息;iaas集群信息至少包括:iaas集群的网络信息和iaas集群中的虚拟机的ip地址;

k8s集群部署端,用于获取iaas集群信息,从预设容器镜像库中获取部署k8s集群的镜像组件;若根据网络信息建立与iaas集群的通信连接,则将镜像组件部署至iaas集群中的虚拟机,并启动虚拟机中的镜像组件;

调度端,用于实现iaas集群部署端和k8s集群部署端的数据交互。

优选地,调度端还用于:

获取用户输入的k8s集群部署命令,并将k8s集群部署命令发送至iaas集群部署端;当从iaas集群部署端获取到iaas集群信息,则将iaas集群信息发送至k8s集群部署端。

优选地,调度端还用于:

获取用户输入的k8s集群删除命令;将k8s集群删除命令发送至iaas集群部署端,以使iaas集群部署端根据k8s集群删除命令删除iaas集群;将k8s集群删除命令发送至k8s集群部署端,以使k8s集群部署端根据k8s集群删除命令从虚拟机中删除镜像组件。

第四方面,本申请提供了一种k8s集群部署设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行计算机程序,以实现前述公开的k8s集群部署方法。

第五方面,本申请提供了一种可读存储介质,用于保存计算机程序,其中,计算机程序被处理器执行时实现前述公开的k8s集群部署方法。

通过以上方案可知,本申请提供了一种k8s集群部署方法,包括:获取iaas集群信息,iaas集群信息至少包括:iaas集群的网络信息和iaas集群中的虚拟机的ip地址;从预设容器镜像库中获取部署k8s集群的镜像组件;若根据网络信息建立与iaas集群的通信连接,则将镜像组件部署至iaas集群中的虚拟机,并启动虚拟机中的镜像组件。

可见,该方法在获取到的iaas集群信息和部署k8s集群的镜像组件后,可将镜像组件以容器化的形式部署在iaas集群中的虚拟机中,从而启动虚拟机中的镜像组件,完成k8s集群的部署。其中,部署k8s集群的镜像组件预先存储在容器镜像库,因此这些组件是以容器镜像在虚拟机中部署和运行的,所以只要虚拟机上能够部署容器环境,那么这些镜像组件就可以在其上安装和运行。此方式无需关注虚拟机上安装的操作系统的类型,因此灵活性和通用性较高。同时,本申请未使用openstack中的magnum以及其他组件,从而实现了iaas集群和k8s集群的解耦,也就是实现了k8s集群部署与云平台开发框架的解耦。

相应地,本申请提供的一种k8s集群部署装置、设备及可读存储介质和一种部署平台,也同样具有上述技术效果。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请公开的一种k8s集群部署方法流程图;

图2为本申请公开的一种k8s集群部署装置示意图;

图3为本申请公开的一种部署平台示意图;

图4为本申请公开的另一种部署平台示意图;

图5为本申请公开的一种k8s集群部署设备示意图。

具体实施方式

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

目前,现有k8s集群部署方式与开发框架的耦合度高,依赖虚拟机中的操作系统,灵活性和通用性较低。为此,本申请提供了一种k8s集群部署方案,能够实现k8s集群部署与云平台开发框架的解耦,提高k8s集群部署方式的灵活性和通用性。

参见图1所示,本申请实施例公开了一种k8s集群部署方法,包括:

s101、获取iaas集群信息,iaas集群信息至少包括:iaas集群的网络信息和iaas集群中的虚拟机的ip地址;

s102、从预设容器镜像库中获取部署k8s集群的镜像组件;

s103、若根据网络信息建立与iaas集群的通信连接,则将镜像组件部署至iaas集群中的虚拟机,并启动虚拟机中的镜像组件。

在一种具体实施方式中,将镜像组件部署至iaas集群中的虚拟机,包括:登录虚拟机,并通过dockerrun命令将镜像组件部署至虚拟机。

其中,登录虚拟机,包括:通过ssh免密码登录虚拟机。当然,还可以利用用户名和密码登录虚拟机。

在一种具体实施方式中,启动虚拟机中的镜像组件之后,还包括:若接收到k8s集群删除命令,则从虚拟机中删除镜像组件。

可见,本实施例在获取到的iaas集群信息和部署k8s集群的镜像组件后,可将镜像组件以容器化的形式部署在iaas集群中的虚拟机中,从而启动虚拟机中的镜像组件,完成k8s集群的部署。其中,部署k8s集群的镜像组件预先存储在容器镜像库,因此这些组件是以容器镜像在虚拟机中部署和运行的,所以只要虚拟机上能够部署容器环境,那么这些镜像组件就可以在其上安装和运行。此方式无需关注虚拟机上安装的操作系统的类型,因此灵活性和通用性较高。同时,本申请未使用openstack中的magnum以及其他组件,从而实现了iaas集群和k8s集群的解耦,也就是实现了k8s集群部署与云平台开发框架的解耦。

下面对本申请实施例提供的一种k8s集群部署装置进行介绍,下文描述的一种k8s集群部署装置与上文描述的一种k8s集群部署方法可以相互参照。

参见图2所示,本申请实施例公开了一种k8s集群部署装置,包括:

第一获取模块201,用于获取iaas集群信息,iaas集群信息至少包括:iaas集群的网络信息和iaas集群中的虚拟机的ip地址;

第二获取模块202,用于从预设容器镜像库中获取部署k8s集群的镜像组件;

部署模块203,用于若根据网络信息建立与iaas集群的通信连接,则将镜像组件部署至iaas集群中的虚拟机,并启动虚拟机中的镜像组件。

在一种具体实施方式中,部署模块具体用于:

登录虚拟机,并通过dockerrun命令将镜像组件部署至虚拟机。

在一种具体实施方式中,部署模块具体用于:

通过ssh免密码登录虚拟机。

在一种具体实施方式中,还包括:

删除模块,用于若接收到k8s集群删除命令,则从虚拟机中删除镜像组件。

其中,关于本实施例中各个模块、单元更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。

可见,本实施例提供了一种k8s集群部署装置,该装置能够实现k8s集群部署与云平台开发框架的解耦,提高k8s集群部署方式的灵活性和通用性。

下面对本申请实施例提供的一种部署平台进行介绍,下文描述的一种部署平台与上文描述的一种k8s集群部署方法及装置可以相互参照。

参见图3所示,本申请实施例公开了一种部署平台,包括:

iaas集群部署端301,用于创建iaas集群,生成iaas集群信息;iaas集群信息至少包括:iaas集群的网络信息和iaas集群中的虚拟机的ip地址;

k8s集群部署端302,用于获取iaas集群信息,从预设容器镜像库中获取部署k8s集群的镜像组件;若根据网络信息建立与iaas集群的通信连接,则将镜像组件部署至iaas集群中的虚拟机,并启动虚拟机中的镜像组件;

调度端303,用于实现iaas集群部署端和k8s集群部署端的数据交互。

在一种具体实施方式中,调度端还用于:

获取用户输入的k8s集群部署命令,并将k8s集群部署命令发送至iaas集群部署端;当从iaas集群部署端获取到iaas集群信息,则将iaas集群信息发送至k8s集群部署端。

在一种具体实施方式中,调度端还用于:

获取用户输入的k8s集群删除命令;将k8s集群删除命令发送至iaas集群部署端,以使iaas集群部署端根据k8s集群删除命令删除iaas集群;将k8s集群删除命令发送至k8s集群部署端,以使k8s集群部署端根据k8s集群删除命令从虚拟机中删除镜像组件。

可见,本实施例提供了一种部署平台,该装置能够实现k8s集群部署与云平台开发框架的解耦,提高k8s集群部署方式的灵活性和通用性。

参见图4所示,本申请实施例公开了另一种部署平台,包括:iaas集群部署端、k8s集群部署端和调度端。

其中,调度端统一调用iaas集群部署端和k8s集群部署端,其中提供用户接口,该用户接口用于实现与用户的交互功能。k8s集群部署端设有容器镜像库,其中存储有容器化的k8s组件,iaas集群和k8s集群通过容器化的k8s组件实现解耦。iaas集群部署端只需要满足k8s集群所需要的计算存储网络资源的生成。k8s集群部署端只需要关注k8s组件本身的角色划分、权限配置,从而实现了二者的独立升级、独立扩展,并且可以通过扩展插件实现多云部署和混合云部署,具有较高的实用价值。

iaas集群部署端主要负责iaas层资源的部署和维护,以插件化的形式实现对接iaas平台。对外提供统一接口对接不同的iaas平台,并可通过扩展插件(aws插件)实现平台扩展。iaas集群部署端从调度端获取iaas层相关规格参数(该参数由用户在调度端输入或指定),寻找对应的iaas平台插件,调用iaas服务接口实现编排。以openstack为例,openstack主要使用heat模板实现编排和部署。因此在对接openstack环境时,iaas集群部署端实现一套heat资源模板,该模板定义了一个k8s集群所需的云主机镜像、网络、路由、安全组、数据卷等资源和资源之间的关联关系,同时实现了一套对接heat的接口,可以通过调用heat接口实现openstack资源的编排功能。

heat是openstack提供的自动编排功能的组件,基于描述性的模板,来编排复合云应用程序。heat向开发人员和系统管理员提供了一种简便地创建和管理一批相关的openstack资源的方法,并通过有序且可预测的方式对其进行资源配置和更新。用户可以使用heat的示例模板或自己创建模板来描述openstack资源以及应用程序运行时所需的任何相关依赖项或运行时参数。

k8s集群部署端主要负责k8s集群的部署和管理,k8s集群部署端使用容器化设计,通过在iaas资源上运行容器化的k8s组件,实现k8s与iaas环境的解耦。k8s集群部署端中维护有k8s各版本镜像和相应的安装部署脚本,并且实现一个docker镜像的本地仓库,其中存储部署k8s集群所需的组件。k8s集群部署端从调度端获取与k8s集群相关的角色划分、参数配置等信息(这些信息由用户在调度端输入或指定);以及iaas集群部署端部署的iaas层相关规格参数,进而连接iaas层的云主机,在虚拟机中执行dockerrun命令,以从本地仓库中下载k8s镜像并在虚拟机中启动,从而实现k8s集群的编排功能。

调度端负责从用户处接收创建k8s集群的指令,解析后分配给iaas集群部署端和k8s集群部署端;监听iaas集群部署端对iaas资源创建的状态,获取iaas层的相关信息,并将这些信息传递给k8s集群部署端;监听k8s集群部署端对k8s集群的创建状态,并将创建进度反馈给用户;其中还维护一个metadata(元数据的数据库),该数据库中记录k8s集群节点与云主机节点的对应关系,也就算k8s集群节点与虚拟机的对应关系。例如:一组组件分别安装在多个虚拟机上,那么这多个虚拟机即可看作一个集合,该集合对这组组件对应,这组组件可看作一个k8s集群节点,云主机节点可看作虚拟机。

部署k8s集群的过程包括:

用户在调度端填写iaas集群的规格需求,例如主节点个数、主节点规格、从节点个数、从节点规格、网络、子网等信息;用户在调度端填写k8s集群相关的参数设置,例如k8s版本、k8s网络插件、k8s内网网段等信息。

调度端解析iaas集群的规格需求后,将其传输给iaas集群部署端。这样iaas集群部署端根据这些信息创建iaas集群,iaas集群创建完成后,iaas集群部署端将集群信息(包括主节点个数、主节点规格、从节点个数、从节点规格、网络、子网等信息等)返回给调度端。

调度端将集群信息传输给k8s集群部署端。k8s集群部署端根据集群信息连接iaas集群,并拉取本地容器镜像仓库中的k8s镜像组件;镜像组件拉取完成后,k8s集群部署端以ssh免密码登录登录虚拟机,并根据k8s版本、k8s网络插件、k8s内网网段等信息,以及dockerrun命令安装k8s镜像组件至虚拟机,并在虚拟机中启动k8s镜像组件。启动后,将部署状态返回给调度端。调度端将此状态反馈给用户。

k8s集群删除过程包括:

用户在调度端选择要删除的k8s集群,调度端将此k8s集群的相关信息发送给k8s集群部署端,k8s集群部署端连接云主机执行相关组件的删除操作。必要时,调度端将此k8s集群的相关信息发送给iaas集群部署端,iaas集群部署端删除相关iaas集群。不管删除完成还是未完成,k8s集群部署端和iaas集群部署端都会返回相应状态至调度端,以使调度端将部署状态反馈给用户。

可见,本实施例提供的部署平台能够实现k8s集群部署与云平台开发框架的解耦,提高k8s集群部署方式的灵活性和通用性。

下面对本申请实施例提供的一种k8s集群部署设备进行介绍,下文描述的一种k8s集群部署设备与上文描述的一种k8s集群部署方法及装置可以相互参照。

参见图5所示,本申请实施例公开了一种k8s集群部署设备,包括:

存储器501,用于保存计算机程序;

处理器502,用于执行所述计算机程序,以实现上述任意实施例公开的方法。

下面对本申请实施例提供的一种可读存储介质进行介绍,下文描述的一种可读存储介质与上文描述的一种k8s集群部署方法、装置及设备可以相互参照。

一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述实施例公开的k8s集群部署方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。

本申请涉及的“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法或设备固有的其它步骤或单元。

需要说明的是,在本申请中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的可读存储介质中。

本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1