Как в Morpheus развернуть кластер Kubernetes за 30 минут

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

af338a6296d8d080583c9ab2fb1cb092.jpg


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

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

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

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


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

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


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

b2351bf309fcef1ca2bcee37cdf1b45b.jpg


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

33c1cf0fa4cabe66400bb3d2fbe89d0c.jpg


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.
    4436d1661862632544099667b8368aed.jpg
  2. Для worker настройки аналогичные, за исключением набора скриптов. Здесь достаточно установить Docker и kubeadm, после чего запустить join-скрипт, который подключит Worker к Master.
    832853d740c5536faccf47facd3ba838.jpg

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

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

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

    Здесь есть важный момент. В нашем примере 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», а также возможность ее масштабирования.
Кластерные инстансы доступны из раздела Clusters на вкладке Infrastructure.

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

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

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

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

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

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

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

    12043c82ad9b75d03aca4f46894f16c3.jpg

  4. На вкладке Automation опционально можно выбрать Workflow. В этом примере Workflow не используем, поэтому переходим к сводной информации о настройках кластера. Проверка — и нажимаем Complete.
    f81754bf44f5967a21d0e477fbb482ad.jpg
  5. Morpheus начинает разворачивать кластер Kubernetes. В выбранной конфигурации процесс займет около 30 минут. После этого кластер будет доступен для запуска контейнеров с приложениями.


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

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

9ad1ac8388b7bb70cc0feb6104fa0ea0.jpg


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

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

f48f2353fcf9c62512a2aa3f6d97889d.jpg


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

2e6c3c3427a622559e2133ecc16771bd.jpg


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

***

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

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

© Habrahabr.ru