Во многих компаниях стоит задача быстрого развертывания кластеров Kubernetes. Хорошо, когда создание кластера происходит автоматически. Но ещё лучше, когда пользователь, например, разработчик может создать кластер и потом управлять им «по кнопке», не привлекая для этого devops’ов. В своей облачной лаборатории мы посмотрели, как с созданием кластера Kubernetes справляется платформа управления гибридным облаком Morpheus: автоматизировали развертывание и оценили возможности управления и масштабирования кластера.



Что такое Morpheus?


Платформа Morpheus ориентирована в первую очередь на создание и управление гибридными облаками (Cloud Management Platform, CMP). И возможность развертывания Kubernetes в этом приложении — бонус для ее обладателей. Но поскольку вопрос о Kubernetes обычно звучит одним из первых в разговорах «за облака», мы решили показать весь процесс от его создания до масштабирования.

На сегодня Morpheus — лидер квадранта Gartner в своем классе. Мы тестировали систему в своей лаборатории по частным и гибридным облакам и на фоне «одноклассников» ее отличает несколько особенностей.

Например, Morpheus интегрируется с большим числом ресурс-провайдеров. Сегодня таких возможностей интеграции «из коробки» свыше 80, и их количество постоянно растет.

Какой функционал «зашит» в Morpheus? Возможность создания инстансов, автоматизация DevOps-процессов за счет быстрого конфигурирования и доставки bare metal, ВМ и контейнеризированных приложений. В эксплуатации продукт упрощает многие рутинные задачи, обеспечивая масштабирование, мониторинг и резервное копирование. Еще Morpheus поддерживает настройку ролевого доступа и механизмы согласования выделения ресурсов. Плюсом этого ПО являются инструменты для оптимизации вычислительных ресурсов.

Подготовка к созданию кластера Kubernetes


Рассмотрим процесс создания кластера Kubernetes на платформе VМware с помощью механизма кластерных инстансов. В результате этого у пользователей гибридного облака появится возможность создавать и масштабировать кластер Kubernetes с помощью портала или через API.

Для начала разберемся, что такое инстансы и рассмотрим возможности библиотеки Morpheus.

Инстансы


Инстанс — это набор контейнеров или виртуальных машин, которые связаны с одним горизонтально масштабируемым сервисом. Кроме простых инстансов (виртуальные машины, контейнеры, СУБД), Morpheus создает и разворачивает кластерные инстансы. Схема ниже дает представление о том из каких компонентов формируется кластерный инстанс.


Как видно, инстанс состоит из шаблонов (cluster layouts), а шаблоны в свою очередь связаны с нодами (node type). Все обозначенные выше компоненты являются элементами библиотеки Morpheus.

Библиотека Morpheus


Создание собственного инстанса происходит с помощью раздела Library (библиотека). На скриншоте представлена часть интерфейса Morpheus, отображающая все разделы библиотеки.


Instance Types хранит существующие инстансы, позволяет создавать новые и публиковать их в каталоге.

Layouts предназначен для создания шаблонов услуг. Шаблон определяет конфигурацию будущей услуги и облако, в котором услуга будет развернута.

Node Types позволяет из единого исходного образа создавать виртуальные образы (ноды) с разным набором контента на выходе. Например, имеется исходный образ Centos 7, используемый в Node1 и Node2. При вызове шаблона с Node1 пользователь получит услугу Centos 7 с пакетом Nginx, при вызове шаблона с Node2 — Centos7 с Apachee.

В Option Types можно создавать опции, чтобы в шаблонах добавлять дополнительные метаданные.

Option Lists нужен для импортирования списков опций из внешних источников.

File Templates содержит конфигурационные файлы, которые можно применять для автоматизации настройки сервисов на разных этапах развертывания.

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

Раздел Cluster Layouts по функционалу схож с Layouts. С разницей в том, что создаваемые в Cluster Layouts шаблоны, используются для образования кластерных инстансов.

Создание кластерного инстанса


Используя инстансы и возможности библиотеки можно развернуть кластер Kubernetes.

Первый этап: подготовка виртуальных образов для master и worker.

Перейдем в раздел библиотеки Node Types и создадим две новых ноды.

  1. Начнем с master`а. На скриншоте ниже изображено диалоговое окно с настройками. Для начала задаем name и short name, а также версию. В поле TECHNOLOGY выбираем VMware, данный параметр определяет облачный ресурс, для которого создается образ. Далее указываем образ операционной системы — в нашем примере это Centos 7 из стандартной библиотеки Morpheus. А также определим какие скрипты будут запускаться для настройки и инициализации master`a.

  2. Для worker настройки аналогичные, за исключением набора скриптов. Здесь достаточно установить Docker и kubeadm, после чего запустить join-скрипт, который подключит Worker к Master.




