<p>From what I can tell in the documentation, a <a href="https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/" rel="noreferrer"><code>ReplicaSet</code></a> is created when running a <a href="https://kubernetes.io/docs/concepts/workloads/controllers/deployment/" rel="noreferrer"><code>Deployment</code></a>. It seems to support some of the same features of a <a href="https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/" rel="noreferrer"><code>ReplicationController</code></a> - scale up/down and auto restart, but it's not clear if it supports rolling upgrades or autoscale.</p>

<p>The v1.1.8 user guide shows how to create a deployment in <a href="http://kubernetes.io/docs/user-guide/deploying-applications/" rel="noreferrer">Deploying Applications</a> (which automatically creates a <code>ReplicaSet</code>), yet the <code>kubectl get replicasets</code> command is not available until v1.2.0. I cannot find any other information about <code>ReplicaSet</code> in the documentation. </p>

<p>Will <code>ReplicaSet</code> eventually replace <code>ReplicationController</code>? Why would I want to use <code>Deployment</code> and <code>ReplicaSet</code> instead of <code>ReplicationController</code>?</p>

David Knell
<p>Replica Set is the next generation of Replication Controller. Replication controller is kinda imperative, but replica sets try to be as declarative as possible.</p>

<p>1.The main difference between a Replica Set and a Replication Controller right now is the selector support.</p>

<pre><code>+--------------------------------------------------+-----------------------------------------------------+
|                   Replica Set                    |               Replication Controller                |
+--------------------------------------------------+-----------------------------------------------------+
| Replica Set supports the new set-based selector. | Replication Controller only supports equality-based |
| This gives more flexibility. for eg:             | selector. for eg:                                   |
|          environment in (production, qa)         |             environment = production                |
|  This selects all resources with key equal to    | This selects all resources with key equal to        |
|  environment and value equal to production or qa | environment and value equal to production           |
+--------------------------------------------------+-----------------------------------------------------+
</code></pre>

<p>2.The second thing is the updating the pods.</p>

<pre><code>+-------------------------------------------------------+-----------------------------------------------+
|                      Replica Set                      |            Replication Controller             |
+-------------------------------------------------------+-----------------------------------------------+
| rollout command is used for updating the replica set. | rolling-update command is used for updating   |
| Even though replica set can be used independently,    | the replication controller. This replaces the |
| it is best used along with deployments which          | specified replication controller with a new   |
| makes them declarative.                               | replication controller by updating one pod    |
|                                                       | at a time to use the new PodTemplate.         |
+-------------------------------------------------------+-----------------------------------------------+
</code></pre>

<p>These are the two things that differentiates RS and RC. Deployments with RS is widely used as it is more declarative. </p>
