In this article, we will focus on Cluster API as a way to deploy Kubernetes Clusters on VMs running inside SUSE Harvester. In this scenario, Harvester acts as a cloud, providing compute, storage and networking, including Load Balancing capabilities, and Cluster API is used to communicate with Harvester’s API to provision VMs on which Kubernetes is installed. For simplicity’s sake, we will focus on a graphical way to use Cluster API.
In the first article of this blog, I focused on installing Harvester and creating my first VM. In this article, I will describe how to create a VM that I can connect to directly through SSH. Indeed, the default networking mode used by Harvester is the masquerade mode, where the VMs get a cluster IP address, but cannot be accessed directly from outside the Harvester Cluster. In order to access the VMs from outside the cluster, you would need to create a NodePort service or a LoadBalancer service on the Kubernetes cluster underlying Harvester.
Introduction to Harvester Harvester is an OSS (Open Source Software) project created by Rancher Labs (now part of SUSE) that provides a Kubernetes-based HCI (Hyper-Converged Infrastructure) solution. Its main goal is to combine many existing OSS projects to offer an easy-to-use platform for software defined infrastructure. This includes :
Compute Virtualization using KubeVirt Software Defined Block Storage using Longhorn Software Defined Networking using Multus Snapshotting and Templates using MinIO The objective of Harvester is to use the same platform for both containerized workloads as well as more traditional VM-based workloads, and still make the latter able to use Kubernetes features like load balancing, service discovery, etc.