Game Days for Cluster Resilience in Kubernetes

Game Days for Cluster Resilience in Kubernetes

Your cluster looks healthy until the day something breaks for real. A game day is a planned, safe rehearsal of failure that lets your people and your platform practice together, so the first time you meet a problem is never the first time you handle it.

Every school has fire drills. Nobody believes the building will burn down this week, and nobody wants to leave a warm classroom in the middle of a lesson. Yet we practice, because on the day a real fire starts, there is no time to invent a plan. Students already know the exits, teachers already know their roles, and the whole building moves calmly because the movements have been rehearsed. A drill does not prevent fires. It makes sure that when one happens, the damage is small and the recovery is quick.

A Kubernetes cluster deserves the same respect. It contains thousands of moving parts, built by many teams, depending on networks, disks, certificates, and cloud services that you do not fully control. Something in that tangle will eventually fail, and the interesting question is not whether, but how well you will cope. A game day is the fire drill for your platform: a scheduled event where you deliberately cause controlled failures, watch what happens, and learn while the stakes are low. This tutorial explains the idea from the ground up, shows you how to plan and run one safely, and describes what to do with everything you learn.

1What Is a Game Day?

A game day is a planned event where a team practices handling failure on purpose, in a controlled way, and learns from the result.

The idea in plain words

Imagine telling your team: “On Thursday afternoon, between two and four, we will switch off one of the machines in our cluster, and we want to see what happens.” Everyone knows it is coming. Observers are watching charts, someone is taking notes, and a person with authority is ready to stop the exercise if anything goes badly. When the machine goes dark, the team watches whether workloads move elsewhere, whether alerts fire, whether users notice, and whether the people involved know what to do. At the end, the team sits down together and writes down what surprised them.

That is the entire concept. A game day combines three things that are each valuable alone and far more valuable together: a deliberate failure, careful observation, and honest conversation afterward.

What a game day is not

A game day is not a surprise attack on your own colleagues, and it is not an attempt to prove that someone made a mistake. It is not random destruction of production systems for entertainment. It is also not a replacement for good design. Game days reveal weaknesses; they do not repair them. The repair comes from the work that follows, and the main product of a game day is a list of well-understood improvements.

Simple Analogy

Think of a flight simulator. Pilots practice engine failures, bad weather, and instrument problems in a machine that behaves like a real aircraft but cannot hurt anyone. A game day is a simulator that happens to use your real cluster, with real software and real people, but with the failures chosen, announced, and limited in advance.

Why practice matters even for well-built systems

Teams often believe that a well-designed cluster does not need rehearsal. Design, though, only describes how a system should behave. Reality differs because of small configuration mistakes, settings copied from an old project, assumptions that were true last year, and dependencies nobody remembered. Rehearsal reveals the gap between the intended behavior and the actual behavior, and it does so when you can afford the discovery.

i
Good to Know

Game days improve two things at the same time: the technology and the people. Teams usually find that the biggest problems are not broken machines but unclear ownership, missing documentation, and uncertainty about who decides what during an incident.

Plan
Choose a failure, a hypothesis, and a safe limit
Break
Cause the failure deliberately and observe
Learn
Review honestly and fix what you found

2Why Clusters Fail in Ways You Did Not Expect

Complex systems rarely break in the way their designers imagined. Understanding why helps you choose what to practice.

Reliability and resilience are different

Reliability describes how often a system works as intended. Resilience describes how well it recovers and keeps serving when something goes wrong. A system can be reliable in calm conditions and still fragile, because it has never faced a hard day. Resilience is the ability to absorb a hit, adapt, and continue. Kubernetes was designed with resilience in mind: it restarts failed containers, moves workloads off failed machines, and keeps desired state in a replicated store. But those features only help if your applications and your configuration use them correctly.

The gap between a feature and a guarantee

Kubernetes offers many resilience features, but each depends on settings that you control. Running several copies of an application protects you only if those copies are not all placed on the same machine. A health check protects you only if it actually detects the failure. Automatic scaling helps only if capacity exists and the new copies can start quickly. A feature that is present but misconfigured gives a dangerous false sense of safety, and the only way to find out whether it truly works is to test it.

Trap 1

Replicas on the same node

Three copies of an application, all running on one machine, behave like a single copy when that machine fails.

Trap 2

Health checks that say yes to everything

A check that only confirms the process is alive cannot detect a broken connection to its database.

Trap 3

Capacity that exists only on paper

Autoscaling cannot help if there is no room left, or if new machines take ten minutes to arrive.

Trap 4

Hidden dependencies

A service quietly relies on a certificate, a name lookup, or an external system that nobody listed as critical.

Trap 5

Untested recovery steps

Backups exist, but nobody has ever restored one, so nobody knows whether it works or how long it takes.

Trap 6

Outdated runbooks

Instructions describe a system as it was two years ago, and responders discover this in the middle of an emergency.

Simple Analogy

A household may own a fire extinguisher, a spare key, and an emergency flashlight. Each item sounds protective. But if the extinguisher is empty, the spare key is for a lock that was changed, and the flashlight has no batteries, the household is no safer than one with nothing. Checking each item is the only way to know.

!
Common Misconception

Many teams assume that because Kubernetes “self-heals”, their applications are automatically resilient. Self-healing restarts and reschedules containers; it does not make an application tolerate lost connections, partial failures, or slow dependencies. Those behaviors live in your code and configuration.

3Where Game Days Come From: Chaos Engineering Principles

The practice grew from a simple discovery: the best way to trust a system is to watch it handle failure.

A short history

Large technology companies learned decades ago that waiting for failures to appear on their own was too costly. Some began rehearsing disasters on purpose. One well-known early example was a tool that randomly shut down servers in production during working hours, so engineers were forced to build services that survived such losses. Other organizations ran large exercises in which teams practiced recovering from simulated data center outages, and cloud providers popularized the term game day for hands-on events where teams work through realistic failures together. Over time, these ideas were collected into a discipline called chaos engineering, which has published principles that guide how experiments are designed.

The core principles in everyday language

1

Start with a steady state

Define what “working normally” looks like using measurable numbers, such as the share of successful requests and typical response time. You cannot see the effect of a failure without knowing the baseline.

2

Form a hypothesis

State a prediction, such as “if one machine disappears, users will see no errors and the lost workloads will be replaced within two minutes”. An experiment tests a prediction; without one, you are merely breaking things.

3

Introduce realistic events

Use failures that actually happen: machines dying, networks slowing, disks filling, dependencies timing out. Realism makes the lessons relevant.

4

Limit the blast radius

Begin with small experiments that can only affect a small part of the system, and expand only as confidence grows. Safety is part of the method, not an obstacle to it.

5

Compare and learn

Compare what happened with what you predicted. Differences between the two are the discoveries that make the exercise worthwhile.

6

Automate over time

Once an experiment is understood, make it repeatable so that it runs regularly and catches regressions without relying on memory or heroics.

flowchart LR
  A["Define steady state"] --> B["Form hypothesis"]
  B --> C["Inject a controlled failure"]
  C --> D["Observe what really happens"]
  D --> E{"Matches hypothesis?"}
  E -->|"Yes"| F["Confidence gained: widen scope next time"]
  E -->|"No"| G["Weakness found: fix it"]
  G --> A
  F --> A
        
FIG 1 — The experiment loop behind every game day
i
Good to Know

A hypothesis that turns out wrong is a success, not a failure. The whole point is to find weaknesses while you control the timing. An exercise where everything goes perfectly deserves a second look: perhaps the failure was too gentle or the observation too shallow.

4The Building Blocks of Resilience You Will Be Testing

Kubernetes gives you a toolbox for surviving failure. A game day checks that each tool is actually in place and working.

Redundancy

Multiple replicas

Several copies of each workload, so that losing one copy does not interrupt service.

Placement

Spread and anti-affinity rules

Instructions that keep copies on different machines and in different zones, so one failure cannot take them all.

Detection

Health probes

Checks that tell Kubernetes when a container is alive, ready for traffic, or still starting.

Protection

Disruption budgets

Limits on how many copies may be taken down at once during planned maintenance.

Scaling

Autoscaling

Automatic addition of workload copies and machines when demand rises or capacity is lost.

Fairness

Requests, limits, and priorities

Declared resource needs and importance, so critical workloads win when resources are scarce.

Shutdown

Graceful termination

Time and hooks that let a workload finish its current work and stop accepting new work before it exits.

Isolation

Network policies and timeouts

Rules and client settings that stop one failing component from dragging others down with it.

Recovery

Backups and restore procedures

Copies of cluster state and application data, together with a practiced method for bringing them back.

!
Common Mistake

Treating this list as a checklist to tick off on paper. The question for each item is never “have we configured it?” but “have we watched it work when something actually failed?” Only the second question produces real confidence.

