How I Run a Portable Kubernetes Lab with k3s on Raspberry Pi (and When It Breaks)

A practical guide to running a portable, low-cost Kubernetes lab with k3s on Raspberry Pi—what works, what doesn't, and how I use it for real dev testing in India.

Written by: Arjun Malhotra

A Raspberry Pi single-board computer connected to cables on a desk beside a laptop
Image credit: Christopher Gower / Unsplash

A year ago I wanted a cheap, portable Kubernetes cluster to test CI artifacts, simulate flaky networks, and run small services during client demos. I didn’t want cloud bills or waiting for VMs to boot. The answer I settled on: a handful of Raspberry Pis running k3s. It’s cheap, fast to iterate on, and annoyingly realistic for a lot of edge cases you’ll never see on a beefy cloud node.

If you’re in India and juggling limited budgets, flaky home power, and occasional travel, here’s a pragmatic, experience‑based playbook for getting k3s on Raspberry Pi working—and what to expect when it doesn’t.

Why k3s on Raspberry Pi?

What I actually run

Hardware checklist (practical, India-ready)

Quick bootstrap (the approach I use)

  1. Flash Pi OS Lite, enable SSH, set static IPs or DHCP reservations.
  2. On the control plane:
    • curl -sfL https://get.k3s.io | sh -s - server —cluster-init
    • Note the kubeconfig at /etc/rancher/k3s/k3s.yaml (copy it securely).
  3. Join workers with the provided token:
  4. Install MetalLB and a local registry (I use 10.64.0.0/24 for MetalLB and a registry on a worker).
  5. Push images to local registry and use imagePullSecrets or configure insecure-registry on k3s.

Why this setup is useful day-to-day

Real constraints and tradeoffs (be honest)

Troubles I ran into (so you don’t repeat them)

Cost and alternatives in India

When you should not use this setup

A couple of practical tips I’d give a colleague

Conclusion k3s on Raspberry Pi isn’t a perfect mimic of cloud Kubernetes, but that’s the point: it’s intentionally constrained. Those constraints expose real issues—network flakiness, storage limits, and resource contention—that matter for edge use cases and lightweight CI. If you want a cheap, portable, hands-on sandbox to iterate on deployment patterns, debug DNS/CNI oddities, or run demos without cloud bills, this setup is hard to beat. Just budget for SD card replacements, a decent PSU, and accept that sometimes you’ll spend an afternoon rebuilding a node—and learn something useful in the process.

If you want, I can share my bootstrap scripts (Ansible + bash) and a list of exact components I buy in India for a three-node rig. Would that help?