<p>I have tried all the basics of Kubernetes and if you want to update your application all you can use <code>kubectl rolling-update</code> to update the pods one by one without downtime. Now, I have read the kubernetes documentation again and I have found a new feature called <code>Deployment</code> on version <code>v1beta1</code>. I am confused since I there is a line on the Deployment docs:</p>

<blockquote>
  <p>Next time we want to update pods, we can just update the deployment again.</p>
</blockquote>

<p>Isn't this the role for <code>rolling-update</code>? Any inputs would be very useful.</p>

<p>Deployment is an Object that lets you define a declarative deploy.
It encapsulates </p>

<ul>
<li><p>DeploymentStatus object, that is in charge of managing the number of replicas and its state.</p></li>
<li><p>DeploymentSpec object, which holds number of replicas, templateSpec , Selectors, and some other data that deal with deployment behaviour.</p></li>
</ul>

<p>You can get a glimpse of actual code here:
<a href="https://github.com/kubernetes/kubernetes/blob/5516b8684f69bbe9f4688b892194864c6b6d7c08/pkg/apis/extensions/v1beta1/types.go#L223-L253" rel="nofollow">https://github.com/kubernetes/kubernetes/blob/5516b8684f69bbe9f4688b892194864c6b6d7c08/pkg/apis/extensions/v1beta1/types.go#L223-L253</a></p>

<p>You will mostly use Deployments to deploy services/applications, in a <strong>declarative</strong> manner.</p>

<p>If you want to modify your deployment, update the yaml/json you used without changing the metadata.</p>

<p>In contrast, kubectl rolling-update isn't declarative, no yaml/json involved, and needs an existing replication controller.</p>
