VM Clone

A VM clone is a copy of a virtual machine. After the cloning operation, the clone VM runs as a separate virtual machine.

The clone.kubevirt.io API Group defines resources for cloning KubeVirt VMs.

Creating a VM Clone

Under the hood, the clone API relies upon Snapshot & Restore APIs. Therefore, in order to be able to use the clone API, please see VM Snapshot & Restore pre-requisites.

In order to initiate cloning, a VirtualMachineClone object (CRD) needs to be created on the cluster. An example for such an object is:

kind: VirtualMachineClone apiVersion: "clone.kubevirt.io/v1alpha1" metadata: name: clone-fedora-1 spec: # source & target definitions source: apiGroup: kubevirt.io kind: VirtualMachine name: fedora-vm-1 target: apiGroup: kubevirt.io kind: VirtualMachine name: fedora-vm-1-clone

Apply it and see the clone progress:

kubectl get vmclone -w NAME PHASE SOURCEVIRTUALMACHINE TARGETVIRTUALMACHINE clone-fedora-1 fedora-vm-1 fedora-vm-1-clone clone-fedora-1 SnapshotInProgress fedora-vm-1 fedora-vm-1-clone clone-fedora-1 RestoreInProgress fedora-vm-1 fedora-vm-1-clone clone-fedora-1 Succeeded fedora-vm-1 fedora-vm-1-clone

Source & Target

The source and target indicate the source/target API group, kind and name. A few important notes:

  • Currently, the only supported kinds are VirtualMachine (of kubevirt.io api group) and VirtualMachineSnapshot ( of snapshot.kubevirt.io api group), but more types are expected to be supported in the future. See "future roadmap" below for more info.

  • The target name is optional. If unspecified, the clone controller will generate a name for the target automatically.

  • The target and source must reside in the same namespace.