Building blockWhat can silently go wrongWhat a game day reveals
ReplicasAll copies land on one machine or zoneWhether losing one machine or zone leaves enough copies running
ProbesChecks are too lenient, too strict, or slow to reactWhether traffic stops going to broken copies quickly and healthy copies are left alone
Disruption budgetsSet too tight, blocking maintenance, or too loose, allowing outagesWhether planned and unplanned disruptions behave as intended
AutoscalingNo spare capacity, slow node provisioning, hitting account limitsHow long recovery really takes under load
Graceful shutdownWorkloads drop in-flight requests when stoppedWhether users see errors during restarts and deployments
BackupsBackups are incomplete, expired, or impossible to restoreWhether recovery works and how long it takes

5Failure Domains: The Layers Where Things Break

A failure domain is the set of things that fail together. Knowing your domains tells you which failures to rehearse.

What a failure domain is

Failures are rarely truly random. They tend to affect groups of things that share a common cause. All containers on one machine share that machine. All machines in one data center zone share that zone’s power and network. All workloads in a cluster share the cluster’s control plane. Each of these groupings is a failure domain, and resilience is largely about making sure that no single domain, when it fails, takes everything with it.

flowchart TD
  R["Region"] --> Z1["Zone A"]
  R --> Z2["Zone B"]
  R --> Z3["Zone C"]
  Z1 --> N1["Node"]
  Z1 --> N2["Node"]
  Z2 --> N3["Node"]
  Z3 --> N4["Node"]
  N1 --> P1["Pods"]
  N2 --> P2["Pods"]
  N3 --> P3["Pods"]
  N4 --> P4["Pods"]
  CP["Control plane and etcd"] --- R
  D["External dependencies: DNS, identity, databases, registries"] --- R
        
FIG 2 — Nested failure domains, from a single pod up to a whole region

A ladder of domains

DomainExample failureTypical frequencyRehearsal difficulty
Container or podProcess crashes, runs out of memory, or fails its health checkConstantEasy
NodeMachine loses power, kernel crashes, disk fills, or the node agent stopsRegular in large fleetsEasy to moderate
ZoneA whole data center area loses power or networkRare but seriousModerate to hard
Control planeInterface server unreachable, or database members lostUncommonModerate to hard
DependencyName resolution, identity provider, database, or image registry becomes slow or unavailableRegularModerate
RegionEntire cloud region becomes unavailableVery rareHard and expensive
Human and processMistaken change, expired certificate, accidental deletionFrequentEasy to moderate
Simple Analogy

Think of a building’s electricity. A single bulb failing affects one room. A tripped breaker affects a floor. A power cut to the street affects the whole building. A resilient building has a backup plan for each level, and a fire drill practices each of them, not only the most dramatic one.

i
Practical Advice

Start your game day program at the bottom of the ladder, with pods and nodes, where failures are common and rehearsal is cheap. Work upward as your confidence and your safety practices improve. Teams that jump straight to simulating a regional disaster usually learn less, because their basic gaps hide the interesting findings.

6Game Days Compared with Related Practices

Several practices sound similar. Knowing how they differ helps you choose the right exercise for each goal.

A family of resilience exercises

Organizations use a range of exercises to build confidence in their systems, and each answers a different question. A game day is a collaborative, scheduled event focused on people and platform together. Automated chaos experiments run continuously in the background to catch regressions. Disaster recovery drills rehearse large-scale restoration, often with strict targets for time and data loss. Tabletop exercises walk through a scenario in conversation without touching any system. Load tests push a system with traffic to find capacity limits. These practices complement each other, and mature teams use all of them.

PracticeMain questionWho takes partTouches real systems?Typical rhythm
Game dayHow do our systems and our people handle this failure together?Platform, application, and support teams, plus observersYes, in a controlled wayQuarterly or a few times a year
Automated chaos experimentDoes this known behavior still hold after every change?Mostly automation, owned by an engineering teamYes, automaticallyContinuous or per release
Disaster recovery drillCan we restore service within our recovery targets after a major loss?Broad group, often including leadershipYes, usually in a separate environmentOnce or twice a year
Tabletop exerciseDo we know who decides and who acts if this happens?Responders and decision makersNo, discussion onlyOften, because it is cheap
Load testHow much traffic can this handle before it degrades?Performance and application engineersYes, with generated trafficBefore major launches
i
Practical Advice

A tabletop exercise is a perfect first step. In one hour of structured conversation, you can discover missing runbooks, unclear ownership, and confusing escalation paths without risking any system. Many teams run a tabletop version of each scenario before running the real thing.

Simple Analogy

Learning to handle emergencies at sea works in stages. First the crew talks through what each person would do. Then they practice the steps on the dock. Finally they rehearse at sea in calm weather. Tabletop exercises, automated experiments, and full game days are the same progression for a cluster.

7The People: Roles in a Game Day

A game day is a team sport. Clear roles keep it calm, safe, and educational.

Who does what

Because a game day mixes deliberate disruption with careful observation, it needs a few clearly named roles. Without them, people either crowd around the same problem or assume someone else is watching safety. Assigning roles in advance, and telling everyone what each role means, is one of the cheapest ways to improve the quality of the exercise.

Role

Facilitator

Runs the event, keeps to the schedule, introduces each scenario, and keeps discussion on track. Does not troubleshoot; their job is the process.

Role

Safety owner

Holds the authority to stop the exercise instantly if user impact or risk exceeds the agreed limits. Watches the abort conditions throughout.

Role

Injector

Introduces the failure at the agreed time, exactly as planned, and can undo it quickly. Keeps a record of every action taken.

Role

Responders

The people who handle the situation as if it were real, using normal tools, runbooks, and communication channels, without advance hints.

Role

Observers

Watch dashboards and behavior, comparing reality with the hypothesis, and noting anything surprising without intervening.

Role

Scribe

Records a timestamped timeline of what was done, what was seen, and what was decided. This record becomes the heart of the review.

Role

Stakeholder liaison

Informs affected teams and business owners before, during, and after, so nobody is startled or misled by the exercise.

Separating the doers from the watchers

One principle matters above all: the people who cause the failure should not be the people who respond to it. When the same person both injects and fixes a problem, the exercise tests nothing about how the team would really cope. Many teams split participants into a planning group, who know everything, and a responding group, who know only that a game day is happening, and sometimes only the time window. This keeps the response realistic while the planning group maintains safety.

!
Common Mistake

Letting leaders or experts hover over responders and quietly hint at answers. It feels helpful, but it erases the most valuable finding: how the team behaves when the experts are unavailable. Observers observe; they do not rescue, unless the safety owner calls for it.

Make participation safe

Say clearly and repeatedly that nobody is being graded. People who fear embarrassment hide mistakes, and hidden mistakes are exactly what you are trying to find.

Rotate roles

Let different people be responders, facilitators, and scribes over successive game days, so knowledge spreads and nobody becomes the only person who understands the process.

8Choosing the Right Scenarios

The best scenarios come from real risk, real history, and real worry, not from a list of things that are fun to break.

Where good scenarios come from

The most useful scenarios are drawn from your own world. Review your past incidents and ask which ones could happen again. Ask your engineers what keeps them awake at night. Look at your architecture for places where one component, if lost, would hurt many things. Read the postmortems of other companies, and ask whether the same story could happen to you. Finally, consider the changes you are about to make: a migration, an upgrade, a new region. Rehearsing before such changes catches problems early.

1

List candidate failures

Gather ideas from past incidents, architecture reviews, and team concerns. Do not filter yet; quantity helps at this stage.

2

Rate each by likelihood and impact

Give every candidate a rough score for how likely it is and how much damage it would cause. Likely and damaging failures rise to the top.

3

Rate each by uncertainty

Ask how confident you are that the system handles it. The scenarios you are least sure about teach you the most.

4

Check readiness and safety

Discard or postpone scenarios that you cannot make safe yet, and note what groundwork would make them possible later.

5

Pick two or three for one session

A focused game day with a few well-chosen scenarios teaches more than a marathon of many rushed ones.

A catalog of failure scenarios for Kubernetes

CategoryExample scenariosWhat you learn
WorkloadTerminate pods; make a workload fail health checks; exhaust a workload’s memorySelf-healing, probe quality, graceful shutdown, restart behavior
NodePower off a machine; stop the node agent; fill a node’s disk; drain a nodeRescheduling speed, disruption budgets, capacity headroom
ZoneRemove all nodes in one zone; block traffic to a zoneSpread rules, cross-zone capacity, data placement
NetworkAdd delay or packet loss; cut communication between two services; break name resolutionTimeouts, retries, circuit breaking, dependency awareness
Control planeMake the interface server unavailable; stop one database member; slow the databaseWhich workloads depend on the control plane, and how humans operate without it
Storage and stateDetach a volume; make a volume slow or read-only; restore from backupStateful workload recovery, data protection, restore time
DependenciesMake a database, queue, identity service, or registry slow or unreachableDegradation behavior and hidden critical paths
Change and configurationRoll out a faulty release; expire a certificate; rotate a secret; mis-set a limitRollback speed, detection of bad changes, certificate hygiene
CapacityCreate a traffic surge; consume cluster resources; hit account quotasAutoscaling speed, priority handling, quota awareness
i
Good to Know

