Skip to main content

Homelab update - k3s and lessons learned

· 3 min read
đź“–3 min read

Raspberry PIs have gotten relatively expensive​

With the increased popularity of AI, I saw this "AI inflation" directly while shopping around for the Raspberry Pis that I would use in my cluster. I couldn't justify opting for the 16GB memory model since it was over twice the price compared to MSRP! So I ended up opting for the 8GB model, which still offered double the memory compared to my RPI 4 that was still chugging along in the garage.

The RPI 4 I already owned is still the "main node" for two reasons: I can't use it for larger models or a lot of processes, but it was available first, so I could set it up and get it ready before the others arrived. Either way, the plan was to expand later with a larger model/device, using newer RPI 5s as main nodes.

The goal for hardware wasn’t firm, so I could rebuild based on these models if needed. The only one that would "hurt" is tearing down the RPI 4, since it serves as my main network hub and interaction point. I still spent a good chunk of change building out this smaller network with 3 RPI5s and supporting extras. Cleaning up the wall mount area remains pending.

With current prices, this setup isn’t very affordable—more than running or buying higher-end hardware like a single desktop framework—but separate machines add value even if complexity is artificial.

The Kubernetes Cluster​

The primary goal was to explore Kubernetes and smaller-scale AI workloads. I had try running models, though the experience fell short—worthless but worth attempting!

Built using GitHub Copilot for direction, the cluster consists of four nodes (three usable). Copilot named them Alpha, Beta, Charlie for easy identification.

I considered Tailscale and a droplet as an open-web entry point but haven’t needed it yet. Future plans may revisit this if I decide to expose the stack publicly.

I ran Ollama on each node to test smaller models. Used k9s for cluster setup, Copilot/Gemini for documentation, and SSH for access.

Added uptime-kuma for monitoring and gitea as a baseline service. Limited network use so far—mostly testing Ollama spams—but it’s a functional start!

Lessons Learned and Future​

Kubernetes is tough for beginners, especially with YAML files. Copilot helped reduce manual effort but still required oversight to avoid errors.

The cluster’s small scale makes it questionably worth the setup cost. My primary goal—running Opencode on RPIs—was impossible due to insufficient processing power. Testing locally would have been easier, but I wanted hands-on experience with new tech.

Expanding the network with more nodes for AI work is unlikely. Future funds will likely go elsewhere, though this remains a learning opportunity.

Until next time, keep learning, keep building, and keep asking questions!