一种基于kubernetes声明式编排管理虚机生命周期的方法与流程

文档序号:23090075发布日期:2020-11-27 12:41阅读:145来源:国知局
一种基于kubernetes声明式编排管理虚机生命周期的方法与流程

本发明涉及kubernetes云原生计算技术领域,具体地说是一种基于kubernetes声明式编排管理虚机生命周期的方法。



背景技术:

现在编排管理虚机的方式有两种:openstack社区kata项目和开源项目terraform多云管理工具。

kata项目主要是将kata-container可以当做docker的一个插件,启动kata-container可以通过docker命令。kata最大的亮点是解决了传统容器共享内核的安全和隔离问题,办法是让每个容器运行在一个轻量级的虚拟机中,使用单独的内核,但是虚机的使用仅限于openstack而且不够灵活,不能满足复杂场景的需求。

terraform是通过适配不同云平台的provider调用api的方式管理虚拟机,支持各种厂商的云平台,也可以自己开发扩展terraform的provider插件,对接自己的云平台。但是terraform是用命令行执行声明式管理,需要操作人员掌握terraform的语法,会编写对应的模板文件;执行命令行是同步操作,只有执行完所有步骤命令行才结束,人机交互的操作较多,无法自动化,、效率较低。

kata和terraform两种方式都不能满足快速灵活的编排管理虚机。为了提升管理虚机的效率和降低实施运维难度,必需开发一种新的方法,以提升对虚拟机的编排管理能力。



技术实现要素:

本发明的技术任务是针对现有技术kata和terraform两种方式都不能满足快速灵活的编排管理虚机的不足,为了提升管理虚机的效率和降低实施运维难度,结合kubernetes的operator框架技术,将terraform的人工操作实施运维人员的经验都代码化到kubernetes的vm-operator工具。借助kubernetes云原生技术,将虚拟机整合到kubernetes的自定义资源,提升对虚拟机的编排管理能力。

本发明解决其技术问题所采用的技术方案是:

一种基于kubernetes声明式编排管理虚机生命周期的方法,其特征在于,该方法基于kubernetes里的开源的operator技术框架,实现virtualmetaoperator工具,virtualmetaoperator工具通过资源对象状态监测和调用terraform命令行的方式实现自动化管理虚拟机。

可选地,所述virtualmetaoperator工具由vm-controller+vm-crd+provider-crd、vmc-api组件构成。

可选地,所述kubernetes里的开源的operator:是一个感知应用状态的控制器,通过扩展kubernetesapi来自动创建、管理和配置应用实例。

可选地,所述crd:是kubernetes里用户自定义的资源类型;

virtaulmachine-crd:声明式定义virtaulmachine虚拟机的元数据,包含虚拟机配置相关信息;

provider-crd声明式定义virtaulmachine虚拟机辅助的元数据资源模型,包含云平台的相关信息。

可选地,所述virtaulmachine-controller:利用kubernetescontroller的机制,通过监控vm-crd或vmstateful-crd资源对象的状态来触发协调逻辑,通过与vmc-api的接口调用驱动不同的操作步骤。

可选地,所述触发协调逻辑包括创建、删除、更新虚机或虚机组相关操作。

可选地,所述vmc-api:一个提供api接口的后端服务,该组件封装了terraform的命令行工具来管理虚机的生命周期,用于提供异步接口为vm-controller服务。

可选地,创建vm的资源对象,实现流程如下:

101、创建资源对象

apiversion:infra.x.com/v1alpha1

kind:vm

metadata:

name:example-vm

spec:

#addfieldshere

providernam:openstack

...

apiversion:infra.x.com/v1alpha1

kind:provider

metadata:

name:openstack

spec:

#addfieldshere

auth_url:http://10.1.10.4:8090/

...

102、vm-controller会监测到vm的新增对象,启动创建虚机流程,调用vmc-api的创建虚机接口;

103:vmc-api接到创建虚机的请求会校验参数,然后将返回响应,并在后台启动一个任务执行shell命令调用terraform命令行创建虚机;等执行结束后,分析日志结果并通过刷新相应vm-crd资源的状态来反向通知vm-controller

104、vm-controller监测到vm资源对象的状态发生变化后,如果是applying_success,vm-controller任务创建虚拟机的terraform命令行执行成功,然后调用vmc-api的监控虚机接口;

105、vmc-api会将虚机加入监控队列里,每隔一段时间检测一次该虚机的ssh是否可用,如果可用,就将vm的状态刷新为running;

