Skip to content



The following hardware components are used:


The fans of the official PoE hats appear to be very noisy. Therefore I adjusted their temperature thresholds to 70°C and 80°C:





The Raspberry Pis are all physically connected to a UniFi PoE switch for power and data. The actual communication between all cluster nodes is happening through the Tailscale network.


Inside the cluster the main parts of the networking setup are CoreDNS and Traefik.
The following IPs and CIDRs are configured inside K3s:

Name IP / CIDR
Kubernetes Pod IPs
Kubernetes Service IPs
Kubernetes Cluster DNS IP



All services with a UI running in my cluster have a dedicated subdomain configured. Those domains are managed by Blocky which is configured as the main DNS server in my home network. It also performs network-wide ad blocking based on some block lists.


Services that need to be reachable externally have dedicated public DNS records. These are configured using Terraform.

Example of a DNS Terraform resource

data "cloudflare_zone" "zone_public" {
  name = "" # target DNS zone (1)

resource "cloudflare_record" "public" {
  zone_id =
  type    = "A"
  name    = "*" # record name (2)
  value   = "" # record value (3)
  1. This block references the target DNS zone
  2. Record name (a.k.a subdomain) to be configured
  3. Record value to be configured


Since I don't have a static IP address allocated from my ISP, my IP address can change at any point in time. To bypass this circumstance I configured a Kubernetes CronJob object which performs an DynDNS update for my domain at Cloudflare. The configuration can be found in the dyndns section.


Currently I'm not using anything special as a storage solution for my cluster. The built-in local-path-provisioner of K3s is fulfilling any PersistentVolumeClaim objects but I'm planning to switch to Longhorn.


Every node has configured a hostname which follows a particular naming scheme:


As you may have guessed, the planets are taken from the Star Wars universe. Currently the following names are in use:

  • coruscant
  • kashyyyk
  • alderaan
  • dathomir
  • mustafar
  • jakku
  • ryloth
  • ilum