一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种K8S容器集群部署方法、装置、设备及可读存储介质与流程

2021-11-22 13:18:00 来源:中国专利 TAG:

一种k8s容器集群部署方法、装置、设备及可读存储介质
技术领域
1.本技术涉及计算机技术领域,特别涉及一种k8s容器集群部署方法、装置、设备及可读存储介质。


背景技术:

2.目前,部署k8s容器集群之前,需要先手动创建云主机,然后再基于云主机进行节点创建。其中,手动创建云主机的过程比较繁琐,且人工创建容易出错,因此集群部署效率低且人工部署成本较高。
3.因此,如何提高k8s容器集群的部署效率,是本领域技术人员需要解决的问题。


技术实现要素:

4.有鉴于此,本技术的目的在于提供一种k8s容器集群部署方法、装置、设备及可读存储介质,以提高k8s容器集群的部署效率。其具体方案如下:
5.第一方面,本技术提供了一种k8s容器集群部署方法,应用于openstack中的cetus,包括:
6.接收k8s容器集群的创建请求;
7.调用openstack中的heat构建所述创建请求对应的基础设施;
8.控制所述基础设施中的各个主机注册于集群管理器,以使所述集群管理器确定每个主机的角色;
9.利用所述集群管理器在每个主机上部署与主机角色对应的软件功能模块后,将各个主机作为k8s容器集群的各个节点。
10.优选地,所述控制所述基础设施中的各个主机注册于集群管理器之前,还包括:
11.调用所述集群管理器基于所述基础设施创建集群控制器。
12.优选地,所述控制所述基础设施中的各个主机注册于集群管理器,包括:
13.利用所述集群控制器控制任一个主机在启动后自动执行cloud

init脚本,以使该主机利用相应的注册进程到所述集群管理器注册自身角色。
14.优选地,所述利用所述集群管理器在每个主机上部署与主机角色对应的软件功能模块,包括:
15.利用所述集群管理器为每个主机发送与主机角色对应的部署指令,以使每个主机根据所述部署指令部署相应软件功能模块;所述软件功能模块包括组件和pod。
16.优选地,若任一主机的角色为master,则该主机根据所述部署指令部署api server、scheduler、controller manager、etcd和相应pod;
17.若任一主机的角色为node,则该主机根据所述部署指令部署kubelet、kube