Mix easy wins with a real stretch. Include one scenario the team expects to pass, to build confidence and momentum, and one scenario where the team is genuinely unsure. The first sets a positive tone; the second delivers the learning.

9Defining Steady State and Writing a Good Hypothesis

Without a clear picture of normal and a clear prediction, a game day becomes mere destruction.

Steady state: the picture of normal

Steady state is described with a few numbers that reflect what users experience, not with internal details. Good examples include the percentage of requests that succeed, the time within which most requests complete, the number of orders processed per minute, and the length of important queues. Internal measures like processor usage matter for diagnosis but are poor definitions of health, because a system can use a lot of processor and serve users perfectly, or use little and be badly broken.

Steady state

Success rate

The share of user requests that complete successfully, measured at the edge where users arrive.

Steady state

Response time

How long most requests take, ideally at a high percentile so the slow tail is visible.

Steady state

Business throughput

A number that reflects real value, such as completed purchases or processed messages per minute.

Steady state

Backlog

How much work is waiting. A growing backlog often reveals trouble before errors appear.

The shape of a good hypothesis

A strong hypothesis has four parts: the failure being introduced, the expected effect on users, the expected behavior of the platform, and the expected time to recover. For example: “If one worker machine disappears, user requests continue to succeed above the agreed rate, the lost workloads are rescheduled onto other machines, alerts fire within a minute, and everything returns to normal within five minutes.” Notice that this statement can be proved wrong, which is exactly what makes it useful.

HYPOTHESIS-EXAMPLE-01 Good
Failure

One worker machine in the main application pool becomes unreachable.

Expected User Effect

The success rate stays above the agreed objective and response times rise only slightly for a short period.

Expected Platform Behavior

Affected workloads are marked unavailable, replacements are scheduled on healthy machines, and traffic stops flowing to lost copies within the expected detection time.

Expected Recovery

The system returns to its normal replica count and latency within a stated number of minutes, and the on-call responder is notified automatically.

!
Common Mistake

Writing a hypothesis that cannot fail, such as “the system will recover”. Without a number and a time, any outcome can be called a success, and the exercise teaches nothing. Be specific enough that someone could say “that did not happen”.

i
Practical Advice

Record your hypothesis before the exercise, in writing, and share it with the observers. People remember events differently afterward and tend to claim they predicted whatever happened. A written prediction keeps the review honest.

10Safety First: Blast Radius, Guardrails, and the Stop Button

A game day that harms real users has failed, however much was learned. Safety is designed in, not hoped for.

Blast radius: how far can the damage spread?

Blast radius is the portion of your system and your users that an experiment could affect if everything goes wrong. A good plan makes the blast radius deliberately small at first. You might target a single workload, a single machine, a copy of the application used only by internal staff, or a tiny share of traffic. As you gain trust in the process and in the system, you widen the radius step by step.

flowchart LR
  A["Step 1: Test environment, one workload"] --> B["Step 2: Test environment, whole service"]
  B --> C["Step 3: Production, internal users or tiny traffic share"]
  C --> D["Step 4: Production, one node or one zone in off-peak hours"]
  D --> E["Step 5: Production, wider scope during working hours with full readiness"]
        
FIG 3 — Widening the blast radius gradually as confidence grows

Abort conditions: deciding the limits in advance

Before the exercise begins, the team agrees on exact conditions that trigger an immediate stop. These should be measurable and tied to user impact. Examples include the success rate falling below a stated number, response time exceeding a stated limit, error budget burning faster than a stated rate, or any sign of data loss. Deciding limits in calm conditions prevents the temptation to keep going “just a little longer” when the exercise is already causing harm.

Guardrail

Measurable abort thresholds

Numbers that trigger an immediate stop, agreed and written down before the event.

Guardrail

A named safety owner

One person with clear authority to call a stop without needing anyone’s permission or agreement.

Guardrail

A tested undo

A quick, rehearsed way to reverse the failure, practiced before the event so it works under pressure.

Guardrail

Time limits

A fixed duration for each scenario, after which the failure is removed regardless of progress.

Guardrail

Approvals and announcements

Sign-off from system owners and advance notice to affected teams and support staff.

Guardrail

Exclusion of sensitive periods

No exercises during major launches, peak business periods, or while another incident is open.

!
Never Skip

Never start an experiment unless you know how to stop it and have tested that stopping works. An injected failure that cannot be reversed is not an experiment; it is an outage you created yourself.

“A good game day is boring for the customers and fascinating for the engineers.”

Protecting data and people

Be especially careful with anything involving stored data, security controls, or regulated information. Prefer scenarios that test recovery using copies in a separate environment. Make sure that nothing in the exercise exposes secrets, weakens access controls beyond the test scope, or violates agreements with customers. Finally, remember that people are part of the system: schedule exercises at reasonable hours, avoid exhausting responders, and treat the exercise as work that deserves normal rest afterward.

11Preparing the Ground: Environment and Readiness

Most of the success of a game day is decided before it starts.

Where should you run it?

A common question is whether to practice in a test environment or in production. Each has strengths. A test environment is safe and allows bold experiments, but it often differs from production in size, data, traffic, and configuration, so the lessons may not transfer perfectly. Production is the real thing, which makes the lessons truthful, but it carries real risk to real users. The usual answer is a progression: begin in a realistic test environment to learn the basics and polish the process, then move carefully to production with a small blast radius when the team is ready.

Strengths of a test environment

  • No risk to real customers
  • Freedom to try aggressive scenarios
  • Good place to practice the process and tools
  • Easier to schedule at any time

Weaknesses of a test environment

  • Often smaller and quieter than production
  • May lack real traffic patterns and realistic data
  • Configuration drift can make results misleading
  • Responders may not take it as seriously

A readiness checklist

1

Observability is in place

You can see success rate, latency, workload health, node health, and queue sizes in near real time. If you cannot see the effect of a failure, you cannot learn from it.

2

Alerts and on-call are working

Responders receive notifications through the real channels, and the real escalation path is available, so you test the actual process.

3

Backups are current

Before testing anything that could affect data, confirm recent backups exist and that you know how to restore them.

4

Runbooks are within reach

Responders know where to find procedures, even if those procedures turn out to be incomplete, because that is something worth learning.

5

No other incidents or big changes are underway

Confirm that no release, migration, or open incident could confuse the results or make the exercise unsafe.

6

Everyone knows their role and the stop signal

Hold a short briefing, restate the abort conditions, and confirm how to call a stop.

!
Common Mistake

Skipping the observability check because “we have dashboards”. Open the dashboards before the event and confirm they show live data, update quickly, and cover the services you are about to disturb. A blind game day is just an outage with a calendar invitation.

12The Shape of the Day: Before, During, and After

A game day has a rhythm. Following it keeps the event safe and the learning sharp.

flowchart LR
  A["Weeks before: choose scenarios, write hypotheses, approve plan"] --> B["Days before: announce, verify readiness, rehearse the undo"]
  B --> C["Kickoff: roles, rules, abort conditions"]
  C --> D["Scenario run: baseline, inject, observe, respond, restore"]
  D --> E["Hot debrief: first impressions while fresh"]
  E --> F["Days after: full review and action items"]
  F --> G["Weeks after: fix, retest, share findings"]
        
FIG 4 — The life cycle of a game day, from planning to follow-up

The structure of a single scenario

1

Confirm the baseline

Before injecting anything, check that the system is healthy and steady-state numbers look normal. Starting from an unhealthy system makes results meaningless.

2

Announce the start

Post in the shared channel that the scenario is beginning, so that observers and stakeholders have context for anything unusual they see.

3

Inject the failure

The injector introduces the planned failure at the agreed time, and the scribe records the exact moment.

4

Observe and respond

Responders detect and handle the situation as if it were real while observers compare events with the hypothesis. The safety owner watches the abort conditions.

5

Restore and verify

When the time limit is reached, or when the team has handled the situation, remove the failure and confirm the system returns to steady state.

6

Hot debrief

Spend ten to fifteen minutes capturing first impressions while memories are fresh, before moving to the next scenario.

How long should it take?

For a first game day, a half-day is plenty: perhaps thirty minutes of briefing, three scenarios of about forty-five minutes each including debriefs, and a closing conversation. Resist the urge to cram. Fatigue reduces both safety and learning, and a rushed final scenario is more likely to cause mistakes than insight.

i
Practical Advice

Leave a buffer between scenarios for the system to settle fully. Running a second failure while the first is still recovering confuses the evidence, and each scenario deserves a clean baseline.

13Scenario Deep Dive: Pod and Workload Failures

The simplest failures are also the most revealing. Start here.

