Before jumping into the details of KubeVirt, let’s understand the need for such tools. I would like to touch two such scenarios that would need KubeVirt.

Firstly, let’s take a case where you split the monolith architecture based project into microservices. In this case, as a practice, we would not split monolith into microservices at one go! We would gradually reach by doing a few services per iteration. So, you get two variants of deployable images that need two different platforms. i.e. To run the existing monolith based VM’s into some kind of virtualization management environments. Then you need container orchestrator tools like Kubernetes to deploy your extracted services of your Microservices.

Secondly, let’s take a case where containerization is not possible in the near future for your project functionality, e.g. some virtual network functions (VNF) like a load balancer, gateway but we plan to build some containers to manage or orchestrate the VNF that we would need. Here too, we would need two platforms to deploy the projects.

In both of these scenarios, the common problem would have cost, and skill set. You would need to spend money on two different platforms (if you choose to go with enterprise editions of vSphere and Kubernetes probably). Then you would need specialized resources in both of these platforms. In some cases, the team would find it difficult to adopt two different platforms and cause some flexibility issues. What if we could deploy and manage VMs into Kubernetes? Sounds great, right! That gives valuable time to concentrate on project functionalities, rather than spending time on understanding the platform where it runs. To address these needs, KubeVirt comes as a rescuer.

“KubeVirt_ is the open-source project that makes it possible to run virtual machines in a Kubernetes managed container platform. KubeVirt delivers container-native virtualization by leveraging KVM, the Linux Kernel hypervisor, within a Kubernetes container.” — from RedHat._

Image for post

Converged Platform: Containers + VMs

Let’s walk through the process of spinning up a VM inside a Kubernetes platform. I assume that you have already deployed Kubernetes in your environment. To deploy VMs into the Kubernetes, you would need the KubeVirt specific pods installed on your Kubernetes platform. Such as,

  • KubeVirt Operator related pods
  • KubeVirt Custom Resources (CRD’s)
  • CDI Operator [this is used to upload VM image into your Kubernetes persistent volumes]
  • CDI Custom Resources (CRD’s) [instead of CDI you can upload directly using ‘virtctl’ command]

#kubernetes #kubevirt #containers #convergence #virtual-machine

Converged Platform for VM’s and Containers? Journey to KubeVirt!
1.20 GEEK