Lately, I have been on a Harvester bender. I switched my entire homelab from Proxmox 7.4 (loved that dark mode tho) to Harvester-v1.1.2. You can read more about the installation process here.
The first comment I got when I shared my article to Reddit was “You never explained what Harvester is.” True.
I have been following the Harvester project for a long time. My first ever Substack post about Harvester was from March 17, 2022 which is quite a long time ago. Since then, the project itself has changed quite a bit.
BUT WHAT ACTUALLY IS HARVESTER?
Let’s unpack this HCI solution by focusing on the following questions:
What is the birds eye view of Harvester?
What are the components of Harvester?
How do they work together?
What is hyper converged infrastructure?
Why run Harvester?
I think after we have answered these questions, we will be able to finally define what it is.
What is the birds eye view of Harvester?
I like to start out broad and work my way down to narrow. According to SUSE (the Harvester product owners) Harvester was “…designed to help operators consolidate and simplify their virtual machine workloads alongside Kubernetes clusters.”
In 2023, every company is using Kubernetes. Every company also has virtual machines. Why not run those virtual machines on top of Kubernetes?! And that is the main idea behind Harvester.
Harvester is built on Kubernetes and utilizes the latest cloud-native solutions including Longhorn and KubeVirt. Enabling organizations to futureproof and modernize their technology stack.
~ suse.com
Now, instead of having a level of separation between your virtual machine workloads and your Kubernetes cluster, you can run everything in one environment.
As you may know, I have been converting all of the services I run in my homelab to Kubernetes manifests. When I was using Proxmox on my home server, I still had to create the actual virtual machines that the cluster is composed of. I would often use Rancher (another SUSE product) as the cluster “engine” if you will and Longhorn (yet another SUSE product) as the storage class.
Now, since I am running Harvester. I connect my Rancher instance to my Harvester server and essentially use Harvester as my “cloud provider” which spins up K8s nodes WITHOUT ME HAVING TO DO IT MANUALLY.
Ok I know it sounds confusing. Let’s draw a diagram:
I have a server running Harvester (the green)
I have a Rancher Frontend VM which is running on Harvester (the light blue)
I have a Kubernetes cluster composed of three VMs running on Harvester (the white)
My Rancher frontend server (I wish they had a better name like Rancher controller) talks to Harvester and says, I want a cluster created. Harvester accepts the request and creates 3 VMs (or more). The VMs are provisioned, docker is installed on them, and they join into a Kubernetes cluster. It’s a little more complicated but that’s the gist of it.
If you have ever used EKS, OKE, or GKE you will essentially follow the same process as we just did when creating a cluster. Harvester is the cloud provider in this case.
But wait… the Kubernetes doesn’t stop there. Harvester runs on top of Rancher.
Harvester is running on top of another installation of Rancher.
So, we really have here, a Rancher cluster, running on Harvester, running on Rancher. Fun times. My brain hurts.
In order to make our brains not hurt, we need to look at the individual components of Harvester.
What are the components of Harvester?
If we were to list out all the moving parts, we would have a big list. I will focus on the core products which make up Harvester.
Harvester is a bunch of Kubernetes parts smashed together to form a virtualization platform.
Rancher is the actual cluster, Longhorn is the storage mechanism, there are of course linux elements such as the kernel, and kubevirt is the platform that allows us to run VMs on Kubernetes.
All these products (and more) are smashed into a nice-looking product called Harvester.
How do these products work together?
It’s actually not as complicated as it looks. When you create a virtual machine, Harvester says to the underlying Rancher cluster, create the following:
A kubevirt virtual machine that has a longhorn block volume attached to it.
And that is the most basic explanation. Harvester orchestrates the orchestration.
So, what is hyper converged infrastructure?
Now that we know the gist of what Harvester is, what is this whole hyper converged infrastructure thing?
I like the CISCO definition best:
Hyperconverged infrastructure (HCI) combines compute, virtualization, storage, and networking in a single cluster.
~ cisco.com
Oh wow! That’s basically what I just explained up there!
It’s taking all the abstracted away components of modern infrastructure and making them all play and work together nicely with one centralized source of control. In this case, since we are using Kubernetes, the source of control is the etcd. The infrastructure is built using manifest files.
I would also mention, not every hyperconverged infrastructure is built on top of Kubernetes.
Lastly, why use Harvester?
The use of a combine harvester has revolutionized agriculture and has made life easy for the farmer. Prior to the arrival of this equipment, farmers would carry out harvesting manually. This was a cumbersome process and needed a lot of time and manpower.
Ok I was pulling your leg there. That’s what you get when you Google “why use harvester.” That was fun. WE ARE HAVING FUN.
More seriously, I use Harvester because I know Kubernetes. It really can be that simple. I am not necessarily an expert on networking, storage, and virtualization. I am, however, and expert on Kubernetes. I know how to write a good manifest and I understand the underlying technology behind it.
Also, I love to future proof. If this hyper converged infrastructure thing is going to take off (and it will) why not learn it early and become the expert before it starts showing up on job descriptions.
Anyway, this was a rather simplified article about what Harvester is. But I think everyone who reads this will be able to take away that Harvester is a hyperconverged infrastructure solution. And they will actually understand what that means.
Cheers,
Joe