XenonStack Recommends


Kubernetes Virtualization, Virtlet Vs KubeVirt Overview

Gursimran Singh | 23 Nov 2021

Kubernetes Virtualization, Virtlet Vs KubeVirt Overview

Overview of Virtlet and KubeVirt

Virtlet and KubeVirt both address the needs of almost every development teams who have or wants to adopt Kubernetes but still possess existing virtual machine based workloads which can’t be easily containerized. They provide a unified platform where developers can build, modify and deploy applications in both containers and virtual machines in a shared environment using open source hypervisors and tools like KVM, libvirt and qemu. But there are some differences in the usability and working of both virtlet and kubelet.
Application deployment becomes easy with the use of containers. Kubernetes is playing a vital role in the deployment and scaling of applications. Click to explore about, Container Design Patterns for Kubernetes

Virtlet and KubeVirt Working Architecture

Virtlet is a Container Runtime Interface (CRI) implementation as all the virtual machines are defined as Kubernetes pods. It provides support for common kubectl commands, such as create, apply, get, delete, logs, attach and port-forward. The virtual machine acts as pod meaning Kubernetes sees virtual machine same way it considers Docker containers. KubeVirt uses an addon Kubernetes Custom Resource definitions for provisioning of the virtual machines on Kubernetes. The virtual machines run within regular Kubernetes pods, where they have access to pod networking and storage. Virtual machines can’t be used as part of deployments, and demon sets they have to reimplement replica sets as Virtual Machine Replicaset.

Why adopting Virtlet and KubeVirt matters?

In recent years containers have dominated the computer world. Organizations are moving to microservices architecture because of scalability and flexibility, but organizations are bound to existing applications which are not easy to run in containers and requires particular kernel tuning configurations to run them efficiently, e.g. databases or IIS. Running virtual machines separately from containers means additional infrastructure and operations cost. Virtlet and KubeVirt both provides an alternate solution to keep using the existing Kubernetes infrastructure with the ability to run non-containerized applications in virtual machines parallel to containerized applications.
A powerful open-source Relational Database Management System. Click to explore about, PostgreSQL Deployment in Kubernetes

How to Adopt Virtlet and KubeVirt?

Adopting either of KubeVirt or virtlet depends on the use-case. For starting, we need Kubernetes cluster on the server which supports virtualization, not a hard requirement; otherwise, the qemu can be used instead of KVM hypervisor, but the performance will be much slower. Virtlet project is an open source project and is managed by migrants they are focusing mainly on easy usability and networking features like SRIOV for 5G & NFV use case. KubeVirt is also an open source project lead by the Kubernetes community itself. They are focusing mainly on providing flexibility across the platform for storage and networking so that it can be easily pluggable with any technology.

Comparing Features of Virtlet and KubeVirt

Feature KubeVirt Virtlet
Able to run virtual machines and Containers on the same node Yes Yes
SR-IOV support No Future Road Map Yes
Usability i k8s objects like DaemonSet, ReplicaSet, Deployment? No Yes
Support for readinessProbe No Yes
Support for livenessProbe No Yes
Support for multiple interfaces No Yes
Access console Yes (by external to kubectl command) Yes (by using kubectl command)
Exposing virtual machines via a Service Yes Yes
Access graphical consoles Yes (by external to kubectl command) Yes (by using kubectl command)
Support for virtual machines migrations No No
Support for taints and tolerations No Yes
Supported Volumes types
  • PersistentVolumeClaim
  • Ephemeral
  • RegistryDisk
  • Disk
  • Lun
Cloud-Init Support Yes Yes

Best Practices of Virtlet and KubeVirt?

  • Use of hardware supporting virtualization flag like vmx or it for Intel and SVM for AMD processors.
  • The latest version of the Kubernetes release.
  • Use of NUMA pinning.


Virtlet and KubeVirt both technologies provide similar functionality but different feature and usability, Virtlet is a project of mirantis with a smaller community as compared to KubeVirt. KubeVirt still in alpha stage but they are progressing fast covering the features like SR-IOV. Virtlet is easier to use in terms of usability with a smaller learning curve as compared to KubeVirt but bound to kubelet for features.