KubeVirt v1.0

KubeVirt v1.0: Now Run VMs Inside Kubernetes

KubeVirt is a Kubernetes add-on that allows you to run virtual machines (VMs) inside Kubernetes. This means that you can use all of the familiar Kubernetes features, such as pods, services, and deployments, to manage your VMs.

KubeVirt v1.0 was released in July 2023. This release includes several new features and improvements, such as:

  • Support for running VMs on bare metal
  • Support for live migration of VMs
  • Support for multiple hypervisors
  • Improved performance and scalability

KubeVirt v1.0 is a major milestone for the project. It makes it easier than ever to run VMs inside Kubernetes, and it opens up a world of possibilities for hybrid cloud deployments.

With the Kubernetes add-on KubeVirt, users may schedule traditional VM workloads alongside container workloads. KubeVirt is an open-source sandbox project of the Cloud Native Computing Foundation (CNCF). KubeVirt enhances current Kubernetes clusters to offer a set of virtualization APIs that may be used to manage virtual machines through the usage of Custom Resource Definitions (CRDs) and other Kubernetes capabilities.

Kubernetes has traditionally placed a strong emphasis on managing and coordinating containerized applications. While running outdated apps, specialized workloads, or specific operating systems that are not containerized, VMs might still be useful in some situations.

Background of KubeVirt

The requirement to integrate virtual machine (VM) management features into Kubernetes, the well-known container orchestration technology, is addressed by KubeVirt, an open-source project started by Red Hat in 2016. While the popularity of containers for their agility was growing, some applications still needed the isolation and feature set that VMs offered. Within a single cluster, KubeVirt expands Kubernetes to produce a unified platform for managing both virtual machines and containers.

Utilizing the already-existing Kubernetes infrastructure, KubeVirt enables users to construct virtual machines (VMs) utilizing Kubernetes-native functions including scaling, networking, and storage management. KubeVirt was first merged with Virtlet, a Kubernetes runtime based on Kernel-based Virtual Machine (KVM) technology, and then increased its compatibility with different runtime alternatives.

KubeVirt has developed over time, enhancing functionality and stability and aligning with more recent versions of Kubernetes. This evolution has been made possible by a growing community of contributors and assistance from the CNCF. It serves as a link between containers and virtual machines and caters to businesses that need the advantages of both paradigms.

Key Features of KubeVirt

This release highlights the community’s and users’ adoption over the last several months. They’ve also requested representatives from some of our SIGs to provide a synopsis. The complete list of new features and bug fixes can be seen in our release notes.

SIG-scale

The performance and scalability activities in the community are driven by KubeVirt’s SIG scale. They concentrated on providing the performance outcomes from the previous six months for the v1.0 release. Following are the benchmarks since December 2022 that span the most recent two releases, v0.59 (March 2023) and v1.0 (July 2023):

performance metrics for the 1.0 release

Scalability tests for the 1.0 release

By making these measures public, the community and consumers can see how well the system scales and performs across different versions. Additionally, these findings aid in identifying the consequences of code modifications so that community members may detect performance issues and regressions.

End users may apply the same tools and procedures used by SIG-scale to their deployments to analyze performance and scalability.

SIG-storage

SIG-storage is focused on managing and delivering persistent storage to KubeVirt VMs during the VM’s lifespan. This contains capabilities like disc hotplug, snapshots, backup and restore, disaster recovery, and exporting virtual machines in addition to provisioning and filling PVCs with bootable images.

The following features were provided by SIG-storage for version 1.0: a configurable VM export API, permanent SCSI reservation, provisioning VMs from a retained snapshot, and establishing out-of-the-box settings for extra storage provisioners. To properly use platform capabilities, a significant effort was made to provide Volume Populator substitutes for the KubeVirt DataVolume API. Everyone is invited to attend the SIG’s biweekly meetings and participate in our stimulating storage discussions.

SIG-compute

