A Kubernetes learning project deploying a load-balanced Go web app that displays random Pokemon while demonstrating pods, services, and self-healing.
This is the first in a series of three Kubernetes investigations, each one adding complexity. I wanted to learn Kubernetes properly — not just copy-paste YAML, but actually understand what every resource does and why.
The app itself is deliberately simple: a Go web server that fetches a random Pokemon from the PokeAPI and displays it alongside the pod ID that served the request. That last bit is key — when you've got multiple replicas behind a LoadBalancer, refreshing the page shows different pod IDs, making load balancing tangible rather than theoretical.
The deployment uses a Kubernetes Deployment with configurable replicas and a LoadBalancer Service. The hands-on exercises are where the learning happens: scale up to 5 replicas and watch requests distribute, delete a pod and observe Kubernetes recreate it within seconds, perform a rolling update and see zero-downtime deployment in action.
The deploy.sh script automates the Docker build, push, and kubectl apply cycle so you can iterate quickly. The README doubles as a comprehensive tutorial with Mermaid architecture diagrams showing the full request flow.