Home
Kubernetes EscapeRoom Labs
βΈοΈ Kubernetes Escape Room
Learn Kubernetes from Zero to Hero through 56 Interactive Puzzle Rooms
Decryption Tip
If the content doesn’t appear after entering the password in the selected room, please refresh the page (F5 or Ctrl+R).
Usage
- There are several ways to run the Kubernetes-EscapeRoom Labs.
- Choose the method that works best for you.
Using Docker is the easiest way to get started locally with the labs:
# GitHub Container Registry
docker run -it --pull=always -p 3000:3000 ghcr.io/nirgeier/kubernetes-escaperoom
Prerequisites:
- Docker and Docker Compose installed on your system
- No additional setup required
- The easiest way to get started with the labs
- Learn in your browser without any local installation
π Launch on Killercoda
Benefits:
- No installation required
- Pre-configured environment
- Works on any device with a web browser
- All tools pre-installed
For those who prefer to run it directly on their machine:
# Clone the repository
git clone https://github.com/nirgeier/Kubernetes-EscapeRoom
# Change to the Labs directory
cd Kubernetes-EscapeRoom/Labs
# Start with the setup lab
cd assets
# Follow the instructions in the README of each lab
cat README.md
Prerequisites:
- A Unix-like operating system (Linux, macOS, or Windows with WSL)
- Basic command-line tools
- Google Cloud Shell provides a free, browser-based environment with all necessary tools pre-installed.
- Click on the
Open in Google Cloud Shellbutton below:
- The repository will automatically be cloned into a free Cloud instance.
- Use CTRL + click to open it in a new window.
- Follow the instructions in the README of each lab.
Benefits:
- No local installation required
- Pre-configured environment
- Works on any device with a web browser
- All tools pre-installed
- Free tier available
Intro
- This tutorial teaches Kubernetes through puzzles designed as escape rooms.
- Each room covers a different K8s concept - from basic
kubectlcommands to writing custom operators and schedulers. - All labs run on Kind (Kubernetes in Docker) - no cloud account needed.
- Every room folder includes a
READMEthat describes the room’s objectives, hints, rules, and how to verify the solution. - The K8s Escape Room is a series of Kubernetes puzzles (Escape-rooms, similar to the real-life attractions).
- The puzzles are designed to teach players Kubernetes skills & features from beginner to expert level.
Pre-Requirements
- This tutorial will test your
KubernetesandLinuxskills. - You should be familiar with the following topics:
- Basic Linux commands and shell navigation
- Basic knowledge of
Dockerand containers - Basic understanding of YAML format
- A machine with Docker installed (for Kind clusters)
kubectlCLI toolkindCLI tool
Room Links
| # | Room | Topic | Difficulty |
|---|---|---|---|
| 01 | Kind Cluster Setup | Install Kind & create cluster | β |
| 02 | kubectl Basics | Essential kubectl commands | β |
| 03 | K8s Architecture | Control plane components | β |
| 04 | Namespaces | Create & manage namespaces | β |
| 05 | Context & Config | Kubeconfig management | β |
| 06 | Your First Pod | Create and manage pods | β |
| 07 | Multi-Container Pods | Sidecar & init containers | ββ |
| 08 | Pod Lifecycle | Pod phases & restartPolicy | ββ |
| 09 | Resource Limits | CPU/Memory requests & limits | ββ |
| 10 | Health Checks | Liveness & readiness probes | ββ |
| 11 | ReplicaSets | Scaling with ReplicaSets | ββ |
| 12 | Deployments | Rolling updates & rollbacks | ββ |
| 13 | DaemonSets | Run pods on every node | ββ |
| 14 | StatefulSets | Ordered, stateful workloads | ββ |
| 15 | Jobs & CronJobs | Batch & scheduled tasks | ββ |
| 16 | ClusterIP Services | Internal service discovery | ββ |
| 17 | NodePort & LoadBalancer | Exposing services externally | ββ |
| 18 | Ingress Controllers | HTTP routing rules | βββ |
| 19 | DNS & Service Discovery | CoreDNS & resolution | βββ |
| 20 | Network Policies | Pod-level firewall rules | βββ |
| 21 | ConfigMaps | External configuration | ββ |
| 22 | Secrets | Managing sensitive data | ββ |
| 23 | Volumes & Mounts | EmptyDir, HostPath | ββ |
| 24 | PersistentVolumes | Persistent storage | βββ |
| 25 | StorageClasses | Dynamic provisioning | βββ |
| 26 | ServiceAccounts | Pod identity | βββ |
| 27 | RBAC Roles | Access control | βββ |
| 28 | ClusterRoles | Cluster-wide RBAC | βββ |
| 29 | Pod Security | Pod Security Standards | βββ |
| 30 | SecurityContexts | Container security settings | βββ |
| 31 | Labels & Selectors | Organizing resources | ββ |
| 32 | Annotations | Resource metadata | ββ |
| 33 | Taints & Tolerations | Node scheduling constraints | βββ |
| 34 | Node Affinity | Advanced scheduling | βββ |
| 35 | Topology Spread | Even pod distribution | βββ |
| 36 | kubectl Debug | Debugging running pods | βββ |
| 37 | Log Analysis | Container logging patterns | βββ |
| 38 | Events & Troubleshooting | Cluster events | βββ |
| 39 | Resource Quotas | Namespace limits | βββ |
| 40 | LimitRanges | Default container limits | βββ |
| 41 | Horizontal Pod Autoscaler | Auto-scaling pods | ββββ |
| 42 | Helm Charts | Package management | βββ |
| 43 | Kustomize | Overlay-based customization | βββ |
| 44 | Custom Resources (CRDs) | Extending K8s API | ββββ |
| 45 | Operators | Building K8s operators | ββββ |
| 46 | Custom Scheduler | Scheduler framework | βββββ |
| 47 | Admission Webhooks | Mutating & validating | βββββ |
| 48 | API Aggregation | Extending the API server | βββββ |
| 49 | etcd Operations | Backup & restore | ββββ |
| 50 | Multi-Cluster Kind | Federation basics | ββββ |
| 51 | Service Mesh Basics | Traffic management | ββββ |
| 52 | GitOps with ArgoCD | Declarative delivery | ββββ |
| 53 | Pod Disruption Budgets | High availability | ββββ |
| 54 | Priority & Preemption | Pod scheduling priority | ββββ |
| 55 | CSI Drivers | Container Storage Interface | βββββ |
| 56 | K8s the Hard Way | Manual cluster bootstrap | βββββ |
| 99 | Exit Exam | Final Challenge | π |