k8s集群kubevirt创建虚拟机过程

1、CRD创建:

在虚拟机创建之前,需要创建一个虚拟机定义,它描述了虚拟机的配置和规格。虚拟机定义可以使用Kubernetes的自定义资源(Custom Resource)进行声明,一般以YAML或JSON格式指定。在虚拟机定义中,您需要指定VM的名称、镜像、资源要求(如CPU、内存、存储)、网络设置等。

kubevirt以CRD的形式将VM管理接口接入到kubernetes中,通过一个pod去使用libvirtd管理VM的方式,实现pod与VM的一一对应,做到如同容器一般去管理虚拟机,并且做到与容器一样的资源管理、调度规划。

2、虚拟机创建:

创建VM对象,并同步创建DataVolume/PVC,从镜像仓库中拉取系统模板镜像拷贝至目标调度主机,通过调度、IP分配后生成VMI以及管理VM的Launcher Pod从而启动供业务使用的VM。虚拟机创建分为创建DataVolume和VMI两个流程:

  • 2.1. 创建DataVolume

CDI(containerized-data-importer) 是kubernetes的持久存储管理插件,帮助kubevirt构建磁盘镜像,可以将不同来源的数据源(url、container image、upload....)来填充pvc的能力。 

CDI组件创建对应的PVC并且关联到合适的PV,然后创建Importer Pod,用于将VM定义导入到虚拟化平台中的临时Pod。它的主要作用是读取虚拟机定义文件(如虚拟机清单文件)并将其转换为容器虚拟化平台所需的内部数据结构。这允许虚拟化平台能够理解和解析VM定义,并在其上创建和管理相应的虚拟机实例。再通过临时Importer Pod拉取虚拟机容器镜像绑定到DataVolume生成的PV中,并且将镜像转换成disk.img文件存储在PV中供虚拟机使用。

  • 2.2. 创建VMI

VMI代表虚拟机与物理主机之间的通信接口。VMI定义虚拟机的网络、存储和设备等配置。

等待disk.img转换成功,然后在对应的Node上启动Launcher Pod,virt-launcher是一个容器,负责启动和管理虚拟机实例。Virt-launcher容器在Pod中运行,并提供虚拟机所需的执行环境。

然后将CDI流程生成的PV挂载到Launcher Pod内,当做虚拟机启动的系统盘。Launcher根据VMI的定义生成定义虚拟机的XML文件,然后调用libvirt进程调用Qemu命令创建并且启动虚拟机。VMI会对Launcher Pod状态进行同步,反应VM运行的状态。

虚拟机创建流程图:

 

 

3、虚拟机管理和监控:
一旦虚拟机启动并准备就绪,KubeVirt控制器会更新虚拟机对象(VirtualMachine)的状态,标记为运行状态。
可以使用Kubernetes的资源管理工具(如kubectl)来管理虚拟机,例如扩容、缩容、重启等操作

请注意,这个流程假设已经安装和配置了KubeVirt,并且有一个可供虚拟机使用的镜像。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值