What happens when a pod dies

When a container exits or a pod is removed, the controller responsible for that workload notices that fewer copies exist than requested and creates a replacement. The scheduler picks a machine, the node agent pulls the image if needed, starts the container, and runs its readiness checks. Only when those checks pass does traffic flow to the new copy. Every one of these steps takes time, and the total time is the window during which you have reduced capacity.

sequenceDiagram
  participant I as Injector
  participant P as Pod
  participant C as Controller
  participant S as Scheduler
  participant N as Node agent
  participant L as Load balancer
  I->>P: Terminate pod
  P-->>L: Stops answering
  L->>L: Removes pod from rotation
  C->>C: Notices missing replica
  C->>S: Request replacement
  S->>N: Place pod on healthy node
  N->>N: Pull image and start container
  N->>L: Readiness check passes
  L->>L: Adds new pod to rotation
        
FIG 5 — The path from a lost pod to a ready replacement

Questions to answer during the exercise

Question

Did users notice?

Compare the success rate and response time before and during the failure. Even a brief spike in errors is a finding.

Question

How fast was the replacement ready?

Measure the time from failure to a ready replacement. Slow image pulls or long startup times show up here.

Question

Did shutdown drop requests?

Check whether in-flight requests failed when the pod terminated. This reveals whether graceful shutdown works.

Question

Did the remaining pods cope?

With one copy missing, others carry extra load. See whether they stayed healthy or began failing in turn.

Common findings

Slow startup

The replacement takes minutes to become ready because the application warms up slowly or the image is large. During that time, capacity is reduced. Fixes include smaller images, faster startup, and keeping spare capacity.

Dropped requests on shutdown

The pod is removed from the load balancer and terminated at nearly the same moment, so requests already in progress are cut off. Fixes include a short pause before shutdown begins, handling the termination signal properly, and allowing enough termination time.

Probes that mislead

The readiness check reports success before the application can actually serve, sending traffic to a copy that fails. Or the liveness check is so strict that healthy but slow copies are killed during busy periods, making things worse.

Restart storms

A workload crashes repeatedly because a dependency is down, and its restarts create heavy load. Backoff behavior and sensible limits prevent the cascade.

ANTI-PATTERN-01 Avoid
Problem

A single-replica workload is treated as production-ready because Kubernetes will restart it if it fails.

Why It’s Harmful

Every restart means a gap in service, lasting as long as scheduling, image pulling, and startup take. During that gap, users see errors and no redundancy exists.

Correct Approach

Run at least two copies of anything that must stay available, spread across machines, and verify with an exercise that losing one copy leaves users unaffected.

14Scenario Deep Dive: Node Failures, Drains, and Capacity

Machines fail, get patched, and get replaced constantly. Your platform should treat that as routine.

Three kinds of node events

A node can leave service in different ways, and each tests something different. A planned drain politely asks workloads to move away, respecting disruption budgets, and is what happens during maintenance and upgrades. An unplanned crash gives no warning: the node simply stops responding, and the control plane waits for a timeout before declaring it lost and rescheduling its workloads elsewhere. A partial failure leaves the node alive but unhealthy, such as a full disk or a stuck container runtime, which is often the hardest to detect and handle.

EventHow workloads moveTypical delayWhat to check
Planned drainWorkloads are evicted gradually, respecting disruption budgetsSeconds to minutes, controlledThat budgets allow progress and do not block or permit too much disruption
Sudden crashControl plane waits for the node to be declared unreachable, then workloads are rescheduledSeveral minutes by default unless tunedWhether the default detection time is acceptable and traffic avoids dead copies sooner
Partial failureDepends on whether the problem is detected at allMay never self-healWhether node problem detection exists and triggers replacement

Capacity: the question behind every node failure

When a machine disappears, its workloads need somewhere to go. If the cluster has no spare room, replacement pods stay pending, and users feel the loss for as long as it takes to add capacity. Node failure exercises are, in essence, capacity exercises. They answer: how much headroom do we really have, how quickly can the autoscaler add machines, and do critical workloads win over less important ones when space is tight?

flowchart TD
  A["Node lost"] --> B["Workloads need new homes"]
  B --> C{"Spare capacity available?"}
  C -->|"Yes"| D["Pods scheduled quickly"]
  C -->|"No"| E["Pods stay pending"]
  E --> F["Autoscaler requests new nodes"]
  F --> G{"Quota and supply available?"}
  G -->|"Yes"| H["New node joins after provisioning delay"]
  G -->|"No"| I["Prolonged shortage: priorities decide who runs"]
  H --> D
        
FIG 6 — How capacity determines recovery after losing a node

Priorities under pressure

When capacity is short, workloads with higher priority can push out lower-priority ones. A game day shows whether your priorities are set so that customer-facing services survive while batch jobs wait.

Disruption budgets in practice

A budget set too tightly may block a drain entirely and stall upgrades. One set too loosely may allow too many copies to vanish at once. Testing both planned and unplanned loss shows whether the numbers fit reality.

Provisioning delay and limits

New machines can take several minutes to appear, and cloud accounts have limits that may block growth. Knowing the real delay turns an abstract promise of autoscaling into a concrete recovery time.

i
Practical Advice

Decide deliberately how much spare capacity you keep. A common approach is enough headroom to lose one failure domain’s worth of capacity without service impact, balanced against the cost of idle machines. Game days give you the data to choose that number with evidence.

15Scenario Deep Dive: Losing a Whole Zone

Zone failures are rare, but they are the failure that multi-zone designs exist to survive.

What a zone outage tests

Cloud regions are divided into zones, each with independent power, cooling, and networking. Spreading a cluster across several zones is meant to survive the loss of one. But surviving requires that every layer cooperates: workloads must be spread across zones, enough capacity must exist in the remaining zones, data must be reachable or replicated, and the load balancing in front must stop sending traffic to the lost zone. A zone exercise tests all of these together, and it almost always finds a gap.

1

Placement

Are copies of each critical workload actually spread across zones, or did some end up concentrated by accident?

2

Capacity

Can the remaining zones absorb the extra load, with enough spare processors, memory, and network?

3

Traffic

Does incoming traffic move away from the lost zone quickly, and do health checks at the load balancer behave as expected?

4

State

Can databases and volumes survive? A disk tied to one zone cannot simply move to another, so stateful workloads need replication or a recovery plan.

5

Control plane

Does the cluster’s own management layer keep working, with enough members and enough redundancy across zones?

!
Common Mistake

Assuming that using several zones automatically means surviving a zone outage. Clusters often have hidden single-zone dependencies: a database in one zone, a volume pinned to one zone, a single node pool, or a control plane component that quietly sits in one place. A zone exercise finds these.

ANTI-PATTERN-02 Avoid
Problem

Spreading workloads across zones without spare capacity in each zone to absorb a neighbor’s load.

Why It’s Harmful

When one zone is lost, the remaining zones receive a surge of rescheduled workloads and traffic they cannot hold, which can turn a partial outage into a total one.

Correct Approach

Size each zone so the others can carry the load of the lost one, set spread rules that enforce even distribution, and rehearse the loss in a controlled exercise.

i
Good to Know

You do not need to power off a real zone to rehearse this. Teams often simulate a zone loss by cordoning and draining all nodes in one zone, or by blocking network traffic to it, which is far safer and still reveals most of the gaps.

16Scenario Deep Dive: Network Trouble

Networks rarely fail cleanly. They get slow, lossy, and confusing, which is far harder to handle than a clean break.

Why partial failure is worse than total failure

When a dependency is completely down, clients get an immediate error and can respond sensibly. When it becomes slow or drops some messages, clients wait, retry, wait again, and pile up. Threads fill with waiting requests, memory grows, and the slowness of one service spreads to everything that depends on it. This chain reaction, often called a cascading failure, is one of the most common ways large systems collapse.

flowchart LR
  A["Dependency becomes slow"] --> B["Callers wait longer"]
  B --> C["Waiting requests pile up"]
  C --> D["Callers run out of workers or memory"]
  D --> E["Callers become slow or fail"]
  E --> F["Their callers suffer in turn"]
  F --> G["Cascading failure"]
        
FIG 7 — How one slow dependency can spread trouble across a system

Network experiments worth running

Experiment

Added delay

Slow traffic to one dependency. Do timeouts fire at sensible values? Do callers degrade gracefully?

Experiment

Packet loss

Drop a portion of messages. Do retries recover without creating overload?

Experiment

Partition

Cut communication between two groups. Does each side behave safely when it cannot reach the other?

Experiment

Name resolution failure

Break or slow name lookups. Many systems depend on this silently, and its failure can look like many unrelated problems.

Experiment

Blocked outbound access

Deny access to an external service. Does the application degrade usefully or fail completely?

Experiment

Policy mistakes

Simulate an overly strict network rule. Can responders quickly find which rule is blocking traffic?

The defensive habits these exercises test

Timeouts everywhere

