一、需求背景
希望通过租户控制台或运维控制台创建虚机并自定义虚机,对于需要使用自定义镜像批量装机的用户很实用。
下图是云厂商提供的通过云服务器创建系统盘镜像的过程:从现有基础镜像开始,创建一个云服务器实例,自定义该实例,从该实例创建新的系统盘快照,并最终从快照快速创建新的实例。
二、实现流程
1、基于基础镜像创建虚机实例
2、用户自定义虚机配置、安装软件等
3、生成系统盘快照,基于kubevirt的CRD DataVolume 来实现
4、根据系统盘快照创建新的虚机实例创建虚机系统盘快照生成虚机流程租户或运维控制台evm-srvk8s使用基础镜像开通虚机实例ok登录虚机自定义虚机配置、安装软件等操作用户选择快照保存的位置是云硬盘或本地盘生成虚机系统盘快照, 获取虚机的用户命名空间和系统盘pvc名称创建datavolume作为快照okok根据系统盘快照datavolume创建新的虚机ok
实现快照的DataVolume定义如下:
apiVersion: cdi.kubevirt.io/v1alpha1 kind: DataVolume metadata: name: "testvm-2-clone-dv" spec: source: pvc: # 源系统盘用户命名空间和pvc名称 name: dv-testvm-2 namespace: test pvc: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi # 快照保存的位置,可以是本地盘(hostpatn),或者是云硬盘(ceph-rbd) storageClassName: hostpath |
注意点:
1、storageClassName是指定快照保存的位置,可以让用户在租户控制台生成快照时选择是保存快照在本地盘(hostpatn)或者是云硬盘(ceph-rbd)。快照会占用存储空间也应该是需要收费的。
2、生成镜像过程中,虚机保持正常运行或已关机状态。