The primary emphasis of SIG-compute is KubeVirt’s fundamental virtualization capabilities, although it also includes features that don’t naturally belong in another SIG. The lifespan of virtual machines, migration, and upkeep of the core API are a few instances of SIG-compute’s range of responsibilities.

SIG-compute created memory over-commit functionality for v1.0. Initial support is provided for KSM and FreePageReporting. We made BitLocker on Windows installations considerably simpler by adding support for persistent vTPM. A preliminary implementation of CPU Hotplug has also been included; it is currently blocked by a feature gate.

SIG-network

All elements of network connectivity and administration for virtual machines in KubeVirt will be improved and maintained by SIG-network.

In the v1.0 release, we included hot plug and hot unplug, which let users add and delete running VM secondary network connections that employ bridge binding. For the following minor release, stabilization of the hot plug API and support for SR-IOV interfaces are being worked on.

SIG-infra

With the release of version 1.0, we were able to introduce the instancetype.kubevirt.io API’s first beta version while continuing to work to make the VirtualMachine UX simpler. The instancetype.kubevirt.io API will eventually be upgraded to version 1 in the next KubeVirt v1.1.0 release.

With the latest version, instance types may now regulate the percentage of virtual machines’ memory overcommitment. Users may now guarantee that the demands of a task are satisfied thanks to the addition of resource needs to preferences. Additionally, a number of new preference characteristics have been introduced to address additional use cases.

The functionality of virtctl was also expanded to incorporate the new instance type and preference capabilities.

Virtual Machine administration

To allow the creation, deletion, and administration of VMs, KubeVirt extends the Kubernetes API. Similar to how they would build Kubernetes deployments or pods, users may construct VMs using YAML manifests.

Integration with Virtlet

KubeVirt works with Virtlet, a Kubernetes runtime that uses the Kernel-based Virtual Machine (KVM) to provide virtualization for VMs. Virtlet tightly integrates with the Kubernetes environment by running VMs as Kubernetes pods.

Networking and storage

KubeVirt makes use of Kubernetes’ networking and storage capabilities, enabling virtual machines to interact with other pods, services, and outside resources without any hiccups. Bridged, routed, and SDN-based networking are just a few of the networking models it supports.

Live Migration

Within the Kubernetes cluster, KubeVirt provides live VM migration across hosts. This makes high availability situations, workload balancing, and host maintenance possible.

Integration with the Kubernetes Ecosystem

KubeVirt connects with other Kubernetes parts and tools like service meshes, CI/CD pipelines, monitoring and logging tools, and so on. To manage their VM workloads, users may make use of the larger Kubernetes ecosystem thanks to this.

Future of KubeVirt

KubeVirt’s future is bright as it deepens integration with other runtimes, increases ecosystem compatibility, boosts performance and scalability, stimulates community cooperation, supports a variety of use cases, and regularly updates its version. It seeks to connect easily with different Kubernetes runtimes, providing flexibility for the effective management of VM workloads alongside containers. The interoperability of KubeVirt with the larger Kubernetes ecosystem guarantees simple interaction with frameworks for monitoring, logging, and service mesh. Performance and scalability will be enhanced through the optimization of networking, storage, and live migration features. Innovation, stability, and the addition of new features will be driven by the project’s collaborative community. Regular version updates will keep KubeVirt current with the most recent Kubernetes releases, ensuring that it keeps up with the ecosystem’s changing needs. KubeVirt is primed to grow as virtualization and containerization progress.

Conclusion

KubeVirt v1.0 is a huge development for the project. Performance, storage management, virtualization capabilities, networking, and user experience have all seen significant improvements thanks to contributions from numerous SIGs. The update shows how dedicated the community is to meeting user requirements and enhancing functionality in general. VMs are anticipated to be progressively integrated into Kubernetes clusters as KubeVirt develops, offering a unified platform for managing both containerized workloads and VM workloads. The improvements introduced in version 1.0 open the way for wider usage and a more seamless experience for users utilizing KubeVirt’s capabilities.

Resources

Kubervirt Website

Kubervirt v1.0 Release

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top