Get AI summaries of any video or article — Sign up free
i built a Raspberry Pi SUPER COMPUTER!! // ft. Kubernetes (k3s cluster w/ Rancher) thumbnail

i built a Raspberry Pi SUPER COMPUTER!! // ft. Kubernetes (k3s cluster w/ Rancher)

NetworkChuck·
5 min read

Based on NetworkChuck's video on YouTube. If you like this content, support the original creators by watching, liking and subscribing to their content.

TL;DR

Use k3s (lightweight Kubernetes) to make Kubernetes practical on Raspberry Pi hardware.

Briefing

A single Raspberry Pi can be turned into a “supercomputer” by clustering multiple Pis with Kubernetes—specifically the lightweight k3s distribution—so workloads like web servers and Minecraft can be deployed across nodes, automatically balanced, and monitored. The payoff isn’t just the novelty of running Minecraft on a home cluster; it’s hands-on practice with Kubernetes concepts (containers, pods, deployments, services, scaling, and ingress) using hardware that’s cheap enough to experiment with.

The build starts with the practical reality that you can’t simply glue computers together. Each Pi remains its own machine, but Kubernetes orchestrates containers across the cluster. The video frames this as orchestration: instead of manually installing and managing apps on each node, Kubernetes places containerized workloads where they fit, keeps them healthy, and can scale replicas up or out. To make the cluster feasible on small devices, k3s—created by Rancher Labs—is used because it’s lightweight and designed for edge and IoT scenarios.

Setup begins with headless Raspberry Pi provisioning: flashing Raspberry Pi OS Lite to a microSD card, booting without a monitor or keyboard, then enabling SSH and configuring boot parameters. Key boot changes include enabling cgroups memory support (needed for k3s/container functionality), setting a static IP and hostname, forcing 64-bit mode, and enabling SSH by creating an SSH file on the boot partition. After the Pi comes online, the cluster prep includes switching to root and enabling legacy iptables so k3s can use them.

K3s installation follows a master/worker model. The first Pi becomes the control-plane “master” by running a single install command that downloads and executes a script. Additional Pis join as worker nodes using a token generated on the master, along with the master’s k3s URL and a unique node name per Pi. Verification is done with kubectl (via the cube ctl shorthand used throughout): “get nodes” confirms the cluster roles and readiness.

For visibility and management, Rancher is optionally installed on a separate Ubuntu virtual machine. Rancher then imports the Pi cluster, including an ARM64-specific agent image override so the x86-oriented defaults don’t break on Raspberry Pi hardware. Once Rancher shows nodes and cluster health, the tutorial shifts from infrastructure to applications.

The first workload is an Nginx deployment: a manifest defines a deployment with replica count, labels, container image, and health checks. After deploying, Kubernetes creates pods, and the video demonstrates how to see which node each pod lands on. Because pod IPs are cluster-internal, access requires a Kubernetes Service. A NodePort service opens a port on each node and forwards traffic to the correct pods, enabling the Nginx pages to load by hitting a node’s IP plus the NodePort.

To make load balancing obvious, the video deploys a “Hello World” app at high replica counts (scaled up to 50). With the NodePort service in place, requests to any node’s NodePort are distributed across the backing pods. Finally, ingress is introduced to route by hostname: a rule maps an I love cow.com-style domain to the Hello World service, and local DNS/hosts-file edits are used to test it.

The practical capstone is Minecraft. Because many container images aren’t ARM64-ready, the tutorial uses a Minecraft Helm chart installed through Rancher’s marketplace UI. After accepting the ULA and deploying the chart, another NodePort service exposes the Minecraft port (25565) to the cluster. The result: a playable Minecraft server running on a Raspberry Pi Kubernetes cluster, with Kubernetes handling placement, health, and traffic routing.

Overall, the project turns a home lab into a working Kubernetes playground—starting from bare-metal Pi configuration and ending with real, interactive services—while teaching the core building blocks needed to take the same skills into enterprise cloud-native environments.

Cornell Notes

The core idea is to use Kubernetes (k3s on Raspberry Pi) to orchestrate containerized workloads across multiple Pis so apps run reliably, scale, and receive traffic through Kubernetes networking. The tutorial builds a master/worker cluster, verifies it with kubectl, and optionally adds Rancher for a visual dashboard and easier cluster management. It then deploys Nginx and a “Hello World” app to demonstrate pods, deployments, replica scaling, and load balancing via NodePort services. Finally, it uses ingress for hostname-based routing and deploys a Minecraft server via a Helm chart, exposing it with a NodePort so it’s playable from the network. This matters because it turns small hardware into a real Kubernetes learning environment with practical, production-like patterns.

