ReplicaSet和ReplicationController有什么区别?

Dav*_*ell 34 deployment replicaset kubernetes

从我在文档中可以看出,a ReplicaSet是在运行时创建的Deployment.它似乎支持一些相同的功能ReplicationController- 扩展/缩小和自动重启,但目前尚不清楚它是否支持滚动升级或自动缩放.

v1.1.8用户指南显示了如何在部署应用程序(自动创建a ReplicaSet)中创建部署,但该kubectl get replicasets命令在v1.2.0之前不可用.我ReplicaSet在文档中找不到任何其他信息.

ReplicaSet最终取代ReplicationController?我为什么要使用DeploymentReplicaSet不是ReplicationController

Lak*_*kar 32

副本集是下一代复制控制器.复制控制器是必要的,但副本集尽可能地声明.

1.副本集和复制控制器之间的主要区别是选择器支持.

+--------------------------------------------------+-----------------------------------------------------+
|                   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           |
+--------------------------------------------------+-----------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

第二件事是更新豆荚.

+-------------------------------------------------------+-----------------------------------------------+
|                      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.         |
+-------------------------------------------------------+-----------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

这些是区分RS和RC的两件事.使用RS的部署被广泛使用,因为它更具说明性.


Pra*_*h B 12

目前,在大多数情况下,差异应该是微不足道的.ReplicaSet有一个通用标签选择器:https://github.com/kubernetes/kubernetes/issues/341#issuecomment-140809259.它应该支持复制控制器支持的所有功能.

ReplicaSet最终会取代ReplicationController吗?为什么我要使用Deployment和ReplicaSet而不是ReplicationController?

这归结为滚动更新与部署.请阅读有关部署的文档以了解其中的差异:http://kubernetes.io/docs/user-guide/deployments/.简而言之,如果您开始滚动更新并关闭笔记本电脑,则您的副本会混合使用中间图像版本.如果您创建部署并关闭笔记本电脑,则部署会成功发送到apiserver,在这种情况下它可以在服务器端工作,或者不在服务器端,在这种情况下,所有副本仍然在旧版本上.

糟糕的是,几乎所有当前的文档都是关于ReplicationControllers的.

同意,大多数文档正在更新.不幸的是,互联网上的文档比github上的文档更难更新.

  • 我是 Kubernetes 的新手。当我创建部署(kubectl run)时,还会创建一个副本集。我们还必须使用replicationControllers吗?文档现在说:副本集是下一代复制控制器。现在副本集和复制控制器之间的唯一区别是选择器支持。为什么他们创建了一种新型的 rc.local? (2认同)