106、vm-controller监测到虚机状态变为running,即认为创建的虚机已经可用。

本发明的一种基于kubernetes声明式编排管理虚机生命周期的方法与现有技术相比所产生的有益效果是:

通过本方法可以有效提升多云平台的虚拟机生命周期的管理,降低大批量虚机编排使用的复杂度,提升运维实施的工作效率。

附图说明

为了更清楚地描述本发明一种基于kubernetes声明式编排管理虚机生命周期的方法的工作原理,下面将附上简图作进一步说明。

附图1是本发明一种基于kubernetes声明式编排管理虚机生命周期的方法的示意图;

附图2是本发明创建vm的资源对象的流程图;

附图3是本发明删除vm的资源对象的流程图;

附图4是本发明更新vm的资源对象的流程图;

附图5是本发明监测多台虚拟机的流程图。

具体实施方式

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

如附图1所示,本发明的一种基于kubernetes声明式编排管理虚机生命周期的方法,该方法基于kubernetes里的开源的operator技术框架,实现了virtualmetaoperator工具(简称vm-ooperator),本工具通过资源对象状态监测和调用terraform命令行的方式实现自动化管理虚拟机。该vm-ooperator工具由virtaulmachine-controller(简称vm-controller)+vm-crd+provider-crd、vmc-api组件构成。

kubernetesoperator:是coreos推出的旨在简化复杂有状态应用管理的框架,它是一个感知应用状态的控制器,通过扩展kubernetesapi来自动创建、管理和配置应用实例。

crd:kubernetes里用户自定义的资源类型:

virtaulmachine-crd:声明式定义virtaulmachine虚拟机的元数据。主要包含虚拟机配置等相关信息。除此之外,还有一些辅助的元数据资源模型,如provider是云平台的相关信息。

virtaulmachine-controller(简称vm-controller):利用kubernetescontroller的机制,通过监控vm-crd或vmstateful(crd)等资源对象的状态来触发协调逻辑(主要是创建、删除、更新虚机或虚机组相关操作),通过与vmc-api的接口调用驱动不同的操作步骤。

vmc-api:一个提供api接口的后端服务,该组件封装了terraform的命令行工具来管理虚机的生命周期,主要价值是提供异步接口为vm-controller服务。

vmstateful(crd):声明式定义有状态的虚拟机组的元数据,主要包含一组虚拟机的主机名规则,管理ip,规格等,可以定制有规则的虚机属性,组内虚机是有分别的。

vmstateless(crd):声明式定义无状态的虚拟机组的元数据,主要包含个数,规格等基本属性,没有个性化需求,组内虚机没有任何区别。

以管理单个虚机为例说明如下:

结合附图2,创建virtualmachine(简称vm)的资源对象,即可触发以下创建虚机的流程:

101、创建资源对象

apiversion:infra.x.com/v1alpha1

kind:vm

metadata:

name:example-vm

spec:

#addfieldshere

providernam:openstack

...

apiversion:infra.x.com/v1alpha1

kind:provider

metadata:

name:openstack

spec:

#addfieldshere

auth_url:http://10.1.10.4:8090/

...

102、vm-controller会监测到vm的新增对象,启动创建虚机流程,调用vmc-api的创建虚机接口;

103:vmc-api接到创建虚机的请求会校验参数,然后将返回响应,并在后台启动一个任务执行shell命令调用terraform命令行创建虚机;等执行结束后,分析日志结果并通过刷新相应vm-crd资源的状态来反向通知vm-controller

104、vm-controller监测到vm资源对象的状态发生变化后,如果是applying_success,vm-controller任务创建虚拟机的terraform命令行执行成功,然后调用vmc-api的监控虚机接口;

105、vmc-api会将虚机加入监控队列里,每隔一段时间检测一次该虚机的ssh是否可用,如果可用,就将vm的状态刷新为running;

106、vm-controller监测到虚机状态变为running,即认为创建的虚机已经可用。

删除vm的资源对象,即可触发附图3删除虚机的流程。

更新vm的资源对象,即可触发附图4更新虚机的流程。

结合附图5,虚拟机资源的编排管理,根据使用目的不同可以分为有状态虚拟机组和无状态虚拟机组,对标kubernetes里的资源对象概念。类似于kubernetes里管理有状态pod和无状态pod集合的概念。与单个虚机的管理类似,vm-controller通过监测虚机组资源对象的状态来驱动批量虚机的创建、删除等操作。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。

尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。

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