From what I can tell in the documentation, a ReplicaSet
is created when running a Deployment
. It seems to support some of the same features of a ReplicationController
- scale up/down and auto restart, but it's not clear if it supports rolling upgrades or autoscale.
The v1.1.8 user guide shows how to create a deployment in Deploying Applications (which automatically creates a ReplicaSet
), yet the kubectl get replicasets
command is not available until v1.2.0. I cannot find any other information about ReplicaSet
in the documentation.
Will ReplicaSet
eventually replace ReplicationController
? Why would I want to use Deployment
and ReplicaSet
instead of ReplicationController
?
Replica Set is the next generation of Replication Controller. Replication controller is kinda imperative, but replica sets try to be as declarative as possible.
1.The main difference between a Replica Set and a Replication Controller right now is the selector support.
2.The second thing is the updating the pods.
These are the two things that differentiates RS and RC. Deployments with RS is widely used as it is more declarative.
For now, the difference should be insignificant in most cases. ReplicaSet has a generalized label selector: https://github.com/kubernetes/kubernetes/issues/341#issuecomment-140809259. It should support all the features the replication controller supports.
This boils down to rolling update vs deployment. Please read docs on deployment to understand the difference: http://kubernetes.io/docs/user-guide/deployments/. In short, if you start a rolling update and close your laptop, your replicas have some mix of intermediate image versions. If you create a deployement and close your laptop, the deployment either gets POSTed successfully to apiserver, in which case it works server side, or it doesn't, in which case all your replicas are still on the old version.
Agreed, most docs are being updated. Unfortunately docs on the internet are harder to update than the ones on github.