CN112667362A - Kubernetes上部署Kubernetes虚拟机集群的方法与系统 - Google Patents

Kubernetes上部署Kubernetes虚拟机集群的方法与系统 Download PDF

Info

Publication number
CN112667362A
CN112667362A CN202110004987.4A CN202110004987A CN112667362A CN 112667362 A CN112667362 A CN 112667362A CN 202110004987 A CN202110004987 A CN 202110004987A CN 112667362 A CN112667362 A CN 112667362A
Authority
CN
China
Prior art keywords
virtual machine
cluster
kubernets
kube
kubernetesnode
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.)
Granted
Application number
CN202110004987.4A
Other languages
English (en)
Other versions
CN112667362B (zh
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.)
Fiberhome Telecommunication Technologies Co Ltd
Original Assignee
Fiberhome Telecommunication Technologies Co Ltd
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 Fiberhome Telecommunication Technologies Co Ltd filed Critical Fiberhome Telecommunication Technologies Co Ltd
Priority to CN202110004987.4A priority Critical patent/CN112667362B/zh
Publication of CN112667362A publication Critical patent/CN112667362A/zh
Application granted granted Critical
Publication of CN112667362B publication Critical patent/CN112667362B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种Kubernetes上部署Kubernetes虚拟机集群的系统,包括kube‑cluster‑operator模块和kube‑cluster‑deployer模块,其中:所述kube‑cluster‑operator模块是Kubernetes虚拟机集群的Operator,使用CRD的方式自定义集群资源;所述kube‑cluster‑deployer模块是Kubernetes虚拟机集群的部署服务,用于在虚拟机集群创建、扩容、故障恢复时,部署Kubernetes基础服务到新的虚拟机节点中。本发明方便快速:如开发测试人员可以快速在已有环境上创建一套新的环境用于开发测试;安全隔离:每套虚拟机集群环境相互隔离,且与底层Kubernetes也通过虚拟机隔离,防止相互影响。本发明还提供了Kubernetes上部署Kubernetes虚拟机集群的方法。

Description