proxy和相应pod。
18.优选地,还包括:
19.利用所述集群管理器实时监控各个主机上的软件功能模块的部署进度,待部署完
成后,返回部署完成的通知消息。
20.优选地,所述将各个主机作为k8s容器集群的各个节点之后,还包括:
21.部署检测插件至k8s容器集群的任一节点,利用所述检测插件检测该节点上的pod的状态,并返回相应检测结果。
22.第二方面,本技术提供了一种k8s容器集群部署装置,应用于openstack中的cetus,包括:
23.接收模块,用于接收k8s容器集群的创建请求;
24.调用模块,用于调用openstack中的heat构建所述创建请求对应的基础设施;
25.注册模块,用于控制所述基础设施中的各个主机注册于集群管理器,以使所述集群管理器确定每个主机的角色;
26.部署模块,用于利用所述集群管理器在每个主机上部署与主机角色对应的软件功能模块后,将各个主机作为k8s容器集群的各个节点。
27.第三方面,本技术提供了一种电子设备,包括:
28.存储器,用于存储计算机程序;
29.处理器,用于执行所述计算机程序,以实现前述公开的k8s容器集群部署方法。
30.第四方面,本技术提供了一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述公开的k8s容器集群部署方法。
31.通过以上方案可知,本技术提供了一种k8s容器集群部署方法,应用于openstack中的cetus,包括:接收k8s容器集群的创建请求;调用openstack中的heat构建所述创建请求对应的基础设施;控制所述基础设施中的各个主机注册于集群管理器,以使所述集群管理器确定每个主机的角色;利用所述集群管理器在每个主机上部署与主机角色对应的软件功能模块后,将各个主机作为k8s容器集群的各个节点。
32.可见,本技术利用openstack中的cetus部署k8s容器集群,能够实现一键自动部署。具体包括:当cetus接收到k8s容器集群的创建请求后,先调用openstack中的heat构建创建请求对应的基础设施,然后控制基础设施中的各个主机注册于集群管理器,以使集群管理器确定每个主机的角色,最后利用集群管理器在每个主机上部署与主机角色对应的软件功能模块后,将各个主机作为k8s容器集群的各个节点,从而完成了k8s容器集群的自动部署。其中的heat能够自动编排基础设施,并实现基础设施资源的初始化,而集群管理器能够自动为各个主机部署相关软件功能模块,从而实现集群节点的创建。可见,本技术能够实现k8s容器集群的一键自动部署,无需手动创建云主机,且不易出错,从而提高了k8s容器集群的部署效率,也降低了部署成本。
33.相应地,本技术提供的一种k8s容器集群部署装置、设备及可读存储介质,也同样具有上述技术效果。
附图说明
34.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
35.图1为本技术公开的一种k8s容器集群部署方法流程图;
36.图2为本技术公开的一种基于openstack部署k8s容器集群的系统架构图;
37.图3为本技术公开的一种k8s容器集群的结构图;
38.图4为本技术公开的一种k8s容器集群部署装置示意图;
39.图5为本技术公开的一种电子设备示意图。
具体实施方式
40.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
41.目前,部署k8s容器集群之前,需要先手动创建云主机,然后再基于云主机进行节点创建。其中,手动创建云主机的过程比较繁琐,且人工创建容易出错,因此集群部署效率低且人工部署成本较高。为此,本技术提供了一种k8s容器集群部署方案,能够提高k8s容器集群的部署效率。
42.参见图1所示,本技术实施例公开了一种k8s容器集群部署方法,应用于openstack中的cetus,包括:
43.s101、接收k8s容器集群的创建请求。
44.需要说明的是,创建请求中一般会指明master的个数、node的个数、存储容量、网络连接类型、集群安全防护等设备信息。
45.kubernetes是开源的基于容器的集群管理平台,kubernetes的目标是:实现部署容器化的应用,简单并且高效,提供了应用部署、规划、更新、维护的一种机制,简称k8s。一个k8s系统,通常称为一个k8s容器集群(cluster)。
46.k8s容器集群是容器化的管理系统,是容器运行所需云资源的集合。它由若干工作节点(云主机或者物理机)、负载均衡、网络等资源组成,为容器化的应用提供了资源调度、部署运行和服务发现等丰富多样的功能。
47.s102、调用openstack中的heat构建创建请求对应的基础设施。
48.由于创建请求中一般会指明master的个数、node的个数、存储容量、网络连接类型、集群安全防护等设备信息,因此heat创建的基础设施一般包括多个主机、网络设备、安全组设备、存储设备等。
49.其中,cetus和heat均为openstack中的组件,openstack中还包括:nova、cinder等组件,其中,nova(计算资源构建模块)和cinder(存储资源构建模块)在heat的调用下,创建云主机、云硬盘等基础设施,nova和cinder是创建云主机、云硬盘的主要模块。
50.openstack是一个开源的云计算管理平台项目,是一系列软件开源项目的组合。openstack能够为私有云和公有云提供可扩展的、弹性的云计算服务。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。openstack是一个云平台管理的项目,它不是一个软件。这个项目由几个主要的组件组合起来完成一些具体的工作,openstack是一个旨在为公共及私有云的建设与管理提供软件的开源项目。
51.openstack云主机是一个基于qemu的仿真操作系统,其可以支持各种操作系统,如
centos,ubuntu,windows等。k8s可以部署在linux内核的虚拟机上,本实施例可以使用centos来安装部署k8s容器集群。
52.s103、控制基础设施中的各个主机注册于集群管理器,以使集群管理器确定每个主机的角色。
53.需要说明的是,集群管理器是自定义的、具有注册主机、给主机发送部署指令等功能的软件模块。
54.在一种具体实施方式中,控制基础设施中的各个主机注册于集群管理器之前,还包括:调用集群管理器基于基础设施创建集群控制器。集群控制器用于管理集群中的各个节点,具体为:给主机发送部署指令、监控主机部署进度等,因此集群控制器创建于集群管理器中。
55.s104、利用集群管理器在每个主机上部署与主机角色对应的软件功能模块后,将各个主机作为k8s容器集群的各个节点。
56.其中,一个主机上部署完相应软件功能模块后,该主机即成为k8s容器集群的一个节点。其中,主机的角色为master或node。
57.一个k8s容器集群主要包括两个部分:若干个master(主节点),一群node(计算节点)。节点是应用实例(pod)运行所在的工作主机,为集群提供计算能力。节点可以是云主机也可以是云物理机。pod是所有业务类型的基础,也是k8s管理的最小单位级,一个pod代表着集群中运行的一个进程,它内部封装了一个或多个紧密相关的容器。
58.其中,master主要负责管理和控制,其中包括api server、scheduler、controller manager、etcd等组件。api server是对外接口,供客户端和其它组件调用,相当于“营业厅”。scheduler负责对集群内部的资源进行调度,监视新创建没有分配到节点的pod,选择一个节点供pod运行,即pod的调度。controller manager为管理控制器,相当于“调度大总管”。etcd是k8s提供默认的存储系统,保存所有集群数据,使用时需要为etcd数据提供备份计划。一般地,master通过scheduler组件调度pod到node,实现容器应用。
59.其中,node是真正运行工作负载的节点,node上运行着master分配的pod,当某个node宕机时,其上的pod会被自动转移到其他node上。每一个node都安装了node组件,包括kubelet、kube