Why does the cluster need Kubernetes if each Raspberry Pi is still its own computer?

Kubernetes doesn’t merge Pis into one machine; it orchestrates containers across separate nodes. The video emphasizes that you can’t “glue” computers together, but you can coordinate where workloads run. Kubernetes handles placement and health checks, distributes replicas so no single node gets overloaded, and can scale by creating more container instances when demand rises.

What makes k3s a good fit for Raspberry Pi compared with standard Kubernetes?

k3s is a lightweight Kubernetes distribution created by Rancher Labs, designed to be less bulky than the typical cloud-focused Kubernetes (k8s). The tutorial repeatedly ties this to edge/IoT constraints: smaller devices need a faster, slimmer control plane that still provides core Kubernetes features for container orchestration.

What are the key Raspberry Pi boot changes needed before installing k3s?

The tutorial modifies the boot configuration to enable cgroups memory support (required for k3s and containers), sets a static IP, hostname, and disables auto-configuration. It also forces 64-bit mode (arm64) and enables SSH by creating an SSH file on the boot partition. These steps make the Pi reachable headlessly and ensure the runtime prerequisites for k3s are in place.

How do worker nodes join the cluster, and what role does the master play?

The first Pi installs k3s as the master/control plane. Worker nodes then join by running an install command that includes a token from the master, the master’s k3s URL (including port 6443), and a unique node name per worker. The master effectively “calls the shots,” and workers register and follow its instructions.

Why can’t the tutorial just open pod IPs to reach the deployed web apps?

Pod IPs are cluster-internal (cluster IP space). The video notes that the subnet used for pod networking isn’t accessible from the home network, so external clients can’t reach those addresses by default. Kubernetes Services provide the bridge by selecting pods via labels and exposing traffic through mechanisms like NodePort.

How do NodePort and Ingress differ in exposing services?

NodePort exposes a service on a port of every node, forwarding traffic to the selected pods (based on label selectors). Ingress routes HTTP requests by hostname/path to the right service, so users can access an app via a domain name instead of a node IP plus NodePort. The tutorial demonstrates both: NodePort for immediate access and Ingress for hostname-based routing (with local DNS/hosts-file testing).

Review Questions

  1. What specific boot configuration changes are required to support k3s and containers on Raspberry Pi OS Lite?
  2. Describe the master/worker join process for k3s, including what the worker needs from the master.
  3. Explain why a Kubernetes Service is required to access deployed pods from outside the cluster.

Key Points

  1. 1

    Use k3s (lightweight Kubernetes) to make Kubernetes practical on Raspberry Pi hardware.

  2. 2

    Treat each Pi as a separate node; Kubernetes orchestrates containers across nodes rather than merging machines.

  3. 3

    Prepare Pis headlessly by flashing Raspberry Pi OS Lite, enabling SSH, setting static networking, and enabling cgroups memory support.

  4. 4

    Install k3s on the first Pi as the master, then add worker nodes using the master’s token, k3s URL, and unique node names.

  5. 5

    Deploy applications with manifests (deployments) and verify cluster state with kubectl commands like “get nodes” and “get pods.”

  6. 6

    Expose workloads externally using Kubernetes Services (NodePort) because pod IPs are cluster-internal by default.

  7. 7

    Use Ingress for hostname-based routing and Helm charts (via Rancher) for deploying complex apps like Minecraft on ARM64.

Highlights

k3s is the enabling piece for running Kubernetes on Raspberry Pi because it’s lightweight and edge-friendly.
NodePort services turn internal pod workloads into reachable endpoints by forwarding traffic to pods selected by labels.
Ingress lets the cluster respond to a domain name (tested via local DNS/hosts-file edits) instead of relying on node IPs and ports.
Minecraft is deployed via a Helm chart through Rancher, then exposed with a NodePort so it’s playable from the network.

Topics

  • Raspberry Pi Cluster
  • k3s Kubernetes
  • Rancher Dashboard
  • Kubernetes Networking
  • Helm Minecraft

Mentioned

  • Rancher
  • Raspberry Pi
  • SUSE Linux
  • Boxboat
  • Docker
  • Hub.docker.com
  • k3s
  • k8s
  • CLI
  • API
  • TLS
  • SSH
  • IP
  • DNS
  • ARM64
  • IoT
  • VM
  • Ula
  • HTTP
  • TLS