The cluster started as an experiment in running a few things on Kubernetes rather than bare Docker. It has since grown to 90-odd applications across 18 namespaces. At some point the experiment became the infrastructure.

The hardware is three nodes running Talos Linux — an immutable, API-driven OS with no SSH and no shell. Cluster configuration is managed through the Talos API, which forces a useful discipline: if you cannot express a change as configuration, you probably should not be making it. The control plane is highly available behind a VIP, so losing one node does not take the cluster down.

Media is the largest workload by application count. Plex and Jellyfin both run for different use cases. The *arr stack — Radarr, Sonarr, Prowlarr — handles acquisition and library management, with separate instances for kids content. SABnzbd and qBittorrent handle downloads. Tautulli watches Plex usage. Kometa manages metadata. Navidrome and Pinchflat cover music and YouTube content respectively.

Home automation runs Home Assistant, ESPHome for firmware on custom devices, Zigbee2MQTT for the Zigbee mesh, and Scrypted for camera handling. Music Assistant sits alongside these and feeds into the wider audio setup. Most of the home automation stack predates the Kubernetes cluster and has been gradually migrated in.

Self-hosted tools include Paperless-ngx for document management, Mealie for recipes, Forgejo as a private Git host, NetBox for network documentation, and SearXNG as a local search aggregator. Renovate runs in-cluster and opens pull requests for dependency updates.

Personal projects are the main reason the cluster exists at all. Several small applications live here — a personal site, photo tooling, and a handful of other things at various stages of development. Running them on the same cluster as everything else means they get production-grade networking, TLS, and backups without any extra effort.

The observability layer is Prometheus and Grafana for metrics, Gatus for uptime monitoring, and alerting through Alertmanager. Hardware is covered by smartctl-exporter for disk health and SNMP exporter for the network gear.

The honest answer to “why Kubernetes at home” is that it is not the most pragmatic choice for most of what runs here. A smaller stack would be easier to operate. But the operational complexity pays back in other ways: everything is consistent, upgrades are systematic, and running a new application is a well-understood process rather than a one-off exercise.