Every call to another service should have a clear limit on how long to wait. A call without a timeout can wait forever and hold resources hostage.

Careful retries

Retries help with brief glitches but multiply load during real trouble. Good clients retry a limited number of times, with growing delays and some randomness to avoid synchronized waves.

Circuit breakers and fallbacks

When a dependency is clearly failing, stop calling it for a while and serve a simplified response instead. This protects both the dependency and the caller.

!
Common Mistake

Setting the same long timeout and many retries at every layer. The waits multiply, so a call that seems limited to a few seconds can in practice hold resources for minutes, and the retries multiply the load on a struggling dependency.

17Scenario Deep Dive: Control Plane and etcd Trouble

What happens to the things you are running when the thing that manages them goes away?

A crucial distinction: running versus managing

The control plane decides what should run and records the plan. The machines, meanwhile, run the actual containers and handle actual traffic. If the control plane becomes unavailable, containers already running generally keep running, and traffic between them usually keeps flowing, because node agents and networking continue with the last instructions they received. What stops is change: no new deployments, no scaling, no replacement of failed pods, and no ability for humans to inspect or fix the cluster through the usual tools. This is a different failure from losing application capacity, and rehearsing it teaches your team how much it depends on the cluster’s management layer.

Control plane conditionEffect on running workloadsEffect on operationsWhat to rehearse
One interface server instance lost, others healthyNone, if traffic shifts to the othersBrief errors for clients connected to the lost instanceWhether clients reconnect smoothly and load balancing removes the dead instance quickly
All interface servers unreachableExisting pods keep running; failed pods are not replacedNo deployments, scaling, or inspectionHow long you can tolerate this, and how responders work without the usual tools
One database member lost in a group of three or fiveNone; the group keeps a majorityPossibly a brief pause during a leader changeWhether alerts fire and members can be replaced safely
Majority of database members lostRunning workloads continue, but the cluster cannot accept changesCluster becomes effectively read-only or unavailableThe documented recovery procedure and its true duration
Database slow rather than downControllers and the scheduler lag behindEverything feels sluggish, with delayed reactions to failuresWhether dashboards reveal the slowness and whether on-call knows the first checks
flowchart TD
  A["Control plane unavailable"] --> B["Running pods continue serving"]
  A --> C["No new pods are scheduled"]
  A --> D["Failed pods are not replaced"]
  A --> E["Autoscaling stops reacting"]
  A --> F["Humans cannot use normal management tools"]
  B --> G["Risk grows if a node also fails during the outage"]
  C --> G
  D --> G
        
FIG 8 — What stops, and what keeps going, when the control plane is lost

Hidden dependencies on the control plane

Some applications unexpectedly depend on the cluster’s management layer while running. A workload that queries the cluster interface for configuration, a controller that must be alive to refresh credentials, or a leader election that stops when the lease cannot be renewed can all break when the control plane is unreachable. Rehearsing the outage finds these quiet dependencies.

!
Handle with Care

Control plane experiments carry the highest risk of causing real, hard-to-reverse trouble. Rehearse them first in a dedicated test cluster, on a copy of your setup, and in production only after you have practiced the recovery procedure and verified that fresh backups exist.

i
Good to Know

On managed Kubernetes, you usually cannot break the control plane directly, and the provider handles its resilience. You can still rehearse your own side: how your tools and workloads behave when the interface is slow or briefly unreachable, which is a valuable exercise in itself.

18Scenario Deep Dive: Storage, State, and the Truth About Backups

Stateless workloads can be replaced. Stateful ones carry data, and data is not so easily recreated.

Why state raises the stakes

When a stateless web server dies, a fresh copy takes its place and nothing is lost. When a database dies, the question is whether its data survives and whether another copy can take over without losing recent writes. Kubernetes supports stateful workloads through persistent volumes and specialized controllers, but the safety of your data depends on how the underlying storage is configured, how replication is arranged, and how well your recovery steps have been practiced.

Two numbers that define recovery

Target

Recovery time objective

How long the business can tolerate being without the service after a failure. A game day measures how long recovery truly takes.

Target

Recovery point objective

How much recent data the business can afford to lose. A game day shows how much data a restore would actually bring back.

Simple Analogy

Think of saving a document. The recovery point is how recent your last saved copy is: if you saved ten minutes ago, you lose ten minutes of work. The recovery time is how long it takes to find and reopen that saved copy. Both matter, and you only know the real numbers by trying.

Experiments for stateful systems

Lose the primary database copy

Terminate the node or pod serving as the primary and observe how long failover takes, whether applications reconnect on their own, and whether any acknowledged writes disappear.

Make storage slow or read-only

Introduce disk latency or remount a volume as read-only, and watch how applications and monitoring respond. Slow storage is far more common than failed storage and often harder to recognize.

Restore from backup into a clean environment

Pick a recent backup, restore it somewhere safe, and verify that the data is complete and usable. Record every step and every surprise, and time the whole procedure.

Recover the cluster’s own state

Rehearse restoring the cluster’s configuration and object database from a snapshot in a separate cluster, to prove the backup is valid and the procedure is known.

ANTI-PATTERN-03 Avoid
Problem

Having backups that run on schedule but have never been restored.

Why It’s Harmful

An unrestored backup is only a hope. Backups can be empty, incomplete, corrupted, encrypted with a lost key, or take far longer to restore than the business can tolerate, and the discovery usually happens during a real emergency.

Correct Approach

Restore regularly into a safe environment, verify data integrity, record the true recovery time and data loss, and fix the procedure until the numbers meet your objectives.

!
Common Mistake

Practicing destructive data experiments directly against the only copy of production data. Test recovery against copies and clones, and treat any experiment that could lose or corrupt original data as requiring the highest level of approval and preparation.

19Scenario Deep Dive: Bad Changes, Expired Certificates, and Human Error

Many real outages are not caused by hardware. They are caused by changes, expirations, and honest mistakes.

The most common causes of real outages

Industry post-incident reviews repeatedly show that a large share of serious incidents follow a change made by people: a faulty release, a mistaken configuration edit, a certificate that expired unnoticed, or a secret that was rotated in one place but not another. These are among the most valuable things to rehearse, because they are frequent and because your detection and rollback abilities decide how long they last.

Change

Faulty release

Deploy a version that fails its health checks or misbehaves slowly. Does the rollout stop on its own? How fast can responders roll back?

Change

Bad configuration

Apply a wrong setting, such as an incorrect limit or address. How quickly is the change identified as the cause?

Expiry

Certificate expiry

Use a short-lived test certificate that expires during the exercise. Do alerts warn in advance? Is renewal automatic and does it work?

Secrets

Secret rotation

Rotate a credential and see whether all consumers pick up the new value without outages.

Access

Lost administrative access

Simulate the loss of the usual way to reach the cluster. Is there a documented, tested emergency path?

Deletion

Accidental deletion

In a test cluster, delete a namespace or critical object. How is it restored, and how long does it take?

1

Detect

How long until anyone, or any alert, notices that the change caused harm? Slow detection is the most common finding.

2

Diagnose

Can responders connect the symptom to the recent change quickly? Good change records and annotations on dashboards shorten this step.

3

Decide

Is it clear who may authorize a rollback, and is the decision easy to make under pressure?

4

Reverse

How long does the rollback take, and does it work cleanly? A rollback that has never been tried may fail.

i
Practical Advice

Certificate and secret expiry scenarios are cheap to run and often deliver dramatic findings. A short-lived test certificate on a noncritical path shows exactly what happens, and who is told, when the real ones approach their end.

20Scenario Deep Dive: Resource Exhaustion and Noisy Neighbors

Shared clusters are shared fates. One greedy workload can hurt many innocent ones.

How resource pressure causes failure

Every workload on a machine shares its processor, memory, disk, and network with its neighbors. Kubernetes lets you declare how much each workload needs and the most it may use, and it uses those declarations to place workloads and to decide who to stop when resources run out. If the declarations are missing or wrong, a single misbehaving workload can starve others, push a machine into memory exhaustion, and trigger the termination of important neighbors.

Experiment

Processor pressure

Make a workload consume heavy processing. Do neighbors slow down? Do limits and priorities protect critical services?

Experiment

Memory pressure

Make a workload exceed its memory. Is only the offender stopped, or do others suffer too?

Experiment

Disk filling

Fill a node’s disk or a log directory. Does the system detect it, evict safely, and alert before everything stops?

Experiment

Traffic surge

Generate a sudden surge of requests. How quickly does scaling react, and what do users experience in the meantime?

Experiment

Quota exhaustion

Reach a namespace or account limit. Is the failure clear, and who is told?

Experiment

Object flood

Create a very large number of objects. Does the cluster’s own management layer stay responsive?

What good protection looks like

Signs of healthy isolation

  • Every workload declares realistic resource needs and limits
  • Critical services have higher priority than batch work
  • Namespaces have quotas that prevent runaway growth
  • Nodes protect themselves and evict the right workloads first
  • Alerts fire on pressure before failures begin