proxy等。kubelet会监视已分配给该node的pod,负责pod的生命周期管理,同时与master密切协作,维护和管理该node上面的所有pod,实现集群管理的基本功能。kube

proxy主要负责为pod对象提供代理。
60.可见,本实施例利用openstack中的cetus部署k8s容器集群,能够实现一键自动部署。具体包括:当cetus接收到k8s容器集群的创建请求后,先调用openstack中的heat构建创建请求对应的基础设施,然后控制基础设施中的各个主机注册于集群管理器,以使集群管理器确定每个主机的角色,最后利用集群管理器在每个主机上部署与主机角色对应的软件功能模块后,将各个主机作为k8s容器集群的各个节点,从而完成了k8s容器集群的自动部署。其中的heat能够自动编排基础设施,并实现基础设施资源的初始化,而集群管理器能够自动为各个主机部署相关软件功能模块,从而实现集群节点的创建。可见,本实施例能够实现k8s容器集群的一键自动部署,无需手动创建云主机,且不易出错,从而提高了k8s容器集群的部署效率,也降低了部署成本。
61.基于上述实施例,需要说明的是,在一种具体实施方式中,控制基础设施中的各个
主机注册于集群管理器,包括:利用集群控制器控制任一个主机在启动后自动执行cloud

init脚本,以使该主机利用相应的注册进程到集群管理器注册自身角色。
62.其中,每个主机上都会安装一个cloud

init脚本,该cloud

init脚本用于使主机到集群管理器注册自身角色。由于创建请求中一般会指明master的个数、node的个数,因此cetus基于创建请求可以从各个主机中随机指定master和node,并控制各个主机到集群管理器注册自身角色。
63.基于上述实施例,需要说明的是,主机角色不同时,其上所部署的软件功能模块也不同。而主机角色为node或master,因此在一种具体实施方式中,利用集群管理器在每个主机上部署与主机角色对应的软件功能模块,包括:利用集群管理器为每个主机发送与主机角色对应的部署指令,以使每个主机根据部署指令部署相应软件功能模块;软件功能模块包括组件和pod。
64.在一种具体实施方式中,若任一主机的角色为master,则该主机根据部署指令部署api server、scheduler、controller manager、etcd和相应pod;若任一主机的角色为node,则该主机根据部署指令部署kubelet、kube

proxy和相应pod。
65.基于上述实施例,需要说明的是,利用集群管理器还可以实时监控各个主机上的软件功能模块的部署进度,待部署完成后,返回部署完成的通知消息。
66.在一种具体实施方式中,还可以检测集群是否部署成功,因此在将各个主机作为k8s容器集群的各个节点之后,还包括:部署检测插件至k8s容器集群的任一节点,利用检测插件检测该节点上的pod的状态,并返回相应检测结果。
67.其中,若利用检测插件检测某一节点上的pod的状态为正在运行,则表明该节点正常,因此说明集群部署成功;反之,表明该节点异常,因此说明集群部署可能出现了问题。因此当某一节点上的pod的状态不是正在运行,则可以利用检测插件进一步检测集群问题所在。
68.请参见图2,图2示意了一种基于openstack部署k8s容器集群的系统架构。在图2所示的方案中,自动部署的关键在于:网络、镜像、存储等资源的自动编排,该方案使用heat统一进行编排。首先用户发送创建集群的请求到openstack中的cetus上,然后cetus调用heat创建基础设施,包括云主机、网络、安全组、云硬盘等;cetus调用rancher(即上文所述的集群管理器)创建一个有集群控制器,但没有节点的集群,以利用该集群控制器为集群创建节点。待基础设施创建完成后,基础设施中的云主机启动后,会自动执行cloud

init脚本,该脚本会启动一个进程请求注册到rancher,请求中包含了该节点的角色信息(master或node);rancher接收到注册请求,根据各个节点请求的角色信息,来下发部署指令,以在不同角色节点上部署不同软件功能模块,启动不同进程。
69.在部署过程中,rancher时刻监控各个节点的模块安装进度,当所有节点都安装完成后,k8s容器集群创建完成。
70.上述部署过程具体包括:
71.1)、用户创建集群的请求发送到cetus;
72.2)、cetus调用heat创建基础设施,包括云主机、网络、安全组、云硬盘等;
73.3)、cetus调用rancher创建一个有集群控制器,但没有节点的集群,此集群不是真正的k8s容器集群;
74.4)、基础设施完成后,云主机启动并自动执行cloud

