How to play
- Join. Open the join link the host shares and pick a nickname.
- Team. You land in the Red or the Blue crew. Every ship of your fleet is a real pod on the team's Kubernetes cluster.
- Shipyard (2 min). Your crew shares 3 points; each protection costs 1. Pick the ones you think your fleet needs โ anybody in the crew can change them, the last change wins.
- Battle (10 min). Pick a weapon, then click a cell in the enemy's waters. Watch your reload bars: your guns reload after every shot, the crew's ๐ storm after 90 s. A ship that took an effective hit gets a ๐ก shield for 30 s, and a sunk ship comes back somewhere else in the fog. A ship that only restarted stays where it is: point at a cell for your crew's shots there, and fire again at your last target with โป or the R key.
- How to win.
โฑ When time runs out, the fleet that delivered more ๐ฆ cargo wins.
๐ฅ Instant win: from minute 2 on, put the whole enemy fleet out of action at the same time โ one effective hit per ship is enough โ and keep it down for 5 s.
Out of action means no ship is sailing or leaking (damaged, repairing, starting and sunk ships do not deliver cargo). The fleet must have taken at least one effective grid hit (๐ฅ ๐ง ๐ข) in this battle โ a ๐ storm alone does not count, although it can put a fleet without ๐ก radar out of action (the rollout swaps every ship at once). Each fleet that is out of action shows its own countdown; the first fleet whose 5 s hold completes loses. If both holds complete within the same moment (one 500 ms engine tick), cargo decides while both fleets stay down; as soon as one of them has a ship back in action, the other gets a fresh 5 s countdown.
- Debrief. See which protection stopped which hit: cargo lost after each weapon, the timeline per fleet, both loadouts side by side and a note for the classic mistakes.
How it fits together
Every box: the game term ยท the Kubernetes name ยท what it really does. Arrows show the real flows. Click a box to jump to its row in the glossary.
- โธ Kubernetes โ Real behaviour of the cluster โ the same in production.
- ๐ฎ Game rule โ Exists only in the game.
- ๐งช Simulated โ Our demo app behaves like this on purpose, so the effects are visible.
- Control plane
- Traffic path
- Ships and docks
- Protections
- Weapons and failures
- Observability
- Game rules
- Simulated (demo app)
- ๐ Your browser โ ๐ช Harbour gate: HTTPS
- ๐ช Harbour gate โ ๐งญ War room
- ๐งญ War room โ ๐๏ธ Fleet command: API
- ๐๏ธ Fleet command โ ๐ Fleet orders: patch
- ๐ Fleet orders โ ๐๏ธ Shipbuilders
- ๐๏ธ Shipbuilders โ ๐ The harbour (the ships): builds pods
- ๐งญ War room โ ๐ฆ Cargo dispatcher
- ๐ฆ Cargo dispatcher โ ๐ณ๏ธ Harbour master: 10 req/s per fleet
- ๐ณ๏ธ Harbour master โ ๐ The harbour (the ships): ready ships only
- ๐๏ธ Fleet command โ ๐ฅ Torpedo: delete pod
- ๐ฅ Torpedo โ ๐ The harbour (the ships): ship gone
- ๐๏ธ Fleet command โ ๐ Storm: rollout restart
- ๐ Storm โ ๐๏ธ Shipbuilders
- ๐งญ War room โ Fault-port weapons
- Fault-port weapons โ ๐ง Harbour fence
- ๐ง Harbour fence โ ๐ The harbour (the ships)
- ๐งโโ๏ธ Dock inspector โ ๐ข Ship: probes, restarts
- ๐ข Ship โ โ Dock: moored at
- ๐ The harbour (the ships) โ ๐ผ Lighthouse: traces
- ๐งญ War room โ ๐ผ Lighthouse: traces ยท events
Glossary
- โธ Kubernetes โ Real behaviour of the cluster โ the same in production.
- ๐ฎ Game rule โ Exists only in the game.
- ๐งช Simulated โ Our demo app behaves like this on purpose, so the effects are visible.
| Game term | Kubernetes | What it does | Try it |
|---|---|---|---|
| Control plane | |||
| War room โธ Kubernetes | control Deployment (1 pod) | Runs the game, serves this UI and talks to the Kubernetes API. | Read the ship's log: every โk8s:โ line is a real event the war room read from the Kubernetes API. |
| Fleet command โธ Kubernetes | Kubernetes API server | Where the war room changes fleet orders, sinks ships and rolls fleets. | Every ๐ฅ torpedo and ๐ storm you fire is one call the war room makes to the API server. |
| Fleet orders โธ Kubernetes | Deployment โฆ-red / โฆ-blue | Says how many ships and which equipment (probes, shutdown). | Pick protections in the shipyard: when the battle launches they are written into your fleet orders. |
| Shipbuilders โธ Kubernetes | ReplicaSet | Notices a missing ship and builds a new one (new pod name, new position). | Sink a ship with ๐ฅ: a ship with a new name appears in the enemy's fog, and the log says โSuccessfulCreateโ. |
| Traffic path | |||
| Harbour gate โธ Kubernetes | Ingress (Traefik) + TLS | Lets HTTPS from the internet in and routes it to the war room. | This page came through the gate: the join link, the game and this guide all use the same HTTPS address. |
| Cargo dispatcher ๐งช simulated | load generator (inside the war room) | Sends 10 requests/s to each fleet; every answered request is delivered cargo, every error or timeout is lost cargo. | Watch the ๐ฆ score in the header: it counts the answered requests, โlostโ counts the failed ones. |
| Harbour master โธ Kubernetes | Service โฆ-red / โฆ-blue | Spreads the requests over the ships that are ready. | Look at the cargo % in your ship rows: the harbour master shares the load between your ships. |
| Ships and docks | |||
| Ship โธ Kubernetes | Pod (target container) | One running copy of the app that answers cargo requests. | Your ship rows show the real pod names (e.g. red-x7k2q); a ship 2 or 3 cells long on the grid is one pod. |
| Dock โธ Kubernetes | Node (cop-k3s-1 / cop-k3s-2) | The server a ship is moored at. | The small line under each ship's name is its node. |
| Dock inspector โธ Kubernetes | kubelet | Runs on each node; runs the probes and restarts containers. | โLiveness probe failedโ and โBack-off restartingโ in the ship's log are the dock inspector at work. |
| Cargo hold โธ Kubernetes | memory limit (64 Mi) | A leak fills the hold until the ship capsizes (OOMKilled). | Watch the memory bar of a leaking ship climb towards 64 MiB. |
| Protections | |||
| Radar โธ Kubernetes | readinessProbe | Damaged or starting ships get no cargo. | Buy Radar, then take a ๐ง hit โ that ship's cargo share drops to 0 % instead of losing cargo. |
| Repair crew โธ Kubernetes | livenessProbe | Hung ships are restarted automatically. | Buy Repair crew, take a ๐ง hit โ after about 15 s the ship shows โRepairingโ and comes back. |
| Tug โธ Kubernetes | startupProbe | Protects slow-starting ships from the repair crew. | Buy Repair crew without Tug: your ships restart in a loop at launch (โBack-offโ in the log). |
| Lifeboats โธ Kubernetes | preStop + graceful shutdown | Leaving ships finish their cargo first. | Buy Lifeboats, then take a ๐ storm: almost no cargo is lost while the ships are swapped. |
| Extra ship โธ Kubernetes | replicas: 4 | One more ship carries cargo while one is down. | Buy it: your fleet sails with 4 ships instead of 3, and one torpedo hurts less. |
| Harbour fence โธ Kubernetes | NetworkPolicy | Only the war room may reach the ships' internal fault port. | Always on: nobody else can send ๐ง or ๐ข to a ship โ only the war room's calls get through the fence. |
| Weapons and failures | |||
| Torpedo โธ Kubernetes | pod deleted | The ship is gone; the shipbuilders send a new one. | Fire ๐ฅ at a ship: it is marked sunk, and a new pod starts slowly somewhere in the fog. |
| Engine damage โธ Kubernetes | app hangs / returns errors, process keeps running | Kubernetes still sees a running process โ only the probes notice (radar, repair crew). | Hit a fleet without Radar with ๐ง: the ship keeps getting cargo and loses it for 90 s. |
| Leak โธ Kubernetes | memory leak | Ends in OOMKilled and a container restart. | Fire ๐ข and wait: โOOMKilledโ appears in the log and the ship shows โRepairingโ (same pod, new container). |
| Storm โธ Kubernetes | rolling restart (rollout) | Every ship is replaced, one by one โ without ๐ก radar new ships count as ready at once, so the whole fleet is swapped in seconds. | Fire ๐ (team weapon, 90 s reload): โScaled up / Scaled down replica setโ lines follow in the log. |
| Observability | |||
| Lighthouse โธ Kubernetes | OpenTelemetry โ shared OTel Collector โ SigNoz | Every request, shot and restart is recorded. | After the battle, open SigNoz and look for the services steve-pod-pulse-control, steve-pod-pulse-red and -blue. |
| Game rules | |||
| Shield ๐ฎ game rule | not a Kubernetes feature | After an effective hit a ship can't be hit again for 30 s, so Kubernetes has time to react (probe โ restart โ back in service). | Hit the same ship again right away: the shot counts as โno effectโ โ. Your hit cell counts the shield down (๐ก 0:22); when it glows green, โป Fire again (or R) โ a ship that only restarted is still there. |
| Reload time ๐ฎ game rule | no Kubernetes equivalent | Your guns reload after every shot: 4 s in a crew of 1โ2, 6 s with 3โ4, 8 s with 5 or more. The ๐ storm reloads in 90 s per crew. | The reload bar above the enemy grid shows your crew's current time. |
| Fog ๐ฎ game rule | no Kubernetes equivalent | Enemy ships are hidden until hit. When no free water is left for a new ship, the fog rolls in: old marks are cleared. | Watch for โFog rolls in over โฆ watersโ in the ship's log. |
| Ship positions ๐ฎ game rule | no Kubernetes equivalent | Real pods have no position: the 8ร8 grid is a visualisation, each pod is drawn as a ship of 2 or 3 cells at a random spot. | A replaced pod (new name) shows up at a new random spot; a restarted container stays where it is. |
| Shipyard budget ๐ฎ game rule | no Kubernetes equivalent | 3 points per crew; each protection costs 1. | The budget meter in the shipyard turns red when you are over it. |
| Cargo score and winner ๐ฎ game rule | no Kubernetes equivalent | Answered requests count as cargo; the fleet with more cargo when time is up wins. | The header shows both scores live; the debrief explains the result in one sentence. |
| Instant win ๐ฎ game rule | no Kubernetes equivalent | From minute 2 on: the whole enemy fleet out of action at the same time (one effective hit per ship), held for 5 s. | A countdown appears as soon as a fleet is out of action. |
| Teams ๐ฎ game rule | no Kubernetes equivalent | Players are put into Red or Blue automatically so both crews stay even; the host can move people. | Join with a second device: it lands in the smaller crew. |
| Join link ๐ฎ game rule | no Kubernetes equivalent | Valid for 90 min from the start of the round (a running battle and its debrief are played to the end). | The host bar shows the link and the 6-character round code. |
| Simulated (demo app) | |||
| Slow start ๐งช simulated | START_DELAY=20s | Every new ship needs 20 s before it answers, so restarts hurt and the probes matter. | After a ๐ฅ hit the new ship shows โStartingโ for about 20 s. |
| Work time ๐งช simulated | 150โ400 ms per request | Each cargo request takes a while, so a ship that stops always has requests in flight. | Take a ๐ storm without lifeboats: the requests in flight are lost cargo. |
| Engine self-repair ๐งช simulated | engine fault expires after 90 s | Without a repair crew, a damaged ship recovers by itself after 90 s. | Hit a fleet without repair crew with ๐ง: the ship stays โDamagedโ for 90 s. |
| Leak rate ๐งช simulated | โ 4 MiB/s | Fills the 64 Mi cargo hold in about 15 s. | The memory bar of a leaking ship fills within seconds. |
| Fault port ๐งช simulated | :8081 /fault/โฆ | The demo app's internal door through which the war room breaks it (engine damage, leak). | Only reachable through the harbour fence: nobody else can break the ships. |