web-dev-qa-db-fra.com

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'une ReplicationController - montée/descente et redémarrage automatique, mais il n'est pas clair s'il prend en charge les mises à niveau continues ou la mise à l'échelle automatique.

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

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

38
David Knell

Replica Set est la prochaine génération de Replication Controller. 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épliques et un contrôleur de réplication est actuellement 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 pods.

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

38
Lakshman Diwaakar

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

ReplicaSet remplacera-t-il éventuellement ReplicationController? Pourquoi voudrais-je utiliser Deployment et ReplicaSet au lieu de ReplicationController?

Cela se résume à une mise à jour continue par rapport au 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 POST réussi sur apiserver, auquel cas il fonctionne côté serveur, ou 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 en cours de mise à jour. Malheureusement, les documents sur Internet sont plus difficiles à mettre à jour que ceux sur github.

12
Prashanth B