<p>I understand the difference between Declarative and Imperative Management, well explained in this thread <a href="https://stackoverflow.com/questions/47369351/kubectl-apply-vs-kubectl-create">kubectl apply vs kubectl create?</a> and in the official doc <a href="https://kubernetes.io/docs/tasks/manage-kubernetes-objects/declarative-config/" rel="nofollow noreferrer">https://kubernetes.io/docs/tasks/manage-kubernetes-objects/declarative-config/</a></p>

<p>But my residual doubt is that even in the Declarative Management a (manual) command like </p>

<blockquote>
  <p>kubectl scale</p>
</blockquote>

<p>although persists further </p>

<blockquote>
  <p>kubectl apply</p>
</blockquote>

<p>commands still "won't survive" a cluster restart (since its configuration change is stored in the cluster store, like <em>etcd</em>), right? If so, shouldn't we make changes only to the </p>

<blockquote>
  <p>object configuration file</p>
</blockquote>

<p>and redeploy through </p>

<blockquote>
  <p>kubectl apply</p>
</blockquote>

<p>command? 
thanks</p>

toto'
<p>As far as I understand <code>kubectl scale</code> will change the <code>ReplicaSet</code> configuration object in <code>etcd</code>. So, it'll survive a restart.</p>

<p>However, you should store your configuration objects in a version control system (git). If you execute commands like <code>kubectl scale</code>, that won't update the copies stored in git. The next usage of those configuration files will override the values previously set.</p>
