Step 1: Plan the cluster and prepare Debian hosts
This step should take approximately 30 to 40 minutes.
Overview
You will turn three generic Debian installations into named, reachable cluster candidates. A clear inventory is a safety control: it prevents an SFTP backup target or storage workload from silently sharing the failure domain it is meant to protect.
Before you start
- Install Debian 13 on all three machines with a non-root administrator account and SSH enabled.
- Assign fixed LAN addresses, preferably as DHCP reservations.
- Do not install Docker, a desktop environment, a database, or a GPU driver yet.
Practice the skill
-
Record the physical and network inventory in the Git repository. Create
docs/inventory.md; do not commit passwords, private keys, or Cloudflare tokens.Node Address Role Durable disk Special hardware lab-01192.168.50.21control plane, storage mirrored SSD/NVMe preferred — lab-02192.168.50.22control plane, general work SSD — lab-03192.168.50.23control plane, GPU work SSD/NVMe model cache NVIDIA GPU Keep the SFTP server in a different failure domain: another host and disk, ideally with separate power or an off-site location.
-
Set each hostname and verify that its address does not change.
sudo hostnamectl set-hostname lab-01 hostnamectl ip -brief addressRepeat with
lab-02andlab-03. Add all three names and addresses to your workstation's DNS or/etc/hostsuntil local DNS is ready. -
Update the operating system and install the small set of node tools used throughout the series.
sudo apt update sudo apt full-upgrade sudo apt install --yes curl ca-certificates chrony jq nfs-common open-iscsi sudo rebootK3s and its storage add-ons require a working Linux host; installing these common dependencies now makes later failures more obvious. Reconnect after the reboot and verify
timedatectl statusreports synchronized time. -
Decide which disk backs durable single-instance services. On
lab-01, inspect disks before creating or mounting anything:lsblk --fs findmnt /This tutorial uses K3s local-path storage pinned to
lab-01. A disk loss is therefore a restore event, not a transparent failover. Prefer a mirrored ZFS or RAID-backed filesystem for this node, but do not confuse local mirroring with a backup. -
Reserve an unused LAN range for MetalLB. Confirm it is outside your DHCP pool and is not assigned to physical devices. Record it as
192.168.50.240-192.168.50.250in the inventory.
What you learned
- A three-node control plane and a single-instance data service have different availability properties.
- Backup location, power, and disk placement matter as much as backup software.
- A stable address plan is prerequisite infrastructure, not documentation overhead.
Continue learning
Continue to Step 2: Harden access and establish node baselines.
Three-node Kubernetes home lab on Debian 13
Build a GitOps-operated home lab with private and public ingress, PostgreSQL, Garage S3 storage, GPU scheduling, observability, and SFTP recovery.
Step 2: Harden access and establish node baselines
Restrict administrative access, enable unattended security updates, and verify the networking prerequisites shared by all K3s servers.