KubeVirt: a converged platform for virtual machines and containers

The concept of containerization is enjoying growing popularity – many businesses are already implementing containerized workloads or are working on pilot programs. But this does not mean that virtual machines will be pushed out of the market overnight. All the indications are that both technologies are destined for coexistence.

Data Center 3.0

In the world of IT, convergence has become a very fashionable trend, demonstrated for instance by the changes taking place in data centers. In modern server rooms there is an increasing role for hyperconverged systems such as those from Dell, Nutanix and HPE. Their implementation provides a solution to the problem of multiple silos created by independently functioning servers, mass storage and network hardware. Another example are IP PBX systems linking IP telephony with a classic PSTN. Interestingly, the word convergence is also starting to appear in the context of joint solutions for virtual machines and containers.

Virtualization remains one of the most commonly used technologies and is a key part of IT solutions in companies. Anyway, containers are not a miracle solution that solve all and any IT infrastructure headaches. Heavier, less frequently modified components can easily be hosted on virtual machines, while containers can be used for smaller, more dynamic ones. This division isn’t always appreciated by IT departments, as they have to shoulder tasks related to supporting two environments, as well as applications from varying technological eras.

Virtualization and containerization

In the coming years, a proportion of entrepreneurs will move their digital resources to the public cloud. However, experts emphasize that to make full use of the values of the cloud, it is important to move in the direction of microservice architecture. Companies can carry out this process in two ways: either by modernizing the system in stages, separating off subsequent components, or creating a comprehensive solution completely from scratch. While the second option might seem to be decidedly more attractive, companies choose it less often than the evolutionary approach, which requires the use of two different platforms.

The first is used to run virtual machines based on monolithic architecture. The second, most often Kubernetes, is responsible for coordinating processes related to container management. It must also be taken into account, that containerization is a relatively new technology and cannot be used everywhere, for example some virtual network functions (VNF) such as load distribution and gateway modules. In both scenarios, there is the same problem connected to the costs of maintaining two separate platforms (most likely vSphere and Kubernetes). But what if it was possible to implement virtual machines and manage them via Kubernetes?

For more information on KubeVirt, see our latest webinar:

KubeVirt two years ahead of VMware Tanzu

One of the principal topics at the VMware World 2019 conference in Barcelona was not the usual virtualization, but containers. It was there that VMware presented its Tanzu project, which is a suite of products and services for creating, running and managing the latest applications in Kubernetes containers. At the same time, the Palo Alto firm stated that they believed in the harmonious coexistence of virtual machines and containers. Not everyone may be aware that two years before the official debut of VMware Tanzu, the KubeVirt platform first saw the light of day and is still being developed today (the latest version was released in March – KubeVirt v0.39.0).

KubeVirt is an open-source project which aims to converge two technologies – containerization and virtualization. KubeVirt makes it possible to run virtual machines as Pods and to coexist in the k8s cluster. The platform uses the KVM hypervisor to provide container native virtualization (CNV). KubeVirt is in response to the needs of teams of programmers who have taken over or want to adapt Kubernetes infrastructure, but intend to continue using virtual machines. Thus, the technology provides a unified development platform on which developers can create, modify and implement applications located in both application containers as well as in virtual machines, in a joint, shared environment. To work in any Kubernetes environment, KubeVirt requires the installation of additional binary files, the most important of which is virtctl, which is responsible for controlling and managing virtual machines running on the KubeVirt platform. Additional files include:

  • virt-handler: responsible for handling operations that change the virtual machine in order to meet the required state.
  • virt-launcher: every virtual machine is created in a Pod, the virt launch program operates in a basic pod container to ensure the cgroup and the namespaces that will be used for hosting the virtual machine process.
  • libvirt: manages the virtual machine process life cycle, and remains in every Pod.
  • qemu: an open-source emulator machine which runs the virtual machine.

Creating KubeVirt containers and virtual machines using YAML files

Administrators can use KubeVirt to create containers and virtual machines via YAML manifest files. Below is a simple example of a YAML file that contains all the necessary components:


KubeVirt – a bright future

In the near future, many organizations will be using tools like KubeVirt to find a balance between traditional and new ways to work with applications. Experts mostly agree that the development of containers will be significantly influenced by not only migration of organizations to the public cloud, but also by 5G technology. All the indications are that mobile phone operators will join the group of users who choose containers, which doesn’t mean that they will automatically abandon virtualization. This is another reason why tools like KubeVirt should successively attract more users. Naturally, it must be remembered that it is a new solution that is evolving all the time. For now, its Achilles heel are the limited options in terms of migrating large virtual loads to the Kubernetes platform.

However, it is worth noting that Red Hat has shown considerable interest in KubeVirt. The OpenShift Virtualization function is based on exactly this open solution, and allows firms to develop and implement applications made up of virtual machines, containers and serverless technologies, as well as to manage them via the Kubernetes platform. It could well be that KubeVirt will also soon be used by other leaders in technology.

Marcin Kubacki

text written by:

Marcin Kubacki, CSA at Storware