System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于虚拟化,具体提供一种基于自主架构服务器的虚拟机管理和调度方法。
技术介绍
1、虚拟化技术的广泛应用,实现了it资源的动态分配、灵活调度、跨域共享,提高了it资源的利用率,使资源能够真正成为社会基础设施,服务于各行各业的应用需求。kvm(kernel-based virtual machine)是一种基于linux内核的虚拟化技术,主要负责cpu和内存虚拟化,与qemu负责i/o设备的虚拟化功能相结合,形成了一套完整的虚拟化平台,能够在同一物理服务器上支持多种不同客户机系统(即虚拟机)的运行。
2、容器技术与传统的虚拟化技术不同,不需要模拟完整的软硬件系统,就能在物理机上创建一个与物理机系统相互隔离的环境。随着容器技术的发展,出现了许多虚拟化与容器技术相结合的尝试,如利用kolla项目容器化部署openstack云平台,利用magnum组件在openstack云平台中实现对docker容器的管理,利用容器化的webvirtmgr服务管理虚拟机,利用kubevirt项目在kubernetes容器平台中管理虚拟机等。虚拟化技术与容器技术在这些项目中相辅相成,利用各自的优势打破了原有的技术框架。
3、其中kubevirt是一种比较新的虚拟机管理方法,它以容器的形式运行虚拟机,充分借助了k8s(kubernetes)平台灵活的容器调度和管理能力,让虚拟机像容器一样被k8s管理调度。它提供了一个统一的开发平台,用户在同一个共享环境中既能够对容器化的应用程序构建、修改、部署,也能对虚拟机进行同样的操作。在
4、kubevirt虽然提供了一套容器化的虚拟机管理的方法,但是在自主架构服务器平台上使用却存在问题:在创建虚拟机时,k8s利用默认的调度器来调度虚拟机实例,默认的调度器根据k8s节点剩余的物理内存来判断是否将虚拟机调度到该节点。但是自主架构服务器平台分配虚拟化内存的方式比较特殊,是基于预分配的保留内存进行分配(即保留内存专门提供给虚拟机使用,物理机无法使用),使用默认的k8s调度器时,无法获取到自主架构服务器平台实际剩余的虚拟化内存大小,导致创建虚拟机时资源判断错误引发异常。因此,亟需设计一种针对自主架构服务器平台的k8s调度器,根据其虚拟化内存分配规则来管理和调度虚拟机。
技术实现思路
1、本专利技术的目的在于克服现有技术中的不足,提供一种针对自主架构服务器平台的k8s调度器,根据其虚拟化内存分配规则来管理和调度虚拟机。
2、为达到上述目的,本专利技术是采用下述技术方案实现的:
3、第一方面,本专利技术提供了一种基于自主架构服务器的虚拟机管理和调度方法,包括以下步骤:
4、步骤1:在k8s容器平台中部署虚拟化内存监控服务,所述虚拟化内存监控服务用于监控k8s集群中各个节点的虚拟化内存使用情况;
5、步骤2:在k8s容器平台中部署swscheduler自定义调度器,所述swscheduler自定义调度器用于获取请求的虚拟化内存大小,根据所述各个节点的虚拟化内存使用情况和请求的虚拟化内存大小,将虚拟机调度到满足虚拟化内存需求的节点。
6、步骤3:在k8s容器平台中部署kubevirt服务,所述kubevirt服务用于通过vm模板创建和管理虚拟机,在使用vm模板创建虚拟机时,指定虚拟机调度器为所述swscheduler自定义调度器。
7、进一步的,在k8s容器平台中部署虚拟化内存监控服务,包括:
8、步骤1.1:构建并编译虚拟化内存监控程序。
9、步骤1.2:容器化虚拟化内存监控服务,通过dockerfile文件将编译得到的虚拟化内存监控程序打包成docker镜像;
10、步骤1.3:在虚拟化监控程序的配置文件中指定对qemu-kvm进程进行信息采集。通过k8s daemonset的形式将虚拟化监控程序部署到k8s集群。
11、进一步的,构建并编译虚拟化内存监控程序,包括:
12、步骤1.1.1:定义swkvmmemdesc prometheus监控指标来表示自主架构服务器上虚拟化内存,并从系统的/proc/cmdline文件中获取内核启动参数中定义的虚拟化内存大小;
13、步骤1.1.2:获取所有qemu-kvm进程在系统中对应的pid号,从系统的/proc/<pid>/smaps文件中读取/dev/zero起止地址来计算虚拟机已占用的虚拟化内存大小;
14、步骤1.1.3:将获取的虚拟化内存大小情况传入prometheus接口,通过自定义exporter服务的/metric端点提供对qemu-kvm进程的监控服务,通过访问http://nodeip:9256/metrics来获取node节点的监控数据。
15、进一步的,在k8s容器平台中部署swscheduler自定义调度器,包括:
16、步骤2.1:利用scheduler framework提供的调度器插件接口,实现filterplugin过滤器插件,得到自定义调度器,编译swscheduler自定义调度器程序。
17、步骤2.2:容器化swscheduler自定义调度器服务,通过dockerfile文件将编译得到的自定义调度器程序打包成docker镜像;
18、步骤2.3:为swscheduler自定义调度器创建k8s rbac权限,将swscheduler通过yaml文件以声明式的方式部署到k8s集群。
19、进一步的,所述swscheduler自定义调度器程序被编译以执行以下步骤:
20、从虚拟化内存监控程序中获取虚拟化内存使用情况;
21、计算节点剩余可用的虚拟化内存大小,剩余可用的虚拟化内存大小计算公式如下:
22、剩余可用的虚拟化内存大小=内核参数中定义的虚拟化内存大小-节点上所有qemu-kvm进程占用的总虚拟化内存大小
23、获取k8s vm模板中虚拟机实例vmi资源请求的虚拟化内存大小;
24、判断k8s节点的剩余可用虚拟化内存是否满足vmi资源请求的内存大小,若满足,则调度vmi对应的virt-launcher pod到对应的节点;若不满足,则无法调度virt-launcherpod,virt-launcher pod处于pending状态,直到有满足条件的节点出现。
25、进一步的,步骤3:在k8s容器平台中部署kubevirt服务,所述kubevirt服务用于通过vm模板创建和管理虚拟机,在使用vm模板创建虚拟机时,指定虚拟机调度器为所述swscheduler自定义调度器,包括:
26、步骤3.1:在k8s集群中部署kubevirt服务,实现通过自定义资源vmi来管理虚拟机;本文档来自技高网...
【技术保护点】
1.一种基于自主架构服务器的虚拟机管理和调度方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的基于自主架构服务器的虚拟机管理和调度方法,其特征在于,在k8s容器平台中部署虚拟化内存监控服务,包括:
3.根据权利要求2所述的基于自主架构服务器的虚拟机管理和调度方法,其特征在于,构建并编译虚拟化内存监控程序,包括:
4.根据权利要求1所述的基于自主架构服务器的虚拟机管理和调度方法,其特征在于,在k8s容器平台中部署swscheduler自定义调度器,包括:
5.根据权利要求4所述的基于自主架构服务器的虚拟机管理和调度方法,其特征在于,所述swscheduler自定义调度器程序被编译以执行以下步骤:
6.根据权利要求1所述的基于自主架构服务器的虚拟机管理和调度方法,其特征在于,在k8s容器平台中部署kubevirt服务,所述kubevirt服务用于通过vm模板创建和管理虚拟机,在使用vm模板创建虚拟机时,指定虚拟机调度器为所述swscheduler自定义调度器,包括:
7.一种基于自主架构服务器的虚拟机管理
8.根据权利要求7所述的基于自主架构服务器的虚拟机管理和调度方法,其特征在于,监控k8s集群中各个节点的虚拟化内存使用情况,包括:
9.根据权利要求7所述的基于自主架构服务器的虚拟机管理和调度方法,其特征在于,获取请求的虚拟化内存大小,根据所述各个节点的虚拟化内存使用情况和请求的虚拟化内存大小,将虚拟机调度到满足虚拟化内存需求的节点,包括:
10.根据权利要求7所述的基于自主架构服务器的虚拟机管理和调度方法,其特征在于,通过vm模板创建和管理虚拟机,包括:
...【技术特征摘要】
1.一种基于自主架构服务器的虚拟机管理和调度方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的基于自主架构服务器的虚拟机管理和调度方法,其特征在于,在k8s容器平台中部署虚拟化内存监控服务,包括:
3.根据权利要求2所述的基于自主架构服务器的虚拟机管理和调度方法,其特征在于,构建并编译虚拟化内存监控程序,包括:
4.根据权利要求1所述的基于自主架构服务器的虚拟机管理和调度方法,其特征在于,在k8s容器平台中部署swscheduler自定义调度器,包括:
5.根据权利要求4所述的基于自主架构服务器的虚拟机管理和调度方法,其特征在于,所述swscheduler自定义调度器程序被编译以执行以下步骤:
6.根据权利要求1所述的基于自主架构服务器的虚拟机管理和调度方法,其特征在于,在k8s容器平台中...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。