Unlocking Virtualization for Kubernetes with Platform9 KubeVirt

Platform9 KubeVirt: A Hands-on Lab Experience

As an automation guy with a love for containers, I was excited to try out Platform9’s KubeVirt implementation in their hands-on lab (HOL). After using Harvester for running VMs mainly for deploying Rancher RKE clusters, I was eager to see how Platform9 compared. In this blog post, I will share my experience with the platform and highlight the differences between it and Harvester.

Getting Started with Platform9

To get started with Platform9, you need to create a cluster using pf9ctl, their command-line tool. The process is straightforward, and you can follow the instructions in the official documentation. For my HOL, I created a K8s cluster with one Master node and one Worker node. The pre-node option for pf9ctl installs an agent and promotes the server to a PMK (Platform9 Managed Kubernetes) node that can be used to build a cluster.

Installing KubeVirt

Platform9 provides KubeVirt as an add-on, which can be installed with just one click. From the Infrastructure menu, select Clusters -> Managed, and a list of managed clusters will appear. Select the cluster intended for KubeVirt, and in the Platform9 KubeVirt documentation, you’ll find the details of the steps for installing KubeVirt on a new cluster. However, if your cluster already exists, the add-on can be added without issues.

Similarities and Differences with Harvester

There are some similarities between Platform9 and Harvester, but there are also significant differences. One of the main differences is that Platform9 keeps its offering very close to the upstream project, which means that you are more familiar with the solution, and when it’s time to move to another KubeVirt offering, the changes will be minimal. In contrast, Harvester offers a more curated experience but with less flexibility than Platform9.

Managing VMs

In the Platform9 KubeVirt documentation, you can find a lot of information about managing VMs. There are three areas of interest in the Virtual Machines section: All VMs, Live Migrations, and Instance Types. In the All VMs area, you can easily see the total, running or the VMs being migrated. In the Virtual Machine creation process, you can select the desired options for your VM, and the YAML syntax will start updating itself! This is a great feature that allows you to learn how to do the YAML version of the VM creation process and maybe run some CI/CD and automate VMs.

Upgrading the Cluster

While creating our cluster, we selected an older version of Kubernetes, and the idea is to be able to run an upgrade and see how things are handled for our VMs. To upgrade the cluster, select Infrastructure -> Clusters -> Managed, and select the cluster that will be upgraded. The steps for the upgrade are very similar to the initial install. During the upgrade, I noticed that the VMs first were moved to the Worker node, which is expected, as the first nodes to upgrade on K8s are the Master nodes.

Conclusion and Future Plans

In conclusion, Platform9’s KubeVirt implementation provides a hands-on lab experience that is different from Harvester in several ways. While both platforms offer similar functionality, Platform9’s closer alignment with upstream projects and its flexibility make it an attractive option for those looking for a more customizable solution. In my next blog post, I plan to dive deeper into the storage and networking aspects of Platform9 KubeVirt and compare them to Harvester’s offerings. Additionally, I will try to get my hands on PMK access to build a cluster in my homelab and test more stuff related to MetalLB, which looks like an interesting feature! Stay tuned for more updates!

Leave a Reply