Skip to content

Post 2: Creating the machines

With the home lab vision in mind, the next step was setting up the underlying VMs that would form my Kubernetes cluster. I chose Ubuntu Server as the base OS for all nodes.

Creating the Base Ubuntu Template

I started by installing Ubuntu Server on a VM and used it to build a reusable template for my k3s nodes. My attempts using Dietpi OS repeatedly failed in my overall build.

Here’s what I assigned to the base VM:

  • vCPU: 4 cores
  • RAM: 8 GB
  • Disk 1 (boot): 32 GB
  • Disk 2 (data): 50 GB (left unformatted for Longhorn to consume)

Once Ubuntu was installed, I performed the following setup tasks:

  • Set the system timezone
  • Assigned a static IP address
  • Installed nfs-common to enable access to the NFS shares hosted on my TrueNAS server

I then shut down the VM and converted it into a template in Proxmox, which made it easy to clone and spin up new nodes.

Provisioning the Cluster Nodes

Using the template, I cloned three VMs for the cluster:

  • cube1 → 10.0.0.16
  • cube2 → 10.0.0.17
  • cube3 → 10.0.0.18

These will serve as the primary k3s nodes.

Setting Up the Jumpbox

To manage the cluster more easily, I created a fourth VM which serves as my jumpbox. This VM hosts management tools like kubectl and helm, and makes it easier to deploy applications to the cluster.

  • jump → 10.0.0.8

On the jumpbox, I generated SSH keys and used ssh-copy-id to push them to each of the cluster nodes. This lets me SSH into each node without entering a password, which is great for automation and management.

Summary

At this point, the foundation is ready:

  • Ubuntu VM template built and customized
  • Three Kubernetes nodes cloned and IP’d
  • A jumpbox in place with management tooling

In the next post, we’ll install k3s on all nodes and configure MetalLB for LoadBalancer IPs.

Published inKubernetes