I Wanted Kubernetes Without an Always On EKS Bill
I wanted a Kubernetes lab that would still be there the next morning. A temporary cluster on my laptop would be useful for testing manifests, but it would disappear when I closed the lid. Amazon EKS would give me the managed AWS experience I eventually want to test, but keeping it online just so I could practise Deployments and Services did not make sense for me. The EKS control plane alone is…
The reporter sought a Kubernetes lab that would remain operational the following morning. A temporary cluster on the laptop would be convenient for testing manifests, but it would vanish when the lid was closed. Amazon EKS offered the managed AWS experience the reporter ultimately desired to test, but keeping it online solely for practicing Deployments and Services was impractical.
The EKS control plane alone costs $0.10 per cluster-hour under standard support, not including worker nodes, storage, or networking. The reporter already had an alternative: an Intel N100 home server with 16 GiB of memory running Debian and OpenMediaVault. This server was always on and was already occupied by 28 Docker containers.
The reporter's goal was to establish a single-node Kubernetes lab that would coexist with the existing workloads, rather than replicating a production cluster at home. The lab needed to be always available, privately administered, and small enough to share the host with the existing Docker workloads. The home server would serve as the persistent learning environment, with EKS coming later for AWS-specific behavior like IAM, cloud load balancers, and managed control-plane operations.
After evaluating various options, MicroK8s, k0s, and EKS were considered, but k3s emerged as the best fit for the host and the desired operating model. k3s matched the Debian-based server and supported a useful single-node cluster without claiming ports already used by the server. The k3s requirements specified a minimum of two CPU cores and 2 GB of memory for a server node, which the reporter could configure around using resource reservations and eviction thresholds.
The installer was straightforward, but the reporter took precautions to ensure the existing workload remained protected. A host-audit script was written to record system resources, and the installation script halted when it encountered unexpected conditions. The k3s configuration was conservative, disabling the bundled Traefik ingress controller and ServiceLB to avoid port conflicts.
The installation was completed using the official k3s installer, followed by a verification script to ensure the cluster was healthy and the existing server remained operational.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — it may contain errors, so check the original before relying on it.