Kubernetes上部署Kubernetes虚拟机集群的方法与系统
技术领域
本发明属于虚拟机容器云技术领域,更具体地,涉及一种Kubernetes上部署Kubernetes虚拟机集群的方法与系统。
背景技术
云计算是推动信息技术能力实现按需供给、提高信息化建设利用水平的新技术、新模式、新业态。它能为互联网、大数据、人工智能等领域的发展提供重要基础支撑,赋能传统企业变革升级,帮助企业聚焦核心业务,更快适应变化多端的市场竞争。在这个“数据为王”的年代,企业在运营的过程中必然会产生海量数据。为了降低IT管理的复杂性,提高资源的利用率,释放数据中蕴藏的巨大价值,企业也需要借助云计算这一工具,有效驱动业务及流程创新,形成自身差异化竞争优势。
云计算的历史最远可追溯到1965年,Christopher Strachey发表了一篇论文,论文中正式提出了「虚拟化」的概念。而虚拟化正是云计算基础架构的核心,是云计算发展的基础。不过由于当时技术的限制,虚拟化始终只是一个概念和对未来的畅想,而云计算就更谈不上了。在云计算兴起之前,对于大多数企业而言,硬件的自行采购和IDC机房租用是主流的IT基础设施构建方式。除了服务器本身,机柜、带宽、交换机、网络配置、软件安装、虚拟化等底层诸多事项总体上需要相当专业的人士来负责,作调整时的反应周期也比较长。
2015年,云计算在中国也达到临界点。从金融、制造,到政务、零售,关键行业的大中型企业纷纷开始试水云服务。根据iiMedia Research的《2018年中国云计算行业发展报告》,2015年中国云计算的产业规模已达1500亿元,预计2019年将达4300亿元。巨大市场催生了激烈竞争。在国内,阿里巴巴、腾讯、华为等大型公司纷纷上线云服务;在国外,亚马逊、微软等云服务巨头也把中国作为维持高速增长、扩展国际市场占有率的战略要地。
2014年,Google开源了Kubernetes容器编排引擎。如今,Kubernetes已经成为分布式集群管理系统和公有云/私有云的事实标准。实际上,Kubernetes是一个分布式操作系统,它是Google在分布式操作系统领域十余年工程经验和智慧的结晶,而Google一直以来都管理着世界上最大的分布式集群,在分布式操作系统领域的研究和认识领先于全世界。Kubernetes降低了IT运维成本,缩短了业务交付周期,同时集成了敏捷开发云、应用管理、弹性伸缩、资源监控、微服务治理等功能的PaaS平台已逐渐成为业务上云的重要承载平台。
基于cgroup和namespace的容器技术是Kubernetes的主流编排对象。容器技术为应用程序提供了隔离的运行空间,每个容器内都包含一个独享的完整用户环境空间,容器内的变动不会影响其他容器的运行环境。因为容器之间共享同一个系统内核,当同一个库被多个容器使用时,内存的使用效率会得到提升。虚拟化技术则是提供了一个完整的虚拟机,为用户提供了不依赖于宿主机内核的运行环境。对于从物理服务器过渡到虚拟服务器是一个很自然的过程,从用户使用上并没有什么区别。容器与虚拟机当前看来并不是一个非此即彼的关系,至于采用那种方式去运行应用需要根据具体需求去决定。
因此针对虚拟机的编排也是Kubernetes是一个重要使用方式,其中有以安全为目标的Kata Container,和以单个虚拟机为目标的Kubevirt、virtlet项目。Kubevirt是Redhat开源的以容器方式运行虚拟机的项目,以Kubernetes add-on方式,利用KubernetesCustomResourceDefinition(CRD)为增加资源类型Virtual Machine Instance(VMI),使用容器的image registry去创建虚拟机并提供VM生命周期管理。kubevirt由4部分组成,分别是
virt-api:提供了自定义的api请求处理,如vnc console,start vm,stop vm等;
virt-controller:监听kubernetes-api-server,负责根据VMI的CRD创建虚拟机Pod;
virt-handler:监听kubernetes-api-server,在kubelet上负责虚拟机Pod调度;
virt-launcher:负责和libvirt通信管理虚拟机;
另一个Virtlet项目跟kubevirt的不同之处在于它使用POD来描述一个VM。因为kubelet是通过CRI接口跟下面的运行时交互的,virtlet实现了一套VM的CRI。因为POD是Kubernetes的一等公民,任何现有的Kubernetes功能都可以用于virtlet管理的VM,且不需要额外的控制器,比如服务、部署等等,这样几乎不需要额外的学习和维护成本。但因为一些VM特定的信息无法完全用POD来描述,virtlet借助了POD的注解(annotation)来表达更多VM的信息。
通过上面介绍可知,Kubernetes平台支持单个虚拟机的创建使用,但是这些虚拟机都是独立的单台主机,并没有拓展出集群概念。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种在Kubernetes之上部署Kubernetes虚拟机集群的方法,使得用户可以方便快速地使用一套自己的Kubernetes虚拟机集群,并保持较好的多租户隔离性和底层隔离性。在此基础上,利用Kubernetes编排的特性,实现Kubernetes虚拟机集群节点的故障恢复和弹性扩缩容等特性,实现集群服务的高可用和弹性伸缩。
为实现上述目的,按照本发明的一个方面,提供了一种Kubernetes上部署Kubernetes虚拟机集群的系统,包括kube-cluster-operator模块和kube-cluster-deployer模块,其中:
所述kube-cluster-operator模块是Kubernetes虚拟机集群的Operator,使用CRD的方式自定义集群资源;
所述kube-cluster-deployer模块是Kubernetes虚拟机集群的部署服务,用于在虚拟机集群创建、扩容、故障恢复时,部署Kubernetes基础服务到新的虚拟机节点中。
本发明的一个实施例中,所述kube-cluster-operator模块和kube-cluster-deployer模块用于不断监控和捕获从Kubernetes订阅的事件,如发现达到既定条件,则触发既定操作。
本发明的一个实施例中,使用CRD的方式自定义集群资源具体为,使用CRD的方式设计KubernetesCluster、KubernetesNode两种资源类型,其中:
KubernetesCluster面向给用户,用户可使用YAML格式的文件创建KubernetesCluster资源,其中包含集群信息;
KubernetesNode资源由kube-cluster-operator模块根据用户定义的KubernetesCluster动态创建,与实际虚拟机一一对应,表示每个虚拟机的状态。
本发明的一个实施例中,所述集群信息包括:
集群master节点个数和node节点个数,虚拟机节点的CPU、内存、磁盘信息。
本发明的一个实施例中,所述kube-cluster-deployer模块包含部署流程脚本,用于在已分配的虚拟机上检查环境信息,部署docker、etcd、kubelet、kubernetes-controller-manager、kubernetes-scheduler服务,检测部署结果等;并且部署服务也将部署监控服务到虚拟机节点中,用于支持对集群的弹性伸缩功能。
按照本发明的另一方面,还提供了一种基于上述系统的Kubernetes上部署Kubernetes虚拟机集群的方法,包括:
在Kubernetes虚拟机集群部署阶段,kube-cluster-operator模块监控KubernetesCluster CRD资源的创建,再调用虚拟机服务逐个创建虚拟机;
在故障恢复监控阶段,kube-cluster-operator模块监控KubernetesNode的状态,如果发现某个故障则重新创建一个虚拟机集群节点;
在弹性伸缩监控阶段,kube-cluster-operator模块监控KubernetesCluster的负载水平,如果发现达到阈值,则启动扩容流程,创建新的虚拟机节点加入集群。
本发明的一个实施例中,Kubernetes虚拟机集群部署阶段,包括:
用户通过YAML创建一个KubernetesCluster类型资源,YAML包含虚拟机集群所需信息;
kube-cluster-operator模块监控和捕获单个KubernetesCluster资源创建事件,通过Kubernetes的Apiserver获得KubernetesCluster对象,取出其中虚拟机模板信息,根据这些信息创建KubernetesNode对象,KubernetesNode对象个数由KubernetesCluster定义的节点个数决定;
kube-cluster-operator模块监控和捕获单个KubernetesNode资源创建事件,通过Kubernetes的Apiserver获得KubernetesNode对象,取出其中虚拟机信息,调用虚拟机模块创建单个虚拟机资源对象,并把虚拟机资源ID关联到KubernetesNode对象;
虚拟机模块根据虚拟机资源对象创建实际底层虚拟机;
kube-cluster-deployer模块监控和捕获单个KubernetesNode资源创建完成事件,通过KubernetesNode资源对象获得虚拟机IP信息,连接虚拟机并下载部署脚本到虚拟机上;
kube-cluster-operator模块监控和捕获单个KubernetesNode资源部署完成事件,等待集群下所有KubernetesNode部署完成,则更新KubernetesCluster集群状态为Ready状态。
本发明的一个实施例中,连接虚拟机并下载部署脚本到虚拟机上,包括:
虚拟机分为master和node两种角色,如果是master节点则部署master节点相关服务;如果是node节点则部署node相关服务。
本发明的一个实施例中,故障恢复监控阶段包括:
kube-cluster-operator模块监控和捕获KubernetesNode资源更新事件,通过Kubernetes的Apiserver获得KubernetesNode对象,获得节点状态和节点状态更新时间,确认检测节点是否存活,如果超过设定的超时时间,则启动故障恢复流程,标记KubernetesCluster为NotReady状态;
kube-cluster-operator模块通过Kubernetes的Apiserver获得KubernetesNode关联的KubernetesCluster对象,取出其中虚拟机模板信息,调用虚拟机模块创建单个虚拟机资源对象,并把虚拟机资源ID关联到KubernetesNode对象;同时删除故障的KubernetesNode资源对象;
虚拟机模块根据虚拟机资源对象创建和删除实际底层虚拟机;
kube-cluster-deployer模块监控和捕获单个KubernetesNode资源创建完成事件,得到新创建得Kubernetes资源对象,通过此对象获得虚拟机IP信息,连接虚拟机并下载部署脚本到虚拟机上,并执行部署服务;
kube-cluster-operator模块监控和捕获单个KubernetesNode资源部署完成事件,等待集群下所有KubernetesNode部署完成,则更新KubernetesCluster集群状态为Ready状态。
本发明的一个实施例中,弹性伸缩监控阶段包括:
KubernetesNode定期上报负载数据;
kube-cluster-operator模块监控和捕获KubernetesNode资源更新事件,统计每个KubernetesCluster下的KubernetesNode负载数据,计算这个集群负载数据,如果达到阈值,则启动弹性扩容流程,标记KubernetesCluster为Scaling状态;
kube-cluster-operator模块通过Kubernetes的Apiserver获得KubernetesNode关联的KubernetesCluster对象,取出其中虚拟机模板信息,调用虚拟机模块创建单个虚拟机资源对象,并把虚拟机资源ID关联到KubernetesNode对象;
虚拟机模块根据虚拟机资源对象创建实际底层虚拟机;
kube-cluster-deployer模块监控和捕获单个KubernetesNode资源创建完成事件,得到新创建得Kubernetes资源对象,通过此对象获得虚拟机IP信息,连接虚拟机并下载部署脚本到虚拟机上,并执行部署服务;
kube-cluster-operator模块监控和捕获单个KubernetesNode资源部署完成事件,等待集群下所有KubernetesNode部署完成,则更新KubernetesCluster集群状态为Ready状态。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有如下有益效果:
方便快速:如开发测试人员可以快速在已有环境上创建一套新的环境用于开发测试;
安全隔离:每套虚拟机集群环境相互隔离,且与底层Kubernetes也通过虚拟机隔离,防止相互影响;
使用简单:通过使用CRD的方式创建KubernetesCluster资源,方便用户直接使用YAML创建集群,并且与Kubernetes资源使用方式统一;
故障恢复:kube-cluster-operator模块可以监控KubernetesNode资源状态,如果发现节点虚拟机故障,自动拉起新的虚拟机节点;
弹性伸缩:kube-cluster-operator模块可以监控KubernetesCluster整体负载状态,如果发现负载较高,自动创建新的节点增加到集群中。
附图说明
图1为本发明实施例中Kubernetes上部署Kubernetes虚拟机集群的系统的结构示意图;
图2为本发明实施例中Kubernetes上部署Kubernetes虚拟机集群的方法的流程图;
图3为本发明实施例中Kubernetes虚拟机集群创建的流程图;
图4为本发明实施例中Kubernetes虚拟机集群故障恢复的流程图;
图5为本发明实施例中Kubernetes虚拟机集群动态扩容的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
为了实现本发明的目的,如图1所示,本发明提供了一种Kubernetes上部署Kubernetes虚拟机集群的系统,包括设计实现了2个模块,包括kube-cluster-operator模块和kube-cluster-deployer模块,其中:
kube-cluster-operator模块,是Kubernetes虚拟机集群的Operator,使用CRD的方式自定义集群资源,例如KubernetesCluster、KubernetesNode等CRD资源。
kube-cluster-deployer模块,是Kubernetes虚拟机集群的部署服务,用于虚拟机集群在创建、扩容、故障恢复时,部署Kubernetes基础服务到新的虚拟机节点中。
为了方便用户创建Kubernetes虚拟机集群,同时也为支持用户集群的管理,使用CRD的方式设计KubernetesCluster、KubernetesNode两种资源类型,其中KubernetesCluster面向给用户,用户可以方便使用YAML格式的文件创建KubernetesCluster资源,其中包含集群信息,例如集群master节点个数和node节点个数,虚拟机节点的CPU、内存、磁盘等信息。KubernetesNode资源由kube-cluster-operator模块根据用户定义的KubernetesCluster动态创建,与实际虚拟机一一对应,表示每个虚拟机的状态。例如:
KubernetesCluster的YAML定义如下:
Figure BDA0002882948390000091
KubernetesNode的YAML定义如下:
Figure BDA0002882948390000092
Figure BDA0002882948390000101
kube-cluster-deployer模块用于在各阶段提供虚拟机节点内Kubernetes服务的部署。kube-cluster-deployer模块包含部署流程脚本,用于在已分配的虚拟机上检查环境信息,部署docker、etcd、kubelet、kubernetes-controller-manager、kubernetes-scheduler等服务,检测部署结果等。同时,部署服务也将部署监控服务到虚拟机节点中,用于支持后续对集群的弹性伸缩功能。
Operator是Kubernetes经典的控制器扩展实现范式。所述kube-cluster-operator模块和kube-cluster-deployer模块用于不断监控和捕获从Kubernetes订阅的事件,如发现达到既定条件,则触发既定操作。在Kubernetes虚拟机集群部署阶段,kube-cluster-operator模块监控KubernetesCluster CRD资源的创建,再调用虚拟机服务逐个创建虚拟机。在故障恢复监控阶段,kube-cluster-operator模块监控KubernetesNode的状态,如果发现某个故障则重新创建一个虚拟机集群节点。在弹性伸缩监控阶段,kube-cluster-operator模块监控KubernetesCluster的负载水平,如果发现达到阈值,则启动扩容流程,创建新的虚拟机节点加入集群。
如图2所示,本发明提供了一种Kubernetes上部署Kubernetes虚拟机集群的方法,包括:
S1、在Kubernetes虚拟机集群部署阶段,kube-cluster-operator模块监控KubernetesCluster CRD资源的创建,再调用虚拟机服务逐个创建虚拟机;
S2、在故障恢复监控阶段,kube-cluster-operator模块监控KubernetesNode的状态,如果发现某个故障则重新创建一个虚拟机集群节点;
S3、在弹性伸缩监控阶段,kube-cluster-operator模块监控KubernetesCluster的负载水平,如果发现达到阈值,则启动扩容流程,创建新的虚拟机节点加入集群。
如图3所示,Kubernetes虚拟机集群部署流程包括:
S11、用户通过YAML创建一个KubernetesCluster类型资源,YAML包含虚拟机集群所需信息,比如节点个数、虚拟机模板信息(CPU核数、内存大小、磁盘大小等)、功能开关等;
S12、kube-cluster-operator模块监控和捕获单个KubernetesCluster资源创建事件,通过Kubernetes的Apiserver获得KubernetesCluster对象,取出其中虚拟机模板信息,根据这些信息创建KubernetesNode对象。KubernetesNode对象个数由KubernetesCluster定义的节点个数决定;
需要说明的是:k8s的watch机制是以资源对象为单位,获得例如KubernetesNode、KubernetesCluster资源对象的CRUD更新事件,每次获得一个事件,例如单个KubernetesNode创建完成这样一个Create事件。kube-cluster-operator和kube-cluster-deployer都是通过这种机制和kubernetes通信的。
k8s的处理机制是单个处理,如果是多个事件也是自动排队逐个处理,包含:
-单个KubernetesNode的CRUD事件;
-单个KubernetesCluster的CRUD事件;
这些事件统称为K8s订阅的事件。
S13、kube-cluster-operator模块监控和捕获单个KubernetesNode资源创建事件,通过Kubernetes的Apiserver获得KubernetesNode对象,取出其中虚拟机信息,调用虚拟机模块创建单个虚拟机资源对象,并把虚拟机资源ID关联到KubernetesNode对象;
S14、虚拟机模块根据虚拟机资源对象创建实际底层虚拟机,此步骤的虚拟机模块可以由kubevirt,virtlet等模块实现。
S15、kube-cluster-deployer模块监控和捕获单个KubernetesNode资源创建完成事件,通过KubernetesNode资源对象获得虚拟机IP信息,连接虚拟机并下载部署脚本到虚拟机上。此时虚拟机分为master和node两种角色,如果是master节点则部署master节点相关服务,如etcd、kube-controller-manager、kube-scheduler、kubelet等,如果是node节点则部署node相关服务,如kubelet。
S16、kube-cluster-operator模块监控和捕获单个KubernetesNode资源部署完成事件,等待集群下所有KubernetesNode部署完成,则更新KubernetesCluster集群状态为Ready状态。至此,整个集群部署完毕。
集群创建完成之后,用户通过查看KubernetesCluster对象获得集群的VIP地址,从而访问Kubernetes集群服务。
如图4所示,Kubernetes虚拟机集群的故障恢复流程包括:
S21、kube-cluster-operator模块监控和捕获KubernetesNode资源更新事件,通过Kubernetes的Apiserver获得KubernetesNode对象,获得节点状态和节点状态更新时间,确认检测节点是否存活,如果超过设定的超时时间(例如5分钟),则启动故障恢复流程,标记KubernetesCluster为NotReady状态;
S22、kube-cluster-operator模块通过Kubernetes的Apiserver获得KubernetesNode关联的KubernetesCluster对象,取出其中虚拟机模板信息,调用虚拟机模块创建单个虚拟机资源对象,并把虚拟机资源ID关联到KubernetesNode对象;同时删除故障的KubernetesNode资源对象;
S23、虚拟机模块根据虚拟机资源对象创建和删除实际底层虚拟机;
S24、kube-cluster-deployer模块监控和捕获单个KubernetesNode资源创建完成事件,得到新创建得Kubernetes资源对象,通过此对象获得虚拟机IP信息,连接虚拟机并下载部署脚本到虚拟机上,并执行部署服务。
S25、kube-cluster-operator模块监控和捕获单个KubernetesNode资源部署完成事件,等待集群下所有KubernetesNode部署完成,则更新KubernetesCluster集群状态为Ready状态。至此,整个集群故障恢复完毕。
如图5所示,Kubernetes虚拟机集群的弹性扩缩流程包括:
S31、KubernetesNode定期上报负载数据,如CPU、内存、磁盘使用率;
S32、kube-cluster-operator模块监控和捕获KubernetesNode资源更新事件,统计每个KubernetesCluster下的KubernetesNode负载数据,计算这个集群负载数据,如果达到阈值(例如75%),则启动弹性扩容流程,标记KubernetesCluster为Scaling状态;;
S33、kube-cluster-operator模块通过Kubernetes的Apiserver获得KubernetesNode关联的KubernetesCluster对象,取出其中虚拟机模板信息,调用虚拟机模块创建单个虚拟机资源对象,并把虚拟机资源ID关联到KubernetesNode对象;
S34、虚拟机模块根据虚拟机资源对象创建实际底层虚拟机;
S35、kube-cluster-deployer模块监控和捕获单个KubernetesNode资源创建完成事件,得到新创建得Kubernetes资源对象,通过此对象获得虚拟机IP信息,连接虚拟机并下载部署脚本到虚拟机上,并执行部署服务。
S36、kube-cluster-operator模块监控和捕获单个KubernetesNode资源部署完成事件,等待集群下所有KubernetesNode部署完成,则更新KubernetesCluster集群状态为Ready状态。至此,整个集群扩容完毕。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种Kubernetes上部署Kubernetes虚拟机集群的系统,其特征在于,包括kube-cluster-operator模块和kube-cluster-deployer模块,其中:
所述kube-cluster-operator模块是Kubernetes虚拟机集群的Operator,使用CRD的方式自定义集群资源;
所述kube-cluster-deployer模块是Kubernetes虚拟机集群的部署服务,用于在虚拟机集群创建、扩容、故障恢复时,部署Kubernetes基础服务到新的虚拟机节点中。
2.如权利要求1所述的Kubernetes上部署Kubernetes虚拟机集群的系统,其特征在于,所述kube-cluster-operator模块和kube-cluster-deployer模块用于不断监控和捕获从Kubernetes订阅的事件,如发现达到既定条件,则触发既定操作。
3.如权利要求2所述的Kubernetes上部署Kubernetes虚拟机集群的系统,其特征在于,使用CRD的方式自定义集群资源具体为,使用CRD的方式设计KubernetesCluster、KubernetesNode两种资源类型,其中:
KubernetesCluster面向给用户,用户可使用YAML格式的文件创建KubernetesCluster资源,其中包含集群信息;
KubernetesNode资源由kube-cluster-operator模块根据用户定义的KubernetesCluster动态创建,与实际虚拟机一一对应,表示每个虚拟机的状态。
4.如权利要求3所述的Kubernetes上部署Kubernetes虚拟机集群的系统,其特征在于,所述集群信息包括:
集群master节点个数和node节点个数,虚拟机节点的CPU、内存、磁盘信息。
5.如权利要求1或2所述的Kubernetes上部署Kubernetes虚拟机集群的系统,其特征在于:
所述kube-cluster-deployer模块包含部署流程脚本,用于在已分配的虚拟机上检查环境信息,部署docker、etcd、kubelet、kubernetes-controller-manager、kubernetes-scheduler服务,检测部署结果等;并且部署服务也将部署监控服务到虚拟机节点中,用于支持对集群的弹性伸缩功能。
6.基于权利要求1至5任一项所述系统的Kubernetes上部署Kubernetes虚拟机集群的方法,其特征在于,包括:
在Kubernetes虚拟机集群部署阶段,kube-cluster-operator模块监控KubernetesCluster CRD资源的创建,再调用虚拟机服务逐个创建虚拟机;
在故障恢复监控阶段,kube-cluster-operator模块监控KubernetesNode的状态,如果发现某个故障则重新创建一个虚拟机集群节点;
在弹性伸缩监控阶段,kube-cluster-operator模块监控KubernetesCluster的负载水平,如果发现达到阈值,则启动扩容流程,创建新的虚拟机节点加入集群。
7.如权利要求6所述的Kubernetes上部署Kubernetes虚拟机集群的方法,其特征在于,Kubernetes虚拟机集群部署阶段,包括:
用户通过YAML创建一个KubernetesCluster类型资源,YAML包含虚拟机集群所需信息;
kube-cluster-operator模块监控和捕获单个KubernetesCluster资源创建事件,通过Kubernetes的Apiserver获得KubernetesCluster对象,取出其中虚拟机模板信息,根据这些信息创建KubernetesNode对象,KubernetesNode对象个数由KubernetesCluster定义的节点个数决定;
kube-cluster-operator模块监控和捕获单个KubernetesNode资源创建事件,通过Kubernetes的Apiserver获得KubernetesNode对象,取出其中虚拟机信息,调用虚拟机模块创建单个虚拟机资源对象,并把虚拟机资源ID关联到KubernetesNode对象;
虚拟机模块根据虚拟机资源对象创建实际底层虚拟机;
kube-cluster-deployer模块监控和捕获单个KubernetesNode资源创建完成事件,通过KubernetesNode资源对象获得虚拟机IP信息,连接虚拟机并下载部署脚本到虚拟机上;
kube-cluster-operator模块监控和捕获单个KubernetesNode资源部署完成事件,等待集群下所有KubernetesNode部署完成,则更新KubernetesCluster集群状态为Ready状态。
8.如权利要求7所述的Kubernetes上部署Kubernetes虚拟机集群的方法,其特征在于,连接虚拟机并下载部署脚本到虚拟机上,包括:
虚拟机分为master和node两种角色,如果是master节点则部署master节点相关服务;如果是node节点则部署node相关服务。
9.如权利要求6或7所述的Kubernetes上部署Kubernetes虚拟机集群的方法,其特征在于,故障恢复监控阶段包括:
kube-cluster-operator模块监控和捕获KubernetesNode资源更新事件,通过Kubernetes的Apiserver获得KubernetesNode对象,获得节点状态和节点状态更新时间,确认检测节点是否存活,如果超过设定的超时时间,则启动故障恢复流程,标记KubernetesCluster为NotReady状态;
kube-cluster-operator模块通过Kubernetes的Apiserver获得KubernetesNode关联的KubernetesCluster对象,取出其中虚拟机模板信息,调用虚拟机模块创建单个虚拟机资源对象,并把虚拟机资源ID关联到KubernetesNode对象;同时删除故障的KubernetesNode资源对象;
虚拟机模块根据虚拟机资源对象创建和删除实际底层虚拟机;
kube-cluster-deployer模块监控和捕获单个KubernetesNode资源创建完成事件,得到新创建得Kubernetes资源对象,通过此对象获得虚拟机IP信息,连接虚拟机并下载部署脚本到虚拟机上,并执行部署服务;
kube-cluster-operator模块监控和捕获单个KubernetesNode资源部署完成事件,等待集群下所有KubernetesNode部署完成,则更新KubernetesCluster集群状态为Ready状态。
10.如权利要求6或7所述的Kubernetes上部署Kubernetes虚拟机集群的方法,其特征在于,弹性伸缩监控阶段包括:
KubernetesNode定期上报负载数据;
kube-cluster-operator模块监控和捕获KubernetesNode资源更新事件,统计每个KubernetesCluster下的KubernetesNode负载数据,计算这个集群负载数据,如果达到阈值,则启动弹性扩容流程,标记KubernetesCluster为Scaling状态;
kube-cluster-operator模块通过Kubernetes的Apiserver获得KubernetesNode关联的KubernetesCluster对象,取出其中虚拟机模板信息,调用虚拟机模块创建单个虚拟机资源对象,并把虚拟机资源ID关联到KubernetesNode对象;
虚拟机模块根据虚拟机资源对象创建实际底层虚拟机;
kube-cluster-deployer模块监控和捕获单个KubernetesNode资源创建完成事件,得到新创建得Kubernetes资源对象,通过此对象获得虚拟机IP信息,连接虚拟机并下载部署脚本到虚拟机上,并执行部署服务;
kube-cluster-operator模块监控和捕获单个KubernetesNode资源部署完成事件,等待集群下所有KubernetesNode部署完成,则更新KubernetesCluster集群状态为Ready状态。
CN202110004987.4A 2021-01-04 2021-01-04 Kubernetes上部署Kubernetes虚拟机集群的方法与系统 Active CN112667362B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110004987.4A CN112667362B (zh) 2021-01-04 2021-01-04 Kubernetes上部署Kubernetes虚拟机集群的方法与系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110004987.4A CN112667362B (zh) 2021-01-04 2021-01-04 Kubernetes上部署Kubernetes虚拟机集群的方法与系统