Signs of fragile isolation

  • Workloads with no declared needs or limits
  • All workloads treated as equally important
  • No quotas, so one team can consume everything
  • Memory exhaustion kills random neighbors
  • Nobody notices pressure until users complain
!
Common Mistake

Running exhaustion experiments without hard limits on the experiment itself. A test that is allowed to consume everything can crash the very node that hosts your observation tools. Always cap the injected load and keep observation tools in a protected place.

21The Tooling Landscape: What Helps You Inject Failure

You can start with almost no tools, and grow into a rich toolbox as your practice matures.

Start simple

Your first game days do not require special software. Deleting a pod, draining a node, scaling a workload to zero, and applying a restrictive network rule all use ordinary Kubernetes features and cloud console actions. Simple, manual injections are easy to understand, easy to undo, and impossible to misconfigure through a complicated tool. Many teams run several successful game days before adopting dedicated chaos tooling.

Categories of tools

CategoryWhat it doesGood forConsider
Built-in cluster actionsDelete pods, drain and cordon nodes, change replica counts, apply network rulesFirst exercises and simple scenariosManual and less repeatable, but very safe to understand
Kubernetes-native chaos platformsRun catalogs of pre-built experiments as cluster resources, with schedules and scopesRepeatable, versioned experiments for pods, networks, disks, and timeRequire installation with elevated permissions, so secure and limit them carefully
Cloud provider fault injection servicesInject failures into cloud infrastructure such as machines, zones, and managed servicesInfrastructure and zone-level scenariosTied to a single provider and its permissions model
Commercial chaos platformsManaged experiments, safety controls, reporting, and team workflowsLarge organizations wanting guardrails and reporting out of the boxCost and vendor dependence
Service mesh and proxy fault injectionInject delay and errors into specific requests between servicesFine-grained dependency failure testsRequires a mesh or proxy layer already in place
Load generatorsCreate realistic traffic during the exerciseMaking experiments realistic in quiet environmentsNeed realistic traffic shapes to be meaningful

Safety features to look for

Feature

Scoping controls

Limit experiments to specific namespaces, labels, or machines so a mistake cannot reach everything.

Feature

Automatic duration limits

Experiments that end themselves after a set time, so a forgotten failure cannot linger.

Feature

Abort integration

The ability to halt experiments automatically when monitoring shows user impact beyond a threshold.

Feature

Audit trails

A record of who ran what and when, which supports both safety reviews and later learning.

!
Security Note

Chaos tools need powerful permissions to break things, which makes them attractive targets. Restrict who can start experiments, limit what each experiment may touch, and review the tool’s own access as carefully as you would any other administrative system.

22Seeing and Saying: Observability and Communication During the Exercise

What you cannot see, you cannot learn from. What you do not say, others cannot act on.

A game day dashboard

Prepare one view that shows everything needed to judge the exercise. It should display the user-facing steady-state numbers at the top, followed by workload health, node health, scheduling backlog, and the signals most relevant to the planned failure. Mark the moment of each injection on the charts, so that observers can see cause and effect plainly. A single shared screen for the room, or a shared link for remote participants, keeps everyone looking at the same facts.

1

Top: user experience

Success rate, response time, and a business throughput number, measured where users arrive.

2

Middle: platform health

Ready versus desired replicas, pending pods, node status, and restart counts.

3

Bottom: scenario-specific signals

The few numbers that bear directly on the failure under test, such as database failover state or queue depth.

4

Always: markers and annotations

Vertical lines showing when each action began and ended, to anchor the timeline for later review.

Communication channels

Use a dedicated channel for the exercise, and label every message clearly so nobody confuses an exercise with a real incident. Keep three kinds of messages separate: control messages from the facilitator and safety owner, observations from the observers, and actions from the responders. Inform support teams and other stakeholders before the event, and tell them how to reach the safety owner if they see something that looks like real customer harm.

Label everything as an exercise

Start every announcement with a clear marker such as “exercise” so that nobody outside the event mistakes it for a real incident.

Keep a live timeline

The scribe notes each event with a time: when the failure began, when it was noticed, who noticed, what was tried, and what worked.

Make the stop signal unmistakable

Agree on one clear phrase and channel for stopping, and confirm it is understood by everyone before starting.

i
Practical Advice

Record the session, with permission, or at least keep detailed notes. Subtle details, such as who hesitated and what question was asked three times, are lost within a day and often hold the best lessons.

23Practicing Incident Response, Not Just Technology

A resilient system needs resilient people. Game days are one of the few places where teams can practice the human side of an incident.

What good incident response looks like

When something breaks for real, the technical problem is only half of the challenge. The other half is coordination: noticing the problem, deciding who is in charge, dividing work, communicating with affected people, and keeping a record. Teams that have rehearsed this move calmly and efficiently. Teams that have not often make the same few mistakes: too many people investigating the same thing, nobody updating stakeholders, and nobody making decisions.

Role

Incident commander

The person who coordinates, makes decisions, and keeps the response organized. They do not dive into fixing; they keep the whole picture.

Role

Technical lead

Directs the hands-on investigation and proposes fixes, consulting specialists as needed.

Role

Communications lead

Provides regular, honest updates to stakeholders and customers so that technical responders can focus.

Role

Recorder

Keeps a live timeline of events and decisions, which later supports a clear and accurate review.

What to watch for during the response

1

Time to notice

How long after the failure did a person or an alert first recognize it? This number is almost always larger than expected.

2

Time to organize

How long until someone took charge, roles were clear, and a shared channel was in use?

3

Time to diagnose

How long until the team identified the cause? Which dashboards and tools were useful, and which were ignored or confusing?

4

Time to mitigate

How long until user impact stopped, even if the underlying fix was not complete?

5

Quality of communication

Were stakeholders informed clearly and on time? Did responders know what to say and to whom?

Runbooks: tested, not just written

A runbook is a step-by-step guide for handling a known problem. Game days are the best test of whether runbooks work. Ask a responder to follow the runbook literally, without their own knowledge, and watch where they stumble. Steps that depend on tools nobody has access to, commands that no longer work, and instructions that assume knowledge only one person has are all common discoveries.

!
Common Mistake

Letting the most experienced engineer solve every exercise. The goal is to learn how the team copes, especially when that person is on vacation. Encourage newer responders to lead, with the expert available only through the formal escalation path.

24After the Exercise: The Blameless Review

The failure was the easy part. The learning happens in the conversation afterward.

Why blameless matters

A blameless review focuses on how the system and the process allowed a problem to happen, not on who made a mistake. People make errors in every organization; the question is why the environment made the error easy to make and hard to catch. When reviews punish individuals, people hide information, and the organization loses the very facts it needs to improve. When reviews are blameless, people share openly, and the whole team gets smarter together.

Simple Analogy

In aviation, investigators of an incident ask what in the cockpit design, procedures, and training made the mistake possible, rather than only who pressed the wrong button. That approach is a major reason flying became so safe. A review after a game day uses the same spirit: fix the conditions, not the person.

Structure of a good review

1

Recap the plan and the hypothesis

Remind everyone what was predicted. Read the written hypothesis aloud, before discussing results.

2

Walk through the timeline

Use the scribe’s record to go through events in order, noting what was seen, believed, and decided at each point.

3

Compare with the hypothesis

Highlight each place where reality differed from the prediction. These gaps are the findings.

4

Ask why, several times

For each surprise, keep asking why it happened until you reach a cause you can actually fix, rather than stopping at the first explanation.

5

Capture what went well

Record the things that worked, so they are preserved and repeated, and so the review does not become only a list of faults.

6

Agree on actions with owners and dates

Every finding that matters becomes an action with a named owner, a priority, and a target date.

Turning findings into improvements

Type of findingExampleTypical action
Configuration gapReplicas were not spread across zonesAdd spread rules, then retest the scenario
Missing detectionNo alert fired when a dependency became slowAdd an alert and a dashboard panel
Documentation gapRunbook referred to a tool that no longer existsRewrite the runbook and test it with a newcomer
Process gapNobody knew who could approve a rollbackDefine decision rights and communicate them
Design weaknessA service depended on a single database instancePlan an architecture change with a clear timeline
Capacity shortfallRemaining nodes could not hold the displaced workloadsIncrease headroom or adjust priorities
!
Common Mistake

Writing a thoughtful report and never completing the actions. A game day whose findings are not fixed has only produced an interesting document. Track actions visibly, review progress regularly, and retest the same scenario after the fix to prove it worked.

25Measuring Resilience: Numbers That Show Progress

A practice that improves nothing measurable will not survive the next budget meeting.

Metrics from the exercises themselves

Speed

Time to detect

How long from failure to first alert or first human notice. Falling numbers show better monitoring.

Speed

Time to mitigate

How long until user impact stops. Falling numbers show better runbooks, automation, and practice.

