Во многих компаниях стоит задача быстрого развертывания кластеров Kubernetes. Хорошо, когда создание кластера происходит автоматически. Но ещё лучше, когда пользователь, например, разработчик может создать кластер и потом управлять им «по кнопке», не привлекая для этого devops’ов. В своей облачной лаборатории мы посмотрели, как с созданием кластера Kubernetes справляется платформа управления гибридным облаком Morpheus: автоматизировали развертывание и оценили возможности управления и масштабирования кластера.
![](https://habrastorage.org/getpro/habr/post_images/af3/38a/629/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 создает и разворачивает кластерные инстансы. Схема ниже дает представление о том из каких компонентов формируется кластерный инстанс.
![](https://habrastorage.org/getpro/habr/post_images/b23/51b/f30/b2351bf309fcef1ca2bcee37cdf1b45b.jpg)
Как видно, инстанс состоит из шаблонов (cluster layouts), а шаблоны в свою очередь связаны с нодами (node type). Все обозначенные выше компоненты являются элементами библиотеки Morpheus.
Создание собственного инстанса происходит с помощью раздела Library (библиотека). На скриншоте представлена часть интерфейса Morpheus, отображающая все разделы библиотеки.
![](https://habrastorage.org/getpro/habr/post_images/33c/1cf/0fa/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 и создадим две новых ноды.
Следующий этап — создание Cluster Layout.
Нажимаем кнопку ADD в соответствующем разделе библиотеки, после чего открывается диалоговое окно настроек нового шаблона.
Теперь шаблон доступен в каталоге услуг. Рассмотрим процесс заказа услуги «Кластер Kubernetes», а также возможность ее масштабирования.
Кластерные инстансы доступны из раздела Clusters на вкладке Infrastructure.
![](https://habrastorage.org/getpro/habr/post_images/409/c55/741/409c5574144ee0a9b879b60627d8ae7d.jpg)
Сначала из образа «Kubernetes Cluster Master Centos (local)» развернется виртуальная машина. Затем поочередно будут запущены скрипты конфигурации master`а. После завершения установки и настройки master`ра, из шаблона «Kubernetes Cluster Worker (local)», будут развернуты ВМ для будущих worker`ов. Далее снова запустятся скрипты, которые установят на worker`ы необходимые компоненты. После того как развернутся все образы, на worker`ах запустятся Post Provision скрипты, подключающие их к кластеру.
Этапы развертывания кластера проиллюстрированы на схеме:
![](https://habrastorage.org/getpro/habr/post_images/9ad/1ac/838/9ad1ac8388b7bb70cc0feb6104fa0ea0.jpg)
Рассмотрим возможности панели управления развернутым инстансом.
Кроме базовой информации о стоимости заказанной услуги и производительности кластера, можно получить сведения об имеющихся namespace, а также создавать новые прямо из интерфейса. Информация о запущенных сервисах и контейнерах представлена на специальной вкладке.
![](https://habrastorage.org/getpro/habr/post_images/f48/f23/53f/f48f2353fcf9c62512a2aa3f6d97889d.jpg)
Добавить worker`ы в кластер достаточно просто. Для этого нужно на вкладке Actions на панели управления кластерным инстансом выбрать соответствующий пункт меню.
![](https://habrastorage.org/getpro/habr/post_images/2e6/c3c/342/2e6c3c3427a622559e2133ecc16771bd.jpg)
Далее в появившемся диалоговом окне, задать конфигурацию и принять настройки. После этого новый Worker автоматически развернется и присоединится к кластеру.
***
Создание и масштабирование кластеров Kubernetes в Morpheus не уступает по своей простоте специализированным приложениям. Подчеркнем еще раз, что в этой платформе данный функционал является далеко не единственным. Именно огромный перечень поддерживаемых приложений, платформ виртуализации и инфраструктурных сервисов является сильной стороной Morpheus. Причем, есть как готовые шаблоны, так и возможность создавать свои собственные средствами библиотеки и большого количества доступных из коробки образов, скриптов и файлов конфигураций. Инструмент достаточно гибкий и, в сравнении с конкурентами, относительно простой в развертывании.
Автор: Сергей Власов, инженер-проектировщик облачных решений «Инфосистемы Джет»
![](https://habrastorage.org/getpro/habr/post_images/af3/38a/629/af338a6296d8d080583c9ab2fb1cb092.jpg)
Что такое 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 создает и разворачивает кластерные инстансы. Схема ниже дает представление о том из каких компонентов формируется кластерный инстанс.
![](https://habrastorage.org/getpro/habr/post_images/b23/51b/f30/b2351bf309fcef1ca2bcee37cdf1b45b.jpg)
Как видно, инстанс состоит из шаблонов (cluster layouts), а шаблоны в свою очередь связаны с нодами (node type). Все обозначенные выше компоненты являются элементами библиотеки Morpheus.
Библиотека Morpheus
Создание собственного инстанса происходит с помощью раздела Library (библиотека). На скриншоте представлена часть интерфейса Morpheus, отображающая все разделы библиотеки.
![](https://habrastorage.org/getpro/habr/post_images/33c/1cf/0fa/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 и создадим две новых ноды.
- Начнем с master`а. На скриншоте ниже изображено диалоговое окно с настройками. Для начала задаем name и short name, а также версию. В поле TECHNOLOGY выбираем VMware, данный параметр определяет облачный ресурс, для которого создается образ. Далее указываем образ операционной системы — в нашем примере это Centos 7 из стандартной библиотеки Morpheus. А также определим какие скрипты будут запускаться для настройки и инициализации master`a.
- Для worker настройки аналогичные, за исключением набора скриптов. Здесь достаточно установить Docker и kubeadm, после чего запустить join-скрипт, который подключит Worker к Master.
Следующий этап — создание Cluster Layout.
Нажимаем кнопку ADD в соответствующем разделе библиотеки, после чего открывается диалоговое окно настроек нового шаблона.
- Задаем имя и версию шаблона и в выпадающем списке CLUSTER TYPE выбираем Kubernetes Cluster.
- TECHNOLOGY — ресурс-провайдер, для которого предназначен данный шаблон. Вернемся к нашей первоначальной схеме. В составе инстанса Kubernetes 3 шаблона. Первые два созданы для AWS и могут быть выбраны только в случае, если AWS подключен к Morpheus как управляемый ресурс. В нашем примере в качестве ресурс-провайдера используется VMware vSphere, его и выбираем в поле TECHNOLOGY.
- Добавляем в шаблон виртуальные образы для 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`а. - Сохраняем изменения и переходим к развертыванию кластера.
Теперь шаблон доступен в каталоге услуг. Рассмотрим процесс заказа услуги «Кластер Kubernetes», а также возможность ее масштабирования.
Создание кластера Kubernetes
Кластерные инстансы доступны из раздела Clusters на вкладке Infrastructure.
![](https://habrastorage.org/getpro/habr/post_images/409/c55/741/409c5574144ee0a9b879b60627d8ae7d.jpg)
- Вкладка Group – выбираем ресурсную группу. В нашем примере она единственная.
- На вкладке Name выбираем облако, в котором разворачивается кластер. Для нас это VMware. Задаем имя кластера и определяем настройки видимости (Public — доступен во всех тенантах, Private — доступен только в тенанте текущего пользователя).
- Вкладка Configure — тут выбираем шаблон и конфигурацию кластера. Наш кластерный инстанс имеет 4 шаблона для облака VMware. Используем созданный «Jet Demo Cluster».
PLAN — определяем ресурсы для Master.
VOLUMES — определяем размеры разделов, это общая настройка для master и worker.
NETWORKS — выбор сети облачного провайдера. На нашем стенде она всего одна, ее и выбираем.
POD CIDR — указываем подсеть для POD`ов.
WORKER PLAN — определяем ресурсы для Worker`ов.
NUMBER OF WORKERS — по умолчанию выбрано три, так как это количество указано в соответствующем шаблоне Node Type. Данный параметр менять не будем.
- На вкладке Automation опционально можно выбрать Workflow. В этом примере Workflow не используем, поэтому переходим к сводной информации о настройках кластера. Проверка — и нажимаем Complete.
- Morpheus начинает разворачивать кластер Kubernetes. В выбранной конфигурации процесс займет около 30 минут. После этого кластер будет доступен для запуска контейнеров с приложениями.
Процесс развертывания кластера
Сначала из образа «Kubernetes Cluster Master Centos (local)» развернется виртуальная машина. Затем поочередно будут запущены скрипты конфигурации master`а. После завершения установки и настройки master`ра, из шаблона «Kubernetes Cluster Worker (local)», будут развернуты ВМ для будущих worker`ов. Далее снова запустятся скрипты, которые установят на worker`ы необходимые компоненты. После того как развернутся все образы, на worker`ах запустятся Post Provision скрипты, подключающие их к кластеру.
Этапы развертывания кластера проиллюстрированы на схеме:
![](https://habrastorage.org/getpro/habr/post_images/9ad/1ac/838/9ad1ac8388b7bb70cc0feb6104fa0ea0.jpg)
Управление кластерным инстансом
Рассмотрим возможности панели управления развернутым инстансом.
Кроме базовой информации о стоимости заказанной услуги и производительности кластера, можно получить сведения об имеющихся namespace, а также создавать новые прямо из интерфейса. Информация о запущенных сервисах и контейнерах представлена на специальной вкладке.
![](https://habrastorage.org/getpro/habr/post_images/f48/f23/53f/f48f2353fcf9c62512a2aa3f6d97889d.jpg)
Масштабирование кластера
Добавить worker`ы в кластер достаточно просто. Для этого нужно на вкладке Actions на панели управления кластерным инстансом выбрать соответствующий пункт меню.
![](https://habrastorage.org/getpro/habr/post_images/2e6/c3c/342/2e6c3c3427a622559e2133ecc16771bd.jpg)
Далее в появившемся диалоговом окне, задать конфигурацию и принять настройки. После этого новый Worker автоматически развернется и присоединится к кластеру.
***
Создание и масштабирование кластеров Kubernetes в Morpheus не уступает по своей простоте специализированным приложениям. Подчеркнем еще раз, что в этой платформе данный функционал является далеко не единственным. Именно огромный перечень поддерживаемых приложений, платформ виртуализации и инфраструктурных сервисов является сильной стороной Morpheus. Причем, есть как готовые шаблоны, так и возможность создавать свои собственные средствами библиотеки и большого количества доступных из коробки образов, скриптов и файлов конфигураций. Инструмент достаточно гибкий и, в сравнении с конкурентами, относительно простой в развертывании.
Автор: Сергей Власов, инженер-проектировщик облачных решений «Инфосистемы Джет»
gecube
Спасибо за обзор интересного продукта.
Очень круто натыкать все в GUI, но это не масштабируемо. Не увидел — что там с API?
Еще я не понял — что с гибридными кластерами — когда часть нод в одной среде (например, vmware), часть в другой (например, инстансы vm в облаке)?