<p>Is there a way to ensure that pods are scaled one at a time when setting replica greater than one?</p>
<p>Example: Replica set to 3</p>
<ol>
<li>Pod 1 - Initializing , pod 2 - Waiting, pod 3 - Waiting</li>
<li>Pod 1 - Running , pod 2 - Initializing, pod 3 - Waiting</li>
<li>Pod 1 - Running , pod 2 - Running, pod 3 - Initializing</li>
<li>Pod 1 - Running , pod 2 - Running, pod 3 - Running</li>
</ol>

<p>You can acomplish this behavior using <code>StatefulSets</code>. As it goes from <a href="https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#deployment-and-scaling-guarantees" rel="nofollow noreferrer">Kubernetes docs</a></p>
<blockquote>
<ul>
<li>For a StatefulSet with N replicas, when Pods are being deployed, they are created sequentially, in order from {0..N-1}.</li>
<li>When Pods are being deleted, they are terminated in reverse order, from {N-1..0}.</li>
<li>Before a scaling operation is applied to a Pod, all of its predecessors must be Running and Ready.</li>
<li>Before a Pod is terminated, all of its successors must be completely shutdown.</li>
</ul>
</blockquote>
<p>So, as you can see here, new pod is not booted up until previous one is initializing.</p>
<p><strong>Note:</strong> this behavior is guranteed by Kubernetes when <code>OrderedReady</code> pod management policy is used (which is default).</p>
