From a YAML file to a fixed pod — the whole story

1 · The cluster2 · Bring it up3 · The incident
namespace: demo one namespace = the only place the agent is allowed to look 🗄️ redis StatefulSet · 1 pod · redis:7-alpine port 6379 redis-0 ✓ 📦 orders Deployment · 2 pods · busybox logs “GET /orders 200” · 64Mi orders-…-1 ✓ orders-…-2 ✓ 💳 payments StatefulSet · 2 pods · busybox memory limit: 32Mi payments-0 ✓ payments-1 ✗ # payments container — payments-1 is the trap resources: limits: memory: 32Mi command: sh -c | if [ "$HOSTNAME" = "payments-1" ]; then echo "ERROR ECONNREFUSED redis:6379" ×5 echo "ERROR heap out of memory" head -c 200m /dev/zero | tail # grabs 200 MB inside a 32 MB box → # kernel kills it: OOMKilled, exit 137 else # payments-0 just serves happily while true; do echo "POST /pay 200"; sleep 5; done fi 💥 OOMKilled → CrashLoopBackOff svc redis :6379 svc orders :8080 svc payments :8080 ClusterIP services — the names the apps (and the agent's tools) use to reach each other Same manifest works on EKS — only the kubeconfig changes

← / → to step · space = play/pause · click an act name to jump · #step=N&clean for a clean screenshot