Speed

Time to recover fully

How long until the system returns to steady state, including restored redundancy.

Impact

User-visible impact

The size and duration of any dip in success rate or response time during the exercise.

Accuracy

Hypothesis hit rate

The share of predictions that proved correct. Rising accuracy shows growing understanding of the system.

Learning

Findings per exercise

The number of meaningful discoveries. Early exercises find many; a long run of zero findings suggests scenarios have become too easy.

Metrics from the follow-up work

MeasureWhat it showsHealthy direction
Actions completed on timeWhether findings turn into real improvementsHigh and steady
Repeat findingsWhether the same weakness appears in later exercisesDeclining toward zero
Scenarios coveredBreadth of failure types rehearsed across the failure-domain ladderGrowing over time
Share of critical services exercisedCoverage of the services that matter mostGrowing toward full coverage
Real incident performanceWhether real incidents are detected and resolved faster than beforeFaster detection and shorter recovery
i
Good to Know

The most convincing evidence for leaders is a short story linking a game day finding to a later real incident: “We found this weakness in March, fixed it in April, and in June the same failure happened for real and users never noticed.” Collect these stories carefully.

!
Keep Perspective

Do not turn these numbers into targets that individuals are judged by. When people are punished for slow detection during an exercise, they will avoid honest exercises. Use the metrics to steer investment and to celebrate improvement, not to rank people.

26A Maturity Path: From First Drill to Continuous Confidence

You do not need to begin with elaborate exercises. Grow the practice in stages, and collect value at each step.

StageFocusTypical activitiesSuccess looks like
Stage one: TalkShared understandingTabletop sessions on common failures, listing hidden dependencies, drafting first hypothesesTeams agree on what matters most and where they are unsure
Stage two: Practice safelyFirst hands-on exercisesPod and node failures in a test environment with manual injection and a small groupThe process runs smoothly and the first fixes are completed
Stage three: Go to production carefullyRealismSmall, announced experiments in production with strict abort conditions, plus network and dependency scenariosFindings from production, with no harm to users
Stage four: BroadenComplexityZone-level, control plane, storage, and recovery exercises, with cross-team participationConfidence in the hardest scenarios, and verified recovery times
Stage five: AutomateContinuous assuranceScheduled automated experiments after each release, regression checks, and dashboards of resilience postureRegressions are caught within hours, and game days focus on new and unusual failures

Choosing a rhythm

A common cadence is a larger game day each quarter, with smaller, targeted exercises monthly and automated experiments running continuously. Align the schedule with the rhythm of your organization: avoid your busiest seasons, and tie major exercises to significant changes such as new regions, large migrations, or platform upgrades. Consistency matters more than size; a small regular practice outperforms a grand event that happens once and is never repeated.

i
Practical Advice

Treat each game day as the start of a loop, not a one-off event. The scenarios that failed last time should come back after the fixes, to prove the repairs work. Retesting is where the real improvement is confirmed.

27Winning Support: Culture, Leadership, and the Business Case

The hardest part of game days is often not technical. It is convincing an organization that breaking things on purpose is wise.

Common objections and honest answers

“We cannot risk breaking production.”

Production will be broken eventually, on someone else’s schedule. A planned exercise with limits and a stop button is the safer way to meet failure. Begin in test environments, and move to production slowly, as confidence and safeguards grow.

“We do not have time.”

A half-day exercise is small compared with the cost of a long outage. Teams often recover that time quickly through fewer and shorter real incidents, and through clearer runbooks.

“Our system is already well designed.”

Design describes intent. Exercises compare intent with reality. The best-designed systems often have the most to gain, because confidence is only justified when it has been tested.

“People will feel judged.”

Make blamelessness explicit, keep results about systems not people, and let leaders openly share their own mistakes. Trust grows from visible behavior rather than announcements.

Building the business case

1

Speak in terms of risk and money

Estimate what an hour of outage costs the business, including lost revenue, customer trust, and staff time. Compare with the modest cost of regular exercises.

2

Start with a small, visible win

Run one low-risk exercise, find one real weakness, fix it, and share the story. Concrete results persuade better than theory.

3

Invite stakeholders to observe

Managers and product owners who watch an exercise understand both the value and the safety measures, and become supporters rather than skeptics.

4

Connect results to commitments

Link findings to the reliability promises you make to customers and the recovery targets you have set, so the work is clearly tied to what the business cares about.

i
Good to Know

Make the event feel like a team activity, not an audit. Many organizations add a light, even playful tone: shared snacks, a team scoreboard of discoveries rather than failures, and public thanks for people who find the most surprising problems.

28Anti-patterns That Spoil Game Days

Most failed programs fail in familiar ways. Recognizing them early saves a great deal of effort.

ANTI-PATTERN-04 Avoid
Problem

Breaking things without a hypothesis, simply to see what happens.

Why It’s Harmful

Without a prediction, any outcome can be explained away, nothing is learned, and the exercise becomes random destruction that erodes trust.

Correct Approach

Write a specific, falsifiable hypothesis for every scenario and review it afterward.

ANTI-PATTERN-05 Avoid
Problem

Running experiments with no stop condition or no tested undo.

Why It’s Harmful

A small mistake can escalate into a real outage that nobody can quickly reverse, destroying trust in the whole practice.

Correct Approach

Agree abort conditions in writing, name a safety owner, and rehearse the undo before the event.

ANTI-PATTERN-06 Avoid
Problem

Jumping straight to dramatic scenarios, such as regional disasters, before basic failures are handled.

Why It’s Harmful

Basic gaps overshadow the interesting findings, and a messy first experience can turn leaders against the whole idea.

Correct Approach

Climb the ladder of failure domains from pods to nodes to zones, building skill and confidence at each level.

ANTI-PATTERN-07 Avoid
Problem

Letting experts quietly rescue responders, or briefing responders so thoroughly that nothing is a surprise.

Why It’s Harmful

The exercise no longer reflects how the team behaves under real conditions, and the most valuable findings about knowledge and process disappear.

Correct Approach

Keep responders realistic, let observers observe, and intervene only on safety grounds.

ANTI-PATTERN-08 Avoid
Problem

Writing action items and never finishing them.

Why It’s Harmful

The same weaknesses reappear in every exercise and in real incidents, and participants conclude the effort is theater.

Correct Approach

Assign owners and dates, review progress visibly, and retest fixed scenarios to prove improvement.

ANTI-PATTERN-09 Avoid
Problem

Blaming individuals for what the exercise reveals.

Why It’s Harmful

People learn to hide problems and avoid future exercises, so the organization loses its best source of honest information.

Correct Approach

Keep reviews blameless, focus on conditions and processes, and reward discovery.

29Real-World Scenarios Where Game Days Pay Off

These illustrative stories show the kinds of discoveries teams commonly make. Each follows the same path: hypothesis, surprise, fix, and retest.

Scenario one: the three replicas that were really one

A team believed their checkout service was highly available because it ran three copies. During a node failure exercise, the entire service vanished for several minutes. The investigation showed that all three copies had been placed on one machine, because no spread rules existed. Adding spread rules across machines and zones, then repeating the exercise, produced no user-visible impact.

Scenario two: the autoscaler that arrived late

When a machine was removed, replacement pods stayed pending for almost ten minutes. The cluster had no spare capacity, and new machines took several minutes to provision. The team added modest headroom for critical workloads, raised their priority, and shortened provisioning time by preparing machine images in advance.

Scenario three: the slow dependency that took down everything

An experiment added a small delay to calls toward a recommendation service. Within minutes, the main product page failed completely, because its calls had no timeout and consumed every available worker. The team introduced timeouts, limited retries, and a fallback that showed popular items when recommendations were slow.

Scenario four: the backup nobody could restore

A restore drill revealed that the nightly backup of a critical database was missing recent tables, due to a misconfigured include list. Fortunately, the discovery happened in an exercise, not an emergency. The team corrected the backup configuration and added an automatic restore check.

Scenario five: the certificate with no alarm

A short-lived test certificate on a noncritical path expired during an exercise. No alert fired, and the failure was noticed by a responder only after twenty minutes. The team added expiry monitoring, automatic renewal, and a dashboard listing every certificate with its remaining lifetime.

Scenario six: the runbook from another era

During a database failover exercise, the on-call engineer followed the runbook literally and found that three commands referred to tools and names that had been retired a year earlier. The team rewrote the runbook, tested it with a newcomer, and added a yearly review reminder.

i
Good to Know

Notice that most discoveries were not exotic. They were ordinary gaps between what people believed and what was true. This is precisely why rehearsal is so valuable: it replaces belief with evidence, one scenario at a time.

30A Worked Example: One Game Day from Start to Finish

Follow a realistic, illustrative game day for an online store to see how the pieces fit together.

The setup

