Quelle est la différence entre ReplicaSet et ReplicationController?

D'après ce que je peux dire dans la documentation, un ReplicaSet est créé lors de l'exécution d'un Deployment. Il semble prendre en charge certaines des mêmes fonctionnalités d'un ReplicationController - Mise à l'échelle haut/bas et Redémarrage automatique, mais il n'est pas clair s'il prend en charge les mises à niveau ou l'échelle automatique.

Le guide de l'utilisateur v1.1.8 montre comment créer un déploiement dans déploiement D'Applications (qui crée automatiquement un ReplicaSet), mais la commande kubectl get replicasets n'est pas disponible avant v1.2.0. Je ne trouve aucune autre information sur ReplicaSet dans documentation.

ReplicaSet finira-t-il par remplacer ReplicationController? Pourquoi voudrais-je utiliser Deployment et ReplicaSet au lieu de ReplicationController?

26
demandé sur David Knell 2016-03-25 15:56:36

2 réponses

Replica Set est la prochaine génération de contrôleur de réplication. Le contrôleur de réplication est un peu impératif, mais les jeux de répliques essaient d'être aussi déclaratifs que possible.

1.La principale différence entre un jeu de réplica et un contrôleur de réplication en ce moment est la prise en charge du sélecteur.

+--------------------------------------------------+-----------------------------------------------------+
|                   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           |
+--------------------------------------------------+-----------------------------------------------------+

2.La deuxième chose est la mise à jour des gousses.

+-------------------------------------------------------+-----------------------------------------------+
|                      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.         |
+-------------------------------------------------------+-----------------------------------------------+

Ce sont les deux choses qui différencient RS et RC. Les déploiements avec RS sont largement utilisés car ils sont plus déclaratifs.

19
répondu Lakshman Diwaakar 2016-12-16 18:59:49

Pour l'instant, la différence devrait être insignifiante dans la plupart des cas. ReplicaSet a un sélecteur d'étiquette généralisé: https://github.com/kubernetes/kubernetes/issues/341#issuecomment-140809259 . il devrait prendre en charge toutes les fonctionnalités prises en charge par le contrôleur de réplication.

ReplicaSet finira-t-il par remplacer ReplicationController? Pourquoi voudrais-je utiliser Deployment et ReplicaSet au lieu de ReplicationController?

Cela se résume à la mise à jour roulante vs déploiement. Veuillez lire les documents sur le déploiement pour comprendre la différence: http://kubernetes.io/docs/user-guide/deployments/. en bref, si vous démarrez une mise à jour continue et fermez votre ordinateur portable, vos répliques ont un mélange de versions d'images intermédiaires. Si vous créez un déploiement et fermez votre ordinateur portable, le déploiement est soit posté avec succès sur apiserver, auquel cas il fonctionne côté serveur, soit il ne fonctionne pas, auquel cas toutes vos répliques sont toujours sur l'ancienne version.

La mauvaise chose est que presque toute la documentation actuelle concerne les ReplicationControllers.

D'accord, la plupart des documents sont mis à jour. Malheureusement, les documents sur internet sont plus difficiles à mettre à jour que ceux sur github.

11
répondu Prashanth B 2016-03-25 17:49:12