Kubernetes

Учебное пособие по Kubernetes ReplicaSet

Учебное пособие по Kubernetes ReplicaSet
Kubernetes часто рассматривается как огромное количество взаимосвязанных концепций, таких как узлы и поды, сервисы, развертывания и т. Д., Которые часто трудно распутать. В этом посте давайте медленно разберемся с ключевой абстракцией, которой является ReplicaSet. Начнем с создания небольшого .yaml для модуля Kubernetes, который будет иметь метку для него, а затем создать ReplicaSet, который будет гарантировать, что определенное количество модулей с одинаковой меткой всегда работает в кластере . Это то, что на самом деле имели в виду авторы проекта, когда создавали Kubernetes. Итак, начнем.

Предпосылки

Первое, что вам понадобится, это доступ к кластеру Kubernetes. Вы можете создать его с помощью Minikube или использовать Docker для Windows или Docker для Mac, оба из которых теперь поставляются с одноузловым дистрибутивом Kubernetes, который вы можете включить в настройках Docker.

Вам также необходимо иметь некоторые априорные знания о Kubernetes. Вот действительно хорошая отправная точка.

Создание подов

Обычно мы создаем поды, используя файл yaml, в котором указывается, какой образ контейнера использовать, какие порты открывать и т. Д. Вот простой файл для создания пода nginx.

apiVersion: v1
вид: Стручок
метаданные:
имя: nginx-1
метка:
приложение: веб-сервер
спецификация:
контейнеры:
- имя: nginx
изображение: nginx: 1.7.9
порты:
- containerPort: 80

Сохраните его под именем nginx-pod.ямл в каталоге, а затем из этого же каталога выполните команду:

$ kubectl create -f ./ nginx-pod.ямл
## Убедитесь, что модуль создан, запустив:
$ kubectl получить поды

Вы заметите, что один модуль с именем «Nginx-1» запущен и работает. Но вы не можете масштабировать эту единственную капсулу. Бег kubectl создать снова выдаст вам ошибку, так как имя nginx-1 не может быть повторно использован снова.

Kubernetes дал возможность создавать поды для более высоких абстракций, таких как Развертывания и ReplicaSets. Которые создают модули из заданного шаблона модуля, указывая, какие изображения использовать, какие порты открывать в каждом из новых модулей и т. Д., Но ничего особенного в одном модуле. ReplicaSet (а также Deployments) затем приступает к созданию новых модулей, давая каждому новому модулю уникальное имя, а также неуникальную метку, которая помогает ReplicaSet отслеживать модули, созданные на основе данного шаблона.

ReplicaSet гарантирует, что в любой момент времени определенное количество модулей данной метки всегда работает и работает. Если, например, какой-то узел выходит из строя, ReplicaSet должен создать дополнительные поды на других узлах, чтобы компенсировать потерю. Чтобы написать yaml-файл репликации, мы будем следовать шаблону, аналогичному написанию пода. У него будет версия api (приложения / v1), тип (ReplicaSet) и имя в метаданных. На самом наборе реплик могут быть ярлыки, но мы пока будем простыми и просто дадим ему уникальное имя мой набор реплик.

Затем нам нужно перейти от метаданные раздел к мясу материи спецификация. Здесь мы указываем количество репликаций, которое мы хотим, в разделе реплики. Затем мы даем этому ReplicaSet a селектор который будет использоваться для сопоставления метки, скажем, приложение к значению, скажем, веб сервер, среди работающих в настоящее время подов. Если таких подов меньше, то он создаст поды в соответствии с заданным шаблоном и добавит ту же метку к этим новым подам. Если контейнеров больше, чем требуется, он удаляет несколько.

Указание шаблона, который будет служить основой для создания новых модулей, является наиболее сложным шагом. У этого шаблона не будет имени, поскольку набор реплик будет создавать новое имя для каждого нового созданного модуля. Однако у них будут ярлыки, и вы можете заметить, что тот же ярлык приложение = веб-сервер который есть в шаблоне, выбирается через селектор параметр в спецификации набора реплик.

apiVersion: apps / v1
вид: ReplicaSet
метаданные:
имя: my-replicaset
 
спецификация:
реплик: 3
селектор:
matchLabels:
приложение: веб-сервер
шаблон:
метаданные:
ярлыки:
приложение: веб-сервер
спецификация:
контейнеры:
- имя: nginx
изображение: nginx: 1.7.9
порты:
- containerPort: 80

Сохраните этот файл как nginx-replicaset.yaml и создайте набор реплик с помощью команды:

$ kubectl create -f nginx-replicaset.ямл

Поскольку ранее мы создали пакет с таким же ярлыком приложение = веб-сервер, набор реплик просто создаст еще два модуля. Вы можете перечислить все поды, используя команду:

$ kubectl получить поды
НАЗВАНИЕ ГОТОВ СОСТОЯНИЕ ВОЗРАСТ
my-replicaset-nmvt9 1/1 Выполняется 0 9 с
my-replicaset-xf9mx 1/1 Выполняется 0 9 с
nginx-1 1/1 Работает 0 28 с

Каждому из модулей будет присвоено уникальное имя. Как и у самого первого модуля, который мы создали, было имя nginx-1. Вы можете попробовать удалить его с помощью команды:

$ kubectl удалить pod nginx-1
$ kubectl получить поды
 
НАЗВАНИЕ ГОТОВ СОСТОЯНИЕ ВОЗРАСТ НАЗАД
my-replicaset-nmvt9 1/1 Бег 0 1 мес
my-replicaset-pkn4q 1/1 Выполняется 0 22 с
my-replicaset-xf9mx 1/1 Бег 0 1 мес

Вы заметите, что почти мгновенно контроллер ReplicaSet создал новый под, чтобы заменить тот, который мы удалили. Таким образом, убедившись, что количество работающих модулей с этикеткой приложение = веб-сервер всегда равно 3, как указано в манифесте набора реплик, приведенном выше.

Вы получаете большой контроль благодаря ярлыкам и селекторам. Вы можете дополнительно распределить поды по нескольким узлам с помощью nodeSelectors, которые используются для выделения определенного количества подов на определенных узлах.

Что не допускает наборов реплик, так это обновления. Если более новая версия вашего приложения, скажем, nginx: 1.8, вам нужно будет удалить этот набор реплик и создать новый с этим изображением, указанным в манифесте yaml набора реплик. Вот где пригодится концепция развертывания. Он включает в себя идею наборов реплик и расширяется за счет предоставления дополнительной поддержки для обновления ваших приложений. Теперь, когда вы освоились с наборами реплик, неплохо было бы изучить развертывания Kubernetes.

Рекомендации

  1. Создание подов
  2. Создание наборов реплик
5 лучших аркад для Linux
В настоящее время компьютеры - это серьезные машины, используемые для игр. Если вы не можете получить новый рекорд, вы поймете, о чем я. В этом посте ...
Битва за Веснот 1.13.6 Выпущена разработка
Битва за Веснот 1.13.6, выпущенная в прошлом месяце, является шестой разработкой в ​​1.13.x и содержит ряд улучшений, в первую очередь пользовательско...
Как установить League Of Legends на Ubuntu 14.04
Если вы поклонник League of Legends, то это возможность для вас протестировать League of Legends. Обратите внимание, что LOL поддерживается в PlayOnLi...