The Cloud Native Computing Foundation (CNCF) has formally adopted KubeVirt into its fold. The tool provides a way for developers to provision, manage and run virtual machines using Kubernetes, bridging the traditional and cloud-native application worlds.
KubeVirt is an open source project that provides a virtual machine management add-on for Kubernetes. While Kubernetes has grown into the orchestration engine of choice for operating and managing containers, there has been a growing recognition that not all workloads can be adapted to run inside containers.
KubeVirt thus aims to address the needs of development teams that want to adopt Kubernetes but still have virtual machine workloads that cannot be easily containerised.
According to KubeVirt, it enables teams with a reliance on existing virtual machine-based workloads to be “empowered to rapidly containerise applications”. With virtualised workloads placed directly in development workflows, teams will be able to decompose them over time while still utilising any remaining virtualised components as desired.
But KubeVirt still has to prove itself; it has been accepted into the CNCF Sandbox, which is the organisation’s entry point for early-stage projects, meaning it has some developing to do until it is accepted as a graduated project.
However, the project has an influential backer in the shape of Red Hat. The open source firm states it is both a contributor and an advocate for KubeVirt, and is apparently already using the software in a Technology Preview of Container-native Virtualization support for the Red Hat OpenShift developer platform.
KubeVirt works by adding additional virtualisation resource types to Kubernetes through Kubernetes’s Custom Resource Definitions API. Through this mechanism, the Kubernetes APIs can be used to manage virtual machine resources alongside others.
However, these virtualisation resource types are not enough by themselves to launch virtual machines. This requires additional controllers and agents provided by KubeVirt that are not part of Kubernetes itself, but run alongside on the Kubernetes cluster.
Currently, KubeVirt can be used to declaratively create a predefined VM, schedule a VM on a Kubernetes cluster, launch a VM, stop a VM and delete a VM.