Publications (2)

Publication Number Publication Date
CN112667362A true CN112667362A (zh) 2021-04-16
CN112667362B CN112667362B (zh) 2022-06-21

Family

ID=75412806

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110004987.4A Active CN112667362B (zh) 2021-01-04 2021-01-04 Kubernetes上部署Kubernetes虚拟机集群的方法与系统

Country Status (1)

Country Link
CN (1) CN112667362B (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113220420A (zh) * 2021-05-18 2021-08-06 北京百度网讯科技有限公司 服务监控方法、装置、设备、存储介质及计算机程序产品
CN113590494A (zh) * 2021-08-30 2021-11-02 北京同创永益科技发展有限公司 一种云原生环境脆弱性的自动化测试方法
CN113835963A (zh) * 2021-09-26 2021-12-24 上海电器科学研究所(集团)有限公司 一种基于Kubernetes自动化部署工具集成方法
CN113934711A (zh) * 2021-12-16 2022-01-14 天津南大通用数据技术股份有限公司 一种自动化部署gbase8s集群的方法
CN114003302A (zh) * 2021-10-12 2022-02-01 浪潮云信息技术股份公司 一种基于kubernetes的资源运维管理方法及系统
CN114138410A (zh) * 2021-11-15 2022-03-04 道和邦(广州)电子信息科技有限公司 SMG-vmecloneVMOS可迭代虚拟机克隆操作系统
CN114253583A (zh) * 2021-12-23 2022-03-29 上海甄云信息科技有限公司 一种基于Kubernetes Operator的蓝绿部署方法、装置、系统
CN114374692A (zh) * 2021-12-02 2022-04-19 浪潮云信息技术股份公司 一种多容器集群管理的实现方法及系统
CN114816665A (zh) * 2022-04-22 2022-07-29 北京志凌海纳科技有限公司 混合编排系统及超融合架构下虚拟机容器资源混合编排方法
WO2023082389A1 (zh) * 2021-11-12 2023-05-19 深圳前海微众银行股份有限公司 任务处理方法、设备、存储介质及程序产品
CN117908904A (zh) * 2024-03-19 2024-04-19 麒麟软件有限公司 一种k8s集群部署及运维管理的方法和系统
US12034647B2 (en) 2022-08-29 2024-07-09 Oracle International Corporation Data plane techniques for substrate managed containers

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110502244A (zh) * 2019-07-11 2019-11-26 新华三大数据技术有限公司 部署Kubernetes集群的方法及装置
US20200174834A1 (en) * 2018-12-03 2020-06-04 Salesforce.Com, Inc. Reasoning engine for automated operations management
CN111522628A (zh) * 2020-04-27 2020-08-11 上海仪电(集团)有限公司中央研究院 一种基于OpenStack的Kubernetes集群搭建部署方法、架构及存储介质
CN111813419A (zh) * 2020-07-09 2020-10-23 浪潮云信息技术股份公司 一种基于kubernetes声明式管理裸机生命周期的方法
US20200348918A1 (en) * 2019-05-05 2020-11-05 Mastercard International Incorporated Automated core services bootstrap for on-premises clusters

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200174834A1 (en) * 2018-12-03 2020-06-04 Salesforce.Com, Inc. Reasoning engine for automated operations management
US20200348918A1 (en) * 2019-05-05 2020-11-05 Mastercard International Incorporated Automated core services bootstrap for on-premises clusters
CN110502244A (zh) * 2019-07-11 2019-11-26 新华三大数据技术有限公司 部署Kubernetes集群的方法及装置
CN111522628A (zh) * 2020-04-27 2020-08-11 上海仪电(集团)有限公司中央研究院 一种基于OpenStack的Kubernetes集群搭建部署方法、架构及存储介质
CN111813419A (zh) * 2020-07-09 2020-10-23 浪潮云信息技术股份公司 一种基于kubernetes声明式管理裸机生命周期的方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CAICLOUD: "Lumins Technolgies一年来在生产中使用Kubernetes的经验", 《HTTP://MY.OSCHINA.NET/CAICLOUD/BLOG/699410》 *
颂歌: "揭秘Kubernetes Operator", 《WWW.DOCKONE.IO/ARTICLE/8769》 *

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113220420A (zh) * 2021-05-18 2021-08-06 北京百度网讯科技有限公司 服务监控方法、装置、设备、存储介质及计算机程序产品
CN113590494A (zh) * 2021-08-30 2021-11-02 北京同创永益科技发展有限公司 一种云原生环境脆弱性的自动化测试方法
CN113590494B (zh) * 2021-08-30 2022-01-11 北京同创永益科技发展有限公司 一种云原生环境脆弱性的自动化测试方法
CN113835963A (zh) * 2021-09-26 2021-12-24 上海电器科学研究所(集团)有限公司 一种基于Kubernetes自动化部署工具集成方法
CN114003302A (zh) * 2021-10-12 2022-02-01 浪潮云信息技术股份公司 一种基于kubernetes的资源运维管理方法及系统
WO2023082389A1 (zh) * 2021-11-12 2023-05-19 深圳前海微众银行股份有限公司 任务处理方法、设备、存储介质及程序产品
CN114138410A (zh) * 2021-11-15 2022-03-04 道和邦(广州)电子信息科技有限公司 SMG-vmecloneVMOS可迭代虚拟机克隆操作系统
CN114374692A (zh) * 2021-12-02 2022-04-19 浪潮云信息技术股份公司 一种多容器集群管理的实现方法及系统
CN113934711B (zh) * 2021-12-16 2022-03-15 天津南大通用数据技术股份有限公司 一种自动化部署gbase8s集群的方法
CN113934711A (zh) * 2021-12-16 2022-01-14 天津南大通用数据技术股份有限公司 一种自动化部署gbase8s集群的方法
CN114253583A (zh) * 2021-12-23 2022-03-29 上海甄云信息科技有限公司 一种基于Kubernetes Operator的蓝绿部署方法、装置、系统
CN114816665A (zh) * 2022-04-22 2022-07-29 北京志凌海纳科技有限公司 混合编排系统及超融合架构下虚拟机容器资源混合编排方法
US12034647B2 (en) 2022-08-29 2024-07-09 Oracle International Corporation Data plane techniques for substrate managed containers
CN117908904A (zh) * 2024-03-19 2024-04-19 麒麟软件有限公司 一种k8s集群部署及运维管理的方法和系统
CN117908904B (zh) * 2024-03-19 2024-05-31 麒麟软件有限公司 一种k8s集群部署及运维管理的方法和系统

Also Published As

Publication number Publication date
CN112667362B (zh) 2022-06-21

Similar Documents

Publication Publication Date Title
CN112667362B (zh) Kubernetes上部署Kubernetes虚拟机集群的方法与系统
CN111522628B (zh) 一种基于OpenStack的Kubernetes集群搭建部署方法、架构及存储介质
CN109828831B (zh) 一种人工智能云平台
CN109062655B (zh) 一种容器化云平台及服务器
CN105357296B (zh) 一种Docker云平台下弹性缓存系统
CN105389243B (zh) 一种容器监控方法和装置
CN105025095B (zh) 实现云计算弹性服务的集群架构
CN110417613B (zh) 基于Jmeter的分布式性能测试方法、装置、设备及存储介质
CN105703940B (zh) 一种面向多级调度分布式并行计算的监控系统及监控方法
CN107766157A (zh) 基于国产cpu和os的分布式容器集群框架实现方法
CN108737168B (zh) 一种基于容器的微服务架构应用自动构建方法
CN108388472A (zh) 一种基于Docker集群的弹性任务调度系统及方法
CN107220100A (zh) 一种开发运维方法、装置及云计算PaaS平台
CN113569987A (zh) 模型训练方法和装置
CN111274002A (zh) 支撑paas平台构建方法、装置、计算机设备及存储介质
CN111324599B (zh) 一种区块链实验系统及管理方法
US10498817B1 (en) Performance tuning in distributed computing systems
CN113204353B (zh) 一种大数据平台组件部署方法及装置
CN113422692A (zh) 一种K8s集群内节点故障检测及处理方法、装置及存储介质
Lin et al. Tracing function dependencies across clouds
CN103077034A (zh) 混合虚拟化平台java应用迁移方法与系统
CN116450300A (zh) 一种基于容器技术的并行自动化GitOps系统
US11656944B1 (en) Code function checkpoint and restore
Tang et al. Application centric lifecycle framework in cloud
CN113835834A (zh) 一种基于k8s容器集群计算节点的扩容方法及系统

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
GR01 Patent grant
GR01 Patent grant