Следующий этап — создание Cluster Layout.
Нажимаем кнопку ADD в соответствующем разделе библиотеки, после чего открывается диалоговое окно настроек нового шаблона.

  1. Задаем имя и версию шаблона и в выпадающем списке CLUSTER TYPE выбираем Kubernetes Cluster.


  2. TECHNOLOGY — ресурс-провайдер, для которого предназначен данный шаблон. Вернемся к нашей первоначальной схеме. В составе инстанса Kubernetes 3 шаблона. Первые два созданы для AWS и могут быть выбраны только в случае, если AWS подключен к Morpheus как управляемый ресурс. В нашем примере в качестве ресурс-провайдера используется VMware vSphere, его и выбираем в поле TECHNOLOGY.
  3. Добавляем в шаблон виртуальные образы для Master и Worker.



    Здесь есть важный момент. В нашем примере Node Type для Master и Worker назывались «Kubernetes Cluster Master Centos (local)» и «Kubernetes Cluster Worker (local)» соответственно. Чтобы выбрать нужный виртуальный образ, потребуется ввести часть его названия в поле «Search nodes», только тогда появится список доступных образов.

    Далее заполняем поля Count и Priority. Count — количество нод данного типа. Priority — значение задающее приоритет в очереди на развертывание. Чем ниже значение, тем выше приоритет. В нашем примере значение этого параметра для master — 0, и он будет развернут первым. А после него будут одновременно развернуты 3 worker`а.
  4. Сохраняем изменения и переходим к развертыванию кластера.

Теперь шаблон доступен в каталоге услуг. Рассмотрим процесс заказа услуги «Кластер Kubernetes», а также возможность ее масштабирования.

Создание кластера Kubernetes


Кластерные инстансы доступны из раздела Clusters на вкладке Infrastructure.



  1. Вкладка Group – выбираем ресурсную группу. В нашем примере она единственная.
  2. На вкладке Name выбираем облако, в котором разворачивается кластер. Для нас это VMware. Задаем имя кластера и определяем настройки видимости (Public — доступен во всех тенантах, Private — доступен только в тенанте текущего пользователя).
  3. Вкладка Configure — тут выбираем шаблон и конфигурацию кластера. Наш кластерный инстанс имеет 4 шаблона для облака VMware. Используем созданный «Jet Demo Cluster».


    PLAN — определяем ресурсы для Master.

    VOLUMES — определяем размеры разделов, это общая настройка для master и worker.

    NETWORKS — выбор сети облачного провайдера. На нашем стенде она всего одна, ее и выбираем.

    POD CIDR — указываем подсеть для POD`ов.

    WORKER PLAN — определяем ресурсы для Worker`ов.

    NUMBER OF WORKERS — по умолчанию выбрано три, так как это количество указано в соответствующем шаблоне Node Type. Данный параметр менять не будем.


  4. На вкладке Automation опционально можно выбрать Workflow. В этом примере Workflow не используем, поэтому переходим к сводной информации о настройках кластера. Проверка — и нажимаем Complete.

  5. Morpheus начинает разворачивать кластер Kubernetes. В выбранной конфигурации процесс займет около 30 минут. После этого кластер будет доступен для запуска контейнеров с приложениями.

Процесс развертывания кластера


Сначала из образа «Kubernetes Cluster Master Centos (local)» развернется виртуальная машина. Затем поочередно будут запущены скрипты конфигурации master`а. После завершения установки и настройки master`ра, из шаблона «Kubernetes Cluster Worker (local)», будут развернуты ВМ для будущих worker`ов. Далее снова запустятся скрипты, которые установят на worker`ы необходимые компоненты. После того как развернутся все образы, на worker`ах запустятся Post Provision скрипты, подключающие их к кластеру.

Этапы развертывания кластера проиллюстрированы на схеме:



Управление кластерным инстансом


Рассмотрим возможности панели управления развернутым инстансом.

Кроме базовой информации о стоимости заказанной услуги и производительности кластера, можно получить сведения об имеющихся namespace, а также создавать новые прямо из интерфейса. Информация о запущенных сервисах и контейнерах представлена на специальной вкладке.


Масштабирование кластера


Добавить worker`ы в кластер достаточно просто. Для этого нужно на вкладке Actions на панели управления кластерным инстансом выбрать соответствующий пункт меню.


Далее в появившемся диалоговом окне, задать конфигурацию и принять настройки. После этого новый Worker автоматически развернется и присоединится к кластеру.

***

Создание и масштабирование кластеров Kubernetes в Morpheus не уступает по своей простоте специализированным приложениям. Подчеркнем еще раз, что в этой платформе данный функционал является далеко не единственным. Именно огромный перечень поддерживаемых приложений, платформ виртуализации и инфраструктурных сервисов является сильной стороной Morpheus. Причем, есть как готовые шаблоны, так и возможность создавать свои собственные средствами библиотеки и большого количества доступных из коробки образов, скриптов и файлов конфигураций. Инструмент достаточно гибкий и, в сравнении с конкурентами, относительно простой в развертывании.

Автор: Сергей Власов, инженер-проектировщик облачных решений «Инфосистемы Джет»