An online store runs on a cluster spread across three zones. The team has never held a game day, so they plan a half-day in their production-like staging environment, with a plan to repeat the most valuable scenario in production later. They choose two scenarios: losing one worker machine, and slowing the connection to a payment provider. They name a facilitator, a safety owner, an injector, a scribe, and two responders who know only the time window. Observers include a product owner who wants to understand the risk.

Scenario one: losing a worker machine

The written hypothesis states that if one worker in the main pool disappears, the success rate of checkout stays above the agreed level, lost pods are replaced within three minutes, and an alert reaches the on-call responder within one minute. The baseline looks healthy. The injector powers off a machine, and the scribe records the time.

Within half a minute, the success rate dips noticeably, then recovers. Replacement pods appear quickly but take two minutes to become ready because the image is large. Observers notice that two of the three copies of a smaller internal service had been on the lost machine. The alert fires after four minutes instead of one, because it is configured with a long evaluation window. The responders restore normal service without needing escalation, but one of them says the dashboard did not show which machine was lost, so it took time to understand the pattern.

sequenceDiagram
  participant F as Facilitator
  participant I as Injector
  participant S as Cluster
  participant R as Responders
  participant O as Observers and scribe
  F->>O: Announce scenario one and confirm baseline
  I->>S: Power off one worker machine
  O->>O: Record injection time
  S->>S: Pods lost, replacements scheduled
  S-->>R: Alert fires after four minutes
  R->>S: Investigate and confirm recovery
  O->>O: Compare events with hypothesis
  F->>R: End scenario and hold hot debrief
        
FIG 9 — The flow of one scenario, with each role doing its part

Scenario two: a slow payment provider

The hypothesis states that if calls to the payment provider become slow, customers can still browse and fill their carts, and checkout shows a clear message within a few seconds instead of hanging. The injector adds delay to calls toward the provider. Within two minutes the safety owner sees the success rate for browsing falling too, far beyond the planned limit, and calls a stop. The delay is removed and the system recovers.

The investigation shows that the browsing service shares a pool of workers with the checkout service. Slow payment calls were holding workers, so browsing starved as well. The hypothesis was wrong in the most useful way possible, because the exercise revealed a dependency that nobody had mapped.

The review

FindingWhy it happenedAction
Alert fired after four minutes, not oneEvaluation window was too long for a critical alertShorten the window and add a faster alert for lost capacity
Replacement pods took two minutes to become readyLarge image and slow startupReduce image size and review readiness settings
Internal service lost two of three copiesNo spread rulesAdd spread rules and retest
Dashboard did not show which machine failedPanel was missing node informationAdd node status to the dashboard
Browsing failed when payments slowedShared worker pool and no timeout on payment callsSeparate pools, add timeouts, add fallback message
1

What went well

Roles were clear, the stop signal worked exactly as planned, responders coordinated calmly, and the written hypotheses made the findings unmistakable.

2

What changed afterward

Five actions with owners and dates, a retest scheduled for the following month, and a decision to repeat the first scenario in production once the fixes were verified.

3

What the team learned about itself

Their biggest risks were hidden dependencies and slow detection, not hardware. That insight shaped their next three planning cycles.

31A Plain-English Glossary

Keep these short definitions handy while planning and reviewing exercises.

Term

Game day

A planned event where a team deliberately causes controlled failures to practice response and find weaknesses.

Term

Chaos engineering

The discipline of running experiments on a system to build confidence in its ability to withstand turbulent conditions.

Term

Steady state

The measurable description of normal behavior, such as success rate and response time.

Term

Hypothesis

A written prediction of what will happen when a failure is introduced, specific enough to be proved wrong.

Term

Blast radius

The portion of the system and users that an experiment could affect if it goes wrong.

Term

Abort condition

A measurable limit, agreed in advance, that triggers an immediate stop of the exercise.

Term

Failure domain

A group of components that tend to fail together because they share a cause, such as a machine or a zone.

Term

Cascading failure

A chain reaction in which the failure of one component overloads and breaks others.

Term

Disruption budget

A Kubernetes setting that limits how many copies of a workload may be unavailable at once during voluntary disruptions.

Term

Drain

Gracefully moving workloads off a machine so it can be maintained or replaced.

Term

Probe

A health check that tells Kubernetes whether a container is alive, ready, or still starting.

Term

Recovery time objective

The longest acceptable time to restore service after a failure.

Term

Recovery point objective

The largest acceptable amount of recent data that may be lost in a failure.

Term

Runbook

A step-by-step guide for handling a known problem or procedure.

Term

Blameless review

A discussion after an event that examines how systems and processes allowed the problem, not who is at fault.

Term

Tabletop exercise

A discussion-based walkthrough of a scenario that does not touch any real systems.

i
Practical Advice

Share this glossary with every participant before the event. Shared vocabulary reduces confusion during the exercise, and it makes the review conversation faster, because people spend their energy on findings instead of definitions.

32Frequently Asked Questions

Quick answers to the questions teams ask most often when starting out.

Q1Is it safe to run game days in production?

It can be, when done carefully: small blast radius, written abort conditions, a named safety owner, a tested undo, and advance notice. Most teams start in a realistic test environment, then move to production gradually as their process and confidence mature.

Q2How often should we hold game days?

A common rhythm is a larger event each quarter, smaller focused exercises monthly, and automated experiments running continuously. Consistency matters more than size, and exercises should follow major changes such as migrations and upgrades.

Q3How many people do we need?

A first exercise can run with six to ten people: a facilitator, a safety owner, an injector, a scribe, a couple of responders, and a few observers. Larger events add more roles, but clarity of roles matters more than headcount.

Q4Do we need special chaos tools?

No. Deleting pods, draining nodes, scaling workloads, and applying network rules are enough for the first several exercises. Dedicated tools help later with repeatability, scheduling, scoping, and safety controls.

Q5Should responders know the scenario in advance?

Usually they know only that an exercise is happening and perhaps the time window. Advance knowledge of the exact failure makes the response unrealistically smooth. The planning group, including the safety owner, knows everything.

Q6What if the exercise goes wrong and harms users?

That is exactly what abort conditions and the safety owner are for. Stop immediately, remove the failure using the tested undo, restore service, and treat the event as a learning opportunity, including a review of why the safeguards did not prevent the impact.

Q7What is the difference between a game day and a disaster recovery drill?

A game day is a broad, collaborative exercise on how systems and people handle a failure. A disaster recovery drill focuses on restoring service after a major loss within strict recovery targets. They overlap, and mature teams run both.

Q8What if everything goes perfectly?

Celebrate, then be curious. Perhaps the scenario was too gentle, the observation too shallow, or the hypothesis too vague. Increase the difficulty, widen the scope, or try a more unusual failure.

Q9Can we run game days on a managed Kubernetes service?

Yes. You can rehearse failures of your workloads, nodes, network, dependencies, and changes, and test how your tools behave when the provider’s interface is slow or briefly unavailable. You usually cannot break the provider’s control plane, and the provider handles its resilience.

Q10How do we prevent game days from being forgotten after the first one?

Put them on a calendar, assign an owner for the program, track action items visibly, and retest fixed scenarios. Share success stories with leaders so the practice keeps its support.

Q11Who should lead the program?

Often a platform or reliability team, with participation from application teams. The leader should be someone who is trusted, who communicates clearly, and who cares more about learning than about proving anything.

Q12How do we involve non-technical stakeholders?

Invite them as observers, explain the safety measures in plain terms, and share results as short stories linking findings to business risk and recovery targets. Understanding the process turns skeptics into supporters.

33Summary and Key Takeaways

Kubernetes provides many tools for surviving failure, but a tool that has never been exercised is only a promise. A game day turns promises into evidence. By choosing realistic scenarios, writing clear hypotheses, limiting the blast radius, naming a safety owner, and watching carefully, teams discover the gaps between what they believe and what is true, at a time and place of their choosing. The real value arrives afterward, in the blameless review, the completed actions, and the retests that prove the fixes work. Practiced regularly, game days improve both the platform and the people who run it, so that real failures become smaller, shorter, and less frightening.

Key Takeaways

  • Rehearse failure on purpose — a game day is a planned, controlled event that lets people and systems practice together, so the first time you meet a problem is not the first time you handle it.
  • Experiments need hypotheses — define steady state, write a specific prediction that can be proved wrong, and compare reality with it afterward; the surprises are the findings.
  • Safety is part of the design — limit the blast radius, agree abort conditions in advance, name a safety owner, and test the undo before you start.
  • Climb the ladder of failure domains — begin with pods and nodes, then zones, networks, dependencies, storage, and the control plane, building confidence and skill at each level.
  • Test people and process, not only technology — runbooks, escalation paths, roles, and communication are often where the biggest gaps hide.
  • Review without blame and finish the work — turn each finding into an action with an owner and a date, then retest the scenario to prove the fix.
  • Grow steadily — start with tabletop talk and simple manual exercises, add production experiments carefully, and automate proven experiments so regressions are caught continuously.