init脚本,该脚本会启动一个进程请求注册到rancher,请求中包含了该节点的角色信息(master或node);
75.5)、rancher接收到注册请求,根据各个节点请求的角色信息,来下发部署指令,以在不同角色节点上启动不同进程,并安装所需组件;
76.6)、rancher时刻监控各个节点的组件安装进度,当所有节点的组件都安装完成后,k8s容器集群创建完成;
77.7)、cetus时刻监视heat和rancher的进度,反馈给用户;
78.8)、校验k8s容器集群的正确性。
79.k8s容器集群创建成功后,可以通过部署插件查看pod状态,以此来检验集群是否正确部署。如果pod是运行状态,说明插件成功部署至相关节点,也说明集群创建正常;反之,需要定位插件或者集群的问题。
80.基于上述可创建得到k8s容器集群,k8s容器集群的结构图可参见图3。
81.在本实施例中,openstack中heat可根据创建集群的需要来自动创建云主机;云主机创建成功后,cetus是实现自动部署集群的关键,处理容器集群的管理逻辑,负责分类云主机为不同角色,进而完成集群的创建。
82.其中,heat在openstack中负责编排计划的主要项目,它可以基于模板来实现云主机中资源的初始化,依赖关系处理,部署等基本操作,也可以解决自动收缩、负载均衡等高级特性。rancher为容器而生,负责集群管理以及云主机的管理工作。
83.本实施例在创建集群时增加cetus模块,实现调用openstack创建云主机,并在云主机上自动完成集群的部署以及集群节点的调度。带来的有益效果包括:
84.1、完全实现了一键部署可用集群的功能,不需要先创建云主机,再去部署集群,节省时间以及人力;
85.2、即便对业务不熟悉的人员,也能做到成功部署集群,对业务熟悉度要求降低;
86.3、提高部署效率,节省运维成本,方便运维工程师安装、部署以及后期客户现场的问题定位。
87.下面对本技术实施例提供的一种k8s容器集群部署装置进行介绍,下文描述的一种k8s容器集群部署装置与上文描述的一种k8s容器集群部署方法可以相互参照。
88.参见图4所示,本技术实施例公开了一种k8s容器集群部署装置,应用于openstack中的cetus,包括:
89.接收模块401,用于接收k8s容器集群的创建请求;
90.调用模块402,用于调用openstack中的heat构建创建请求对应的基础设施;
91.注册模块403,用于控制基础设施中的各个主机注册于集群管理器,以使集群管理器确定每个主机的角色;
92.部署模块404,用于利用集群管理器在每个主机上部署与主机角色对应的软件功能模块后,将各个主机作为k8s容器集群的各个节点。
93.在一种具体实施方式中,还包括:
94.集群控制器创建模块,用于调用集群管理器基于基础设施创建集群控制器。
95.在一种具体实施方式中,注册模块具体用于:
96.利用集群控制器控制任一个主机在启动后自动执行cloud

init脚本,以使该主机
利用相应的注册进程到集群管理器注册自身角色。
97.在一种具体实施方式中,部署模块具体用于:
98.利用集群管理器为每个主机发送与主机角色对应的部署指令,以使每个主机根据部署指令部署相应软件功能模块;软件功能模块包括组件和pod。
99.在一种具体实施方式中,若任一主机的角色为master,则该主机根据部署指令部署api server、scheduler、controller manager、etcd和相应pod;若任一主机的角色为node,则该主机根据部署指令部署kubelet、kube

proxy和相应pod。
100.在一种具体实施方式中,还包括:
101.监控模块,用于利用集群管理器实时监控各个主机上的软件功能模块的部署进度,待部署完成后,返回部署完成的通知消息。
102.在一种具体实施方式中,还包括:
103.检测模块,用于部署检测插件至k8s容器集群的任一节点,利用检测插件检测该节点上的pod的状态,并返回相应检测结果。
104.其中,关于本实施例中各个模块、单元更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
105.可见,本实施例提供了一种k8s容器集群部署装置,该装置能够实现k8s容器集群的一键自动部署,无需手动创建云主机,且不易出错,从而提高了k8s容器集群的部署效率,也降低了部署成本。
106.下面对本技术实施例提供的一种电子设备进行介绍,下文描述的一种电子设备与上文描述的一种k8s容器集群部署方法及装置可以相互参照。
107.参见图5所示,本技术实施例公开了一种电子设备,包括:
108.存储器501,用于保存计算机程序;
109.处理器502,用于执行所述计算机程序,以实现上述任意实施例公开的方法。
110.下面对本技术实施例提供的一种可读存储介质进行介绍,下文描述的一种可读存储介质与上文描述的一种k8s容器集群部署方法、装置及设备可以相互参照。
111.一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述实施例公开的k8s容器集群部署方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
112.本技术涉及的“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法或设备固有的其它步骤或单元。
113.需要说明的是,在本技术中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本技术要求
的保护范围之内。
114.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
115.结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd

rom、或技术领域内所公知的任意其它形式的可读存储介质中。
116.本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的一般技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献