本发明属于云计算iaas层底层构建,尤其涉及一种高效的虚拟机集群端口映射及管理方法。
背景技术:
1、云计算iaas层底层架构目前主流还是以openstack为主,新兴的云原生技术已经势不可挡。基于kubernetes+kubevirt来构建虚拟机资源池也不是什么新鲜事了,但相对openstack云桌面完善的解决方案(如spice协议),新兴的容器虚拟机在网络端口映射及远程桌面协议标准上仍然是不够成熟的:
2、1、容器虚拟机使用k8s pod的方式承载虚拟机,并不使用裸机上的kvm/qemu,所以无法实现直接向裸机上的穿透。
3、2、采用类向日葵的视频压缩传输协议,虚拟机内部agent需要将连接端口对外网曝露
4、3、虚拟机网络地址是nat转换后的私网地址,外部机器无法直接访问。
5、4、单独开发帐号服务器无法根据机器变化动态调整列表。
技术实现思路
1、本发明所要解决的技术问题是针对背景技术的不足提供一种高效的虚拟机集群端口映射及管理方法,其实现容器虚拟机架构的复杂网络环境下虚拟机内部agent的服务端口对外的曝露问题;并对实现对机器进行分组管理、使用状态查看、绑定、解绑、销毁等操作。
2、本发明为解决上述技术问题采用以下技术方案:
3、一种高效的虚拟机集群端口映射及管理方法,具体包含如下步骤;
4、步骤1,利用kubevirt实现虚拟机ip与pod ip的对等;
5、其中,kubevirt为k8s的虚拟机支持插件;虚拟机ip为进入虚拟机后查询到的ip地址;pod ip为k8s的pod的ip,其中,pod是用于包裹虚拟机;
6、步骤2,使用kubernetes serice port实现pod ip上的端口到k8s host ip上service port映射;
7、kubernetes serice port:是k8s的一种资源类型,service来进行服务的转发和负载均衡;k8s hostip为k8s物理主机上的ip地址;service port为serice port是k8s集群内部服务之间访问service的入口ip;
8、步骤3,自动检测、监视虚拟机的创建、销毁、连接失败情况,自动调用命令完成映射的动态管理;
9、步骤4,将机器名与虚拟机ip映射管理起来,并对机器进行分组;
10、步骤5,实现客户端可通过api列表查看各个分组空闲与使用情况、客户端与机器的绑定与解绑、对机器的重置操作。
11、作为本发明高效的虚拟机集群端口映射及管理方法的进一步优选方案,在步骤5中,客户端连接具体如下:
12、(1)客户端输入用户密码;
13、(2)在配置文件中检测是否鉴权;若是则统一门户校验,若是则统一门户校验;若失败则拒绝登录,若失败三次则调用重置api;
14、(3)选取要登录的rsname;
15、(4)客户端调用vmcontroller api;
16、(5)依据返回值进行连接;
17、(6)若连接成功,初始化操作;
18、其中,重置api:指的是第10条中的delete$baseurl/api/v1/<port>接口;
19、rsname为业务组名称这样的一个输入参数;
20、username为虚拟机使用者的登录名;
21、vmcontroller api为所罗列的各个api。
22、作为本发明高效的虚拟机集群端口映射及管理方法的进一步优选方案,在步骤5中,所述api列表包含查询虚拟机集群列表:
23、get$baseurl/api/v1/rslist。
24、作为本发明高效的虚拟机集群端口映射及管理方法的进一步优选方案,在步骤5中,所述api列表包含查询用户正在使用的映射端口列表:
25、get$baseurl/api/v1/userlist。
26、作为本发明高效的虚拟机集群端口映射及管理方法的进一步优选方案,在步骤5中,所述api列表包含查询vmcontroller log:
27、get$baseurl/api/v1/log/<lines>。
28、作为本发明高效的虚拟机集群端口映射及管理方法的进一步优选方案,在步骤5中,所述api列表包含查询用户正在使用的映射端口:
29、get$baseurl/api/v1/<rsname>/<username>。
30、作为本发明高效的虚拟机集群端口映射及管理方法的进一步优选方案,在步骤5中,api列表包含用nat的ip地址查询虚拟机名:
31、get$baseurl/api/v1/vmname/<ip address>。
32、作为本发明高效的虚拟机集群端口映射及管理方法的进一步优选方案,在步骤5中,api列表包含为用户申请空闲的映射端口:
33、post$baseurl/api/v1/bind用body的方式传入username和rsname。
34、作为本发明高效的虚拟机集群端口映射及管理方法的进一步优选方案,在步骤5中,api列表包含为用户释放正在使用的映射端口:
35、post$baseurl/api/v1/unbind用body的方式传入username和rsname。
36、作为本发明高效的虚拟机集群端口映射及管理方法的进一步优选方案,在步骤5中,api列表包含销毁虚拟机及相应的映射端口:
37、delete$baseurl/api/v1/<port>。
38、本发明采用以上技术方案与现有技术相比,具有以下技术效果:
39、1、本发明克服了容器虚拟机中无法spice协议管理、连接虚拟机的问题;
40、2、本发明相比向日葵克服了无公网连接下无法使用的问题,无服务器中转也降低了成本、降低了延时,提升了质量;
41、3、本发明使用go语言原生调用k8s接口,快速处理机器新建、绑定、解绑、销毁时机器扫描,速度及安全性都有保证;
42、4、本发明使用极简化的redis数据库及映射关系管理,查询及更新变化快。最大限度提升速度体验;
43、5、本发明所有功能整合成一个微服务,天然继承了k8s高可用特性,保证该服务的稳定及redis的独立部署;
44、6、本发明自研开发,灵活独立,扩展性强,比如可增加更多端口的映射和管理。
1.一种高效的虚拟机集群端口映射及管理方法,其特征在于:具体包含如下步骤;
2.根据权利要求1所述的高效的虚拟机集群端口映射及管理方法,其特征在于:在步骤5中,客户端连接具体如下:
3.根据权利要求1所述的高效的虚拟机集群端口映射及管理方法,其特征在于:在步骤5中,所述api列表包含查询虚拟机集群列表:
4.根据权利要求1所述的高效的虚拟机集群端口映射及管理方法,其特征在于:在步骤5中,所述api列表包含查询用户正在使用的映射端口列表:
5.根据权利要求1所述的高效的虚拟机集群端口映射及管理方法,其特征在于:在步骤5中,所述api列表包含查询vmcontroller log:
6.根据权利要求1所述的高效的虚拟机集群端口映射及管理方法,其特征在于:在步骤5中,所述api列表包含查询用户正在使用的映射端口:
7.根据权利要求1所述的高效的虚拟机集群端口映射及管理方法,其特征在于:在步骤5中,api列表包含用nat的ip地址查询虚拟机名:
8.根据权利要求1所述的高效的虚拟机集群端口映射及管理方法,其特征在于:在步骤5中,api列表包含为用户申请空闲的映射端口:
9.根据权利要求1所述的高效的虚拟机集群端口映射及管理方法,其特征在于:在步骤5中,api列表包含为用户释放正在使用的映射端口:
10.根据权利要求1所述的高效的虚拟机集群端口映射及管理方法,其特征在于:在步骤5中,api列表包含销毁虚拟机及相应的映射端口: