<p>I read in a book written by Helm creators the following fact about the --force option :</p>
<blockquote>
<p>Sometimes, though, Helm users want to make sure that the pods are restarted. That’s
where the --force flag comes in. Instead of modifying the Deployment (or similar
object), it will delete and re-create it. This forces Kubernetes to delete the old pods
and create new ones.</p>
</blockquote>
<p>What I understand from that is, if I install a chart and then I change the number of replicas (=number of pods) then I upgrade the chart, it should recreate all the pods. This is not what happens in my case and I wanted to understand what I am missing here.</p>

<p>Let's take a hypothetical minimal Deployment (many required details omitted):</p>
<pre class="lang-yaml prettyprint-override"><code>spec:
  replicas: 3
  template:
    spec:
      containers:
        - image: abc:123
</code></pre>
<p>and you change this to <em>only</em> increase the replica count</p>
<pre class="lang-yaml prettyprint-override"><code>spec:
  replicas: 5 # &lt;-- this is the only change
  template:
    spec:
      containers:
        - image: abc:123
</code></pre>
<p>The Kubernetes Deployment controller looks at this change and says &quot;I already have 3 Pods running <code>abc:123</code>; if I leave those alone, and start 2 more, then I will have 5, and the system will look like what the Deployment spec requests&quot;.  So absent any change to the embedded Pod spec, the existing Pods will be left alone and the cluster will just scale up.</p>
<pre class="lang-none prettyprint-override"><code>deployment-12345-aaaaa      deployment-12345-aaaaa
deployment-12345-bbbbb      deployment-12345-bbbbb
deployment-12345-ccccc ---&gt; deployment-12345-ccccc
                            deployment-12345-ddddd
                            deployment-12345-eeeee
  (replicas: 3)               (replicas: 5)
</code></pre>
<p>Usually this is fine, since you're running the same image version and the same code.  If you do need to forcibly restart things, I'd suggest using <code>kubectl rollout restart deployment/its-name</code> rather than trying to convince Helm to do it.</p>
