<p>While reading the <a href="https://kubernetes.io/docs/reference/using-api/api-concepts/#dry-run" rel="nofollow noreferrer">API concepts</a> page of Kubernetes documentation, I got a bit confused with the given definition:</p>

<blockquote>
  <p>In version 1.12, if the dry run alpha feature is enabled, the modifying verbs (POST, PUT, PATCH, and DELETE) can accept requests in a dry run mode. Dry run mode helps to evaluate a request through the typical request stages (admission chain, validation, merge conflicts) up until persisting objects to storage. <strong>The response body for the request is as close as possible to a non dry run response.</strong> The system guarantees that dry run requests will not be persisted in storage or have any other side effects.</p>
</blockquote>

<p>So, dry run requests are meant to have as most as possible the same behavior from the client point of view.</p>

<p>What is the main idea behind this concept, and what use-cases does it covers?</p>

<p><strong>Dry run</strong> is not a concept exclusive to Kubernetes. It's an expression used to indicate <em>a rehearsal of a performance or procedure before the real one</em>. Dry run mode gives you the possibility of issuing a command without side effects for testing an actual command that you intend to run.</p>

<p>Having said that, <em>read again</em> the following quote and it should make sense now:</p>

<blockquote>
  <p>Dry run mode helps to evaluate a request through the typical request stages (admission chain, validation, merge conflicts) up until persisting objects to storage.  [...] The system guarantees that dry run requests will not be persisted in storage or have any other side effects.</p>
</blockquote>
