В чем разница между ReplicaSet и ReplicationController?

из того, что я могу сказать в документации, a ReplicaSet создается при запуске Deployment. Кажется, он поддерживает некоторые из тех же функций a ReplicationController - масштабирование вверх / вниз и автоматический перезапуск, но неясно, поддерживает ли он прокатные обновления или масштабирование.

Фау-1.1.8 руководство пользователя показывает, как создать дислокации в Развертывание Приложений (который автоматически создает ReplicaSet), но kubectl get replicasets команда недоступна до v1.2.0. Я не могу найти другая информация о ReplicaSet в документации.

будет ReplicaSet в конечном итоге заменить ReplicationController? Почему я хочу использовать Deployment и ReplicaSet вместо ReplicationController?

2 ответов


набор реплик-это следующее поколение контроллера репликации. Контроллер репликации является своего рода императивом, но наборы реплик стараются быть как можно более декларативными.

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

2.Во-вторых, обновление стручков.

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

это две вещи, которые различают RS и RC. Развертывания С RS широко используются как есть более декларативно.


на данный момент разница должна быть незначительной в большинстве случаев. ReplicaSet имеет обобщенный селектор меток:https://github.com/kubernetes/kubernetes/issues/341#issuecomment-140809259. Он должен поддерживать все функции, поддерживаемые контроллером репликации.

ReplicaSet в конечном итоге заменит ReplicationController? Почему я хочу использовать развертывание и ReplicaSet вместо ReplicationController?

Это сводится для прокатки обновления и развертывания. Пожалуйста, прочитайте документы по развертыванию, чтобы понять разницу:http://kubernetes.io/docs/user-guide/deployments/. Короче говоря, если вы запускаете скользящее обновление и закрываете ноутбук, ваши реплики имеют некоторое сочетание промежуточных версий изображений. Если вы создаете развертывание и закрываете свой ноутбук, развертывание либо успешно отправляется на apiserver, и в этом случае оно работает на стороне сервера, либо нет, и в этом случае все ваши реплики все еще находятся на старая версия.

плохо то, что почти вся текущая документация касается ReplicationControllers.

согласен, большинство документов обновляются. К сожалению документы в интернете сложнее обновлять, чем на GitHub.