Kuberneters — разница между набором реплик и контроллером репликации
Предварительное условие: Kubernetes
Kubernetes, также известный как K8s, — это инструмент оркестровки контейнеров с открытым исходным кодом, разработанный Google, который используется для автоматизации развертывания, масштабирования и управления программным обеспечением. В настоящее время он поддерживается Фондом облачных вычислений (CNCF).
K8s имеет две версии: оригинальный Kubernetes и мини-версию, известную как minikube.
Репликация:
Обычно мы хотим реплицировать наши контейнеры, то есть наше приложение, по нескольким причинам, включая надежность, балансировку нагрузки и масштабирование. Имея несколько версий приложения, мы предотвращаем проблемы в случае сбоя одного или нескольких модулей.
Так, балансировка нагрузки за счет наличия нескольких версий контейнеров позволяет нам легко направлять трафик в разные экземпляры, чтобы предотвратить перегрузку одного экземпляра или нет. Это то, что делает Kubernetes, но преимущество масштабирования коробки заключается в том, что когда нагрузка становится слишком большой для ряда существующих экземпляров, Kubernetes позволяет легко масштабировать приложение, добавляя дополнительные экземпляры по мере необходимости. Репликация подходит для множества вариантов использования, включая приложения на основе микросервисов, облачные приложения или мобильные серверные части.
Контроллер репликации:
Контроллер репликации — это исходная форма репликации в Kubernetes. Его заменили наборы реплик. Но, поскольку контроллер репликации широко используется, стоит разобраться, что это такое и как он работает.
Контроллер репликации — это структура, которая позволяет нам легко создавать несколько модулей. Если мы убедимся, что некоторое количество pod'ов всегда существует. В случае сбоя модуля контроллер репликации заменяет его новым модулем. Контроллер репликации также предоставляет другие преимущества, такие как возможность масштабировать количество модулей и обновлять или удалять несколько модулей с помощью одной команды.
Вот как будет выглядеть определение ReplicationController.yml на снимке экрана, прикрепленном ниже.
Здесь мы видим, что версия API — v1, а вид — контроллер репликации.
Итак, здесь мы предоставим имя для контроллера репликации , а в спецификации мы будем определять, сколько реплик мы хотим из данного определения модуля в разделе шаблона. В разделе шаблона мы предоставим точную информацию, которую мы предоставили в yml-файле определения модуля, который будет включать метки метаданных, а в спецификации мы можем определить контейнеры, контейнеры инициализации, различные образы, порты, различные монтирования тома configmap, переменные среды, все эти конфигурации, в основном связанные с модулями, мы можем предоставить в разделе шаблонов.
Контроллер репликации может иметь необязательный селектор и спецификацию, где мы можем предоставить метки, используемые в модулях, которые используются для маркировки запросов по модулям, которые должны соответствовать количеству реплик . Если селектор не указан, предполагается, что предоставленные метки шаблона будут использоваться в качестве селектора.
Наборы реплик:
Наборы реплик объявляются так же, как контроллер репликации, за исключением того, что они имеют больше параметров для селекторов. Селектор является обязательным для наборов реплик в качестве меток соответствия, которые вы можете предоставить меткам модулей, чтобы запросить соответствие модулей количеству реплик.
Давайте посмотрим на этот пример ниже:
Здесь мы видим, что версия API — это apps v1, тип — ReplicaSet , а затем мы будем определять, каково имя нашего набора реплик в разделе спецификации, мы можем определить количество реплик, а в метках соответствия селекторов мы определим, что наши метки модулей , которые необходимо учитывать для подсчета реплик. В разделе шаблона мы можем предоставить наш шаблон модуля , который включает в себя контейнеры, изображения и метки, в разделе селектора не только соответствующую метку, мы также можем использовать выражения соответствия, чтобы настроить различные условия для селектора. В этом конкретном примере метка приложения должна быть движком x или внешним интерфейсом, метка среды, если она существует, не должна создаваться.
Контроллер репликации против набора реплик:
Контроллер репликации | Набор реплик |
---|---|
Контроллер репликации — это исходная форма репликации в Kubernetes. | ReplicaSets — это API более высокого уровня, который дает возможность легко запускать несколько экземпляров данного модуля. |
Контроллер репликации использует селекторы на основе равенства для управления модулями. | Контроллер ReplicaSets использует селекторы на основе набора для управления модулями. |
Команда скользящего обновления работает с контроллерами репликации. | Команда непрерывного обновления не работает с наборами реплик. |
Контроллер реплик устарел и заменен наборами реплик. | Развертывание рекомендуется поверх наборов реплик. |