Investigations

Kubernetes Pokemon Checker

Go November 2024

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.

What this project demonstrates

Fetches random Pokemon from PokeAPI with pod ID display
Demonstrates load balancing across Kubernetes replicas
Hands-on exercises: scaling, self-healing, rolling updates
Automated Docker build and kubectl deploy script
Mermaid architecture and sequence diagrams
First in a three-part Kubernetes learning series

Technologies

KubernetesDockerMicroservicesPokemonDevOps

© 2026 Jonathan Leahy · v0.8.5