KubeVirt
Last updated
Briefly speaking, KubeVirt is an operator (bunch of controllers with bunch of CRDs) to allow user orchestrate VMs across the K8S cluster along with other containers. In another word, VM workloads and container workloads are running within the same K8S cluster without any gap.
Some good introductions on KubeVirt:
KubeVirt is a Kubernetes add-on consisting of custom resource definitions (CRDs), controllers and an operator leveraging a range of Kubernetes extension mechanisms. KubeVirt provides an API for virtualization with the same concepts as other Kubernetes entities, patterns and tools. Using Kubernetes and KubeVirt allows us to launch containers and virtual machines on the same cluster, same node, using the same networks and same storage infrastructure.
More details could be found from the diagram below:
There are typically two containers within Virt-Launcher Pod.
Volume Container: Retrieve the docker image which has the embeded VM image and pass over to Compute Container.
Compote Container: Where the actual VM provisioning happens.
Virt-Launcher uses Libvirt to manage the VMs (Create, Delete, Start, Stop, etc.)
VMs are actually living on the either PVC or Shared Host Directories
There are two types of VMs:
The VMs running directly on Bare Metal Machine by using KVM
The VMs running as nested VM on most of the cloud environment
A good video to check out: