I was an idiot and ran up my AWS bill to something completely fucked - several thousand bucks, I don't even want to think about it - trying to run a simple PHP app on Kubernetes because I thought it would look "professional" on my resume. Turns out enterprise buzzwords don't pay the rent.
Why Your Server Keeps Running Out of RAM
So here's the thing nobody tells you about Kubernetes: it eats RAM like it's going out of style. The official docs say 4GB minimum but that's just for the control plane to not immediately crash. I found this out the hard way when my cheap DigitalOcean box kept dying with OOMKilled errors every few hours.
When you're trying to run anything on a Raspberry Pi or some crappy VPS, Kubernetes eats like half your RAM just sitting there doing nothing.
My stupid edge project was bleeding money on AWS - like close to a grand a month for 20 different locations running full K8s. When I switched to K3s on Raspberry Pis, it dropped to maybe a couple hundred a month after buying all the hardware. That's rent money right there.
The official K3s requirements are way more reasonable:
- K3s server: needs maybe 2GB RAM, works fine with whatever CPU you've got
- K3s agent: can run on 512MB RAM or less if you're not doing anything crazy
- Regular Kubernetes: wants 4GB+ just to boot up, before you run anything useful
My Local Development Pain Points
I used to run Minikube on my MacBook Pro. It had 16GB RAM which sounds like a lot until Docker Desktop and Minikube eat like 6-7GB just sitting there. Throw in VS Code, Chrome with approximately 47 tabs, and Slack, and my laptop starts sounding like it's about to take off.
What actually works without killing your laptop:
- K3d: K3s running in Docker containers. Starts fast, uses maybe 1GB RAM for a whole 3-node cluster
- Kind: Good for CI/CD pipelines, terrible for daily development because it's slow as molasses
- Colima: Kicked Docker Desktop off my Mac, uses way less RAM
- Podman: No stupid daemon running in the background, works great on Linux
With K3d I can run a whole cluster, VS Code, and Chrome without my laptop having a nervous breakdown. Try that with full Kubernetes and you're screwed.
Real gotcha: The K3s installer sometimes fails silently and you waste an hour wondering why kubectl
isn't working. Always check the logs first: journalctl -u k3s
IoT Projects That Actually Work
I've deployed containers on everything from Raspberry Pi Zeros (512MB RAM) to industrial PCs in factories. Here's what I learned:
Skip orchestration entirely for simple IoT:
- Single container? Just use
systemd
anddocker run
. Don't overcomplicate it. - Multiple containers? Docker Compose works fine and uses way less resources.
- Need clustering? That's when K3s makes sense.
Real IoT deployments I've done:
- Environmental sensors: K3s on Pi 4 running TensorFlow Lite for edge ML
- Factory monitoring: Podman on Red Hat CoreOS, no daemon needed
- Remote cameras: Just Docker Compose. K8s would be overkill and waste power.
Power consumption is a real pain when you're running stuff remotely. A Pi running K3s draws like 5-10W max. Full Kubernetes on some beefy x86 machine? That's 50-100W easy. If you're running on solar or battery, full K8s will drain your power budget fast.
Why Everyone Thinks They Need Kubernetes
Here's the truth: most teams don't need Kubernetes. They think they do because:
- Job requirements list it - "Must know K8s" is on every DevOps job posting
- Conference hype - Every talk is about scaling to Netflix levels
- Vendor marketing - Cloud providers make more money selling managed K8s
- Resume-driven development - Engineers want K8s experience
But if you're running 5 services with 10,000 users, Docker Swarm or even systemd will work fine. I've seen teams spend 6 months setting up Kubernetes for a PHP app that could run on a $5 VPS.
When to Use What (Based on Real Experience)
Use simpler alternatives when:
- Your server has less than 4GB RAM - Full K8s will eat everything
- It's just you or a small team - Complex orchestration is overkill
- You're prototyping - Don't waste time on enterprise bullshit you don't need
- You're paying the power bill - Edge deployments, IoT, dev laptops
- You want to understand what's actually happening - Less magic, more learning
Use full Kubernetes when:
- You have >100 services - At this scale, you need the complexity
- Multiple teams - Namespaces, RBAC, and multi-tenancy actually matter
- Compliance requirements - Enterprise security policies, auditing
- You already have K8s experts - Don't fix what isn't broken
Skip orchestration entirely for:
- Single applications -
systemd
+docker run
works fine - Static sites - Just use a CDN, what are you doing?
- Databases - Run PostgreSQL directly, not in containers
- Legacy apps that don't containerize well - Stop forcing it
Most projects start simple and get complex over time. Begin with Docker Compose, move to K3s when you need clustering, upgrade to full Kubernetes when you actually hit its limits. Don't start with the enterprise solution for a side project.