Масштабирование ресурсов с использованием Kubernetes | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Журнал выйдет 11 мая, печатный экземпляр отправим 15 мая.

Опубликовать статью в журнале

Автор:

Рубрика: Информационные технологии

Опубликовано в Молодой учёный №31 (426) август 2022 г.

Дата публикации: 05.08.2022

Статья просмотрена: 62 раза

Библиографическое описание:

Шуляк, А. В. Масштабирование ресурсов с использованием Kubernetes / А. В. Шуляк. — Текст : непосредственный // Молодой ученый. — 2022. — № 31 (426). — С. 8-13. — URL: https://moluch.ru/archive/426/94330/ (дата обращения: 02.05.2024).



Компания, внедряющая виртуализацию, может утилизировать большее количество имеющихся ресурсов серверов путём одновременного использования серверов несколькими приложениями. В классическом подходе сервер выделяется для одного или нескольких приложений, однако нагрузка не перераспределяется если где-то есть дополнительные ресурсы, которые можно утилизировать. При таком подходе получается, что некоторые из серверов могут быть перегружены, а на некоторых будет не полная утилизация ресурсов что приведёт к меньшей эффективности работы приложений. Для устранения данной проблемы можно использовать систему оркестрации контейнерных приложений Kubernetes. Данная система будет выделять ресурсы по требованию, и иметь возможность переназначать приложения между хост-серверами что поможет улучшить утилизацию ресурсов и производительность приложений. Данное исследование направлено на применение системы Kubernetes для автоматического масштабирования, оценки его производительности при растущей нагрузке, а также моделирование стандартных сценариев использование серверов приложениями.

В последнее время информационные технологии играют определяющую роль в современных бизнес-процессах. Эта роль даёт одним предприятиям конкурентное преимущество над другими на рынке путём улучшения устойчивости к пиковым нагрузкам и снижения расходов на обслуживание серверов большой мощности. В этом помогают современные многопоточные центральные процессоры, которые позволяют обрабатывать десятки процессов одновременно, однако это порождает и другую проблему: переизбыток ресурсов на одном хосте, что приводит к неэффективному использованию и простою вычислительных мощностей. Проблема заключается в том, что не многие приложения поддерживают многопоточное исполнение и способны в полной мере утилизировать все доступные мощности. Существующие исследования показывают, что классический подход распределения ресурсов по хостам приводит к типичному простаиванию примерно 15–20 процентам вычислительной мощности что увеличивает затраты на обслуживание, а также общее число серверов [1]. Объединение ресурсов серверов в кластеры позволяет устранить дополнительные затраты на обслуживания, а также улучшает общую производительность систем. Однако объединение всех доступных вычислительных ресурсов в кластер не является простой задачей. Самый простой подход по максимальному наполнению всех хостов приложениями не даст эффективного использования ресурсов, а приведёт к конфликту между различными приложениями. Кластеризация требует сложного подхода, который включает в себя анализ требуемых, затрачиваемых и максимальных ресурсов, балансировка нагрузки, мониторинг и перераспределение ресурсов в случае отказа хостов и т. д. Для того чтобы уменьшить сложно подобных систем используют виртуализацию в различных проявлениях. Такой подход позволяет утилизировать один хост-сервер в качестве нескольких виртуальных и уже туда распределить исполняемые ресурсы. Ещё одним преимуществом является то, что виртуальные системы изолированы друг от друга и никак не влияют на дополнительные процессы, исполняемые на данном сервере. Также изоляция увеличивает гибкость и простоту переноса бизнес-нагрузки с одного хост-сервера на другой.

Классические виртуальные системы с полной виртуализацией всего аппаратного обеспечения имеют преимущество в том, что приложение может использовать все доступные ресурсы операционной системы, однако не может выйти за её пределы поскольку находит в строго изолированном виртуальном пространстве. Недостаток такой системы состоит в том, что для поддержания данного уровня изоляции требуются дополнительные ресурсы, поскольку эмулируются все аппаратные компоненты, что снижает эффективность данного подхода. Другим типом виртуализации является контейнерная — это тип виртуализации, который изолирует только один конкретный процесс приложения и требуемые ему ресурсы в рамках одной операционной системы. Такой подход имеет меньшую степень безопасности, однако существенно большую эффективность использования ресурсов в силу отсутствия дополнительных систем для эмуляции.

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

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

Данное исследование направлено на применение Kubernetes для масштабирования приложений и оценки его производительности при растущем числе пользователей.

Методика исследования

Основными метриками будут: показатель нагрузки на сервер-хосте указывающая общую утилизацию одного сервера, и показатель нагрузки внутри конкретного контейнера, в котором запущено приложение и утилизация системы им, данная метрика будет снята при помощи системы cAdvisor.

Источники метрик

Рис. 1. Источники метрик

Минимальный оперируемый объект внутри Kubernetes — это Pod, который может включать в себя несколько контейнеров. Для эффективного масштабирования используется принцип Horizontal Pod Auto-scaling, который увеличивает число исполнительных подов на основании некоторых метрик с определёнными задержками. В случае превышения порога по утилизации процессора одним из подов, он может создать ещё один и балансировать нагрузку между ними, таким образом распределяя нагрузку и увеличивая эффективность работы приложения. Так можно удерживать утилизацию процессора одним приложением в диапазоне 80–90 процентов имея при этом максимальную производительность и утилизацию ресурсов.

В данном исследовании в качестве нагрузки использовались эхо-сервера для проверки производительности относительно генерируемого количества запросов. Эхо-сервер — это максимально простой и производительный веб-сервер, который в качестве ответа отправляет то, что ему было отправлено в запросе. Что позволяет тестировать именно производительность системы, а не самого сервера поскольку в силу своей простоты он не может быть узким местом. Для генерации трафика была использована система для нагрузочного тестирования приложений с гибкой настройкой количества и размера запросов [4]. В качестве тестируемой системы использовался кластер состоящий из трёх узлов, один мастер-сервер и два сервера-исполнителя.

Архитектура тестируемой системы

Рис. 2. Архитектура тестируемой системы

Kubernetes — самый популярный и доступный инструмент для оркестрации контейнерных приложений [3]. Он был создан компанией Google из внутренней системы Borg, которая использовалась для оркестрации большого количества приложений. Для эффективного управления контейнерами было принято создать сначала внутреннюю систему, а после и выпустить её в публичный доступ с открытым исходным кодом. Kubernetes имеет широкую поддержку сообщества и огромное количество расширений позволяющих настраивать систему максимально гибким образом.

Общая архитектура представляет собой две основные группы: мастер-ноды и исполнительные ноды. На мастер серверах исполняются процессы для контроля ресурсов, исполнительные ноды выполняют бизнес нагрузку системы.

В основном большинство приложений имеют три главных компонента: пользовательского интерфейса, бизнес-логики приложения и хранилища данных. В монолитной архитектуре все три компонента могут быть объеденины в одну большую систему, они напрямую зависят друг от друга и работают как единый процесс. В другом подходе — микросервисном, все компоненты разделены и не имеют прямой зависимости друг от друга. Они могут работать независимо и работать с различными копиями друг друга обеспечивая балансировку нагрузки. [2]

Для настройки масштабируемости Kubernetes нужны следующие параметры: минимальное и максимальное количество подов, граничные значения CPU — минимальное и максимальное. Алгоритм работает следующим образом: всегда поддерживается минимальное количество подов. Когда загрузка центрального процессора начинает расти и превышает верхнюю границу, начинается авто масштабирование и с ростом нагрузки на остальные поды до тех пор, пока не достигнет максимальной границы по количеству подов. Масштабирование в меньшую сторону работает аналогичным образом, если граница меньше нижнего порога, экземпляры подов начинают удаляться и вместе с нагрузкой уменьшаются до минимального количества подов.

Результаты:

Преимуществом виртуализации является сокращение общего числа систем и связанных с этим накладных расходов (операционное пространство и расходы человеко-часов).

Оценка производительности микросервисов включает в себя количество одновременных запросов, время отклика одного и нескольких серверов. Оценка производится по двум сценариям, первый: одновременное подключение 10000 одновременных подключений каждое из которых выполняет 10000 запросов. Второй: 100000 подключений, каждое из которых выполняет 1000 запросов. Каждый этап выполняется трижды. Пороговая граница авто масштабирования: 80 % загрузки эхо-сервера.

Сценарий 1:

Этап

Нагрузка ЦПУ (милиядра), один сервер. Без масштабирования.

Нагрузка ЦПУ (милиядра) на нескольких серверах с масштабированием.

1

619.00

210.00

2

591.00

217.00

3

609.00

230.00

Среднее

606.34

219.00

Сценарий 2:

Этап

Нагрузка ЦПУ (милиядра), один сервер. Без масштабирования.

Нагрузка ЦПУ (милиядра) на нескольких серверах с масштабированием.

1

580.00

215.00

2

484.00

340.00

3

552.00

324.00

Среднее

555.00

293.00

В дополнение к результатам нагрузки на центральный процессор, так же были записаны времена ответа серверов при каждом сценарии, в таблице представлено среднее:

Время ответа (мс)

Один сервер (без масштабирования)

Несколько серверов (масштабирование)

Сценарий 1

43 мс

12 мс

Сценарий 2

58 мс

32 мс

Вывод:

Использование контейнерной виртуализации обеспечивает максимальную гибкость для использования всей ёмкости ресурсов на одном сервере. В данной работе я провёл исследование с использованием двух сценариев нагрузки центрального процессора на одном и нескольких серверах [5]. При использовании нескольких серверов была использована система автоматического масштабирования для работы с клиентскими запросами. Использование масштабирования для контейнеров уменьшило общую загрузку центрального процессора на всех системах путём распределения нагрузки по контейнерам, которые работали с отдельными потоками процессора.

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

Литература:

  1. Scalability of a Web Server: How Does Vertical Scalability Improve the Performance of a Server? Ancuta-Petronela Barzu; Mihai Carabas; Nicolae Tapus https://doi.org/10.1109/CSCS.2017.22
  2. Обзор методов масштабирования веб-приложений. Протозанов Е. С., Овсянников В. К. https://www.elibrary.ru/item.asp?id=23192031
  3. Automated Resource Management System based on Kubernetes Technology. Jirayus Sithiyopasakul; Tuanjai Archevapanich; Boonchana Purahong; Paisan Sithiyopasakul; Chawalit Benjangkaprasert. https://doi.org/10.1109/ECTI-CON51831.2021.9454911
  4. Тестирование сайта с помощью онлайн-инструмента нагрузочного тестирования. Колот Александр Владиславович, Щелкунова Марина Евгеньевна. https://www.elibrary.ru/item.asp?id=48375082
  5. Использование kubernetes для построения облачной платформы для удаленного запуска учебных сервисов. Ивченко М. С., Тарасов В. Г. https://www.elibrary.ru/item.asp?id=43835834
Основные термины (генерируются автоматически): приложение, сервер, система, центральный процессор, масштабирование, нагрузка, ресурс, автоматическое масштабирование, внутренняя система, открытый исходный код.


Похожие статьи

Разработка учебного курса по программированию под мобильную...

Основные термины (генерируются автоматически): операционная система, приложение, устройство, учебный курс, ADE, общая схема экранов, открытый исходный код, разработанное приложение, установленная операционная система, учебный материал.

Проектирование мобильных приложений и облачных сервисов

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

Проведен анализ шаблонов взаимодействия. Рассмотрены особенности портирования приложений на мобильные платформы.

Причины и способы миграции веб-сайта с системы управления...

Joomla! — это бесплатная, с открытым исходным кодом система управления контентом для создания веб-сайтов. В течение двенадцати лет данный проект не стоит на месте и прекрасно развивается, приобретая популярность у многих пользователей в мире.

Основные функция веб-приложения с учетом анализа...

Ключевые слова: CMS-система, фреймворка Zend Framework, веб-приложения, база данных, веб-сайт.

Основные термины (генерируются автоматически): CMS, сайт, система управления, динамический сайт, MODX, баз данных, открытый исходный код, гипертекстовая...

Фрезерный станок с ЧПУ на основе открытого программного...

Управляющая система считывает инструкции специализированного языка программирования (например, G-кода), которые

‒ Большое количество подвижных частей и большая нагрузка на них.

В качестве интерпретатора G-кода и системы управления станком выступает LinuxCNC.

Автоматизация развертывания компонент распределенного...

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

Тестирование графического интерфейса (GUI testing)

Тестирование GUI является процесс тестирования графического пользовательского интерфейса системы из тестируемого приложения.

GUI это то, что видит пользователь. Пользователь не видит исходный код. Интерфейс виден пользователю.

Преимущества использования контейнерной архитектуры...

Одним из решений проблемы изоляции компонент системы друг от друга и, в том числе, от корневой операционной системы является использование виртуальных машин. Однако, здесь существует несколько основных недостатков: Производительность ивремя загрузки.

Программные продукты с использованием открытого исходного...

Библиографическое описание: Маркова, А. В. Программные продукты с использованием открытого исходного кода в Едином реестре

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

Похожие статьи

Разработка учебного курса по программированию под мобильную...

Основные термины (генерируются автоматически): операционная система, приложение, устройство, учебный курс, ADE, общая схема экранов, открытый исходный код, разработанное приложение, установленная операционная система, учебный материал.

Проектирование мобильных приложений и облачных сервисов

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

Проведен анализ шаблонов взаимодействия. Рассмотрены особенности портирования приложений на мобильные платформы.

Причины и способы миграции веб-сайта с системы управления...

Joomla! — это бесплатная, с открытым исходным кодом система управления контентом для создания веб-сайтов. В течение двенадцати лет данный проект не стоит на месте и прекрасно развивается, приобретая популярность у многих пользователей в мире.

Основные функция веб-приложения с учетом анализа...

Ключевые слова: CMS-система, фреймворка Zend Framework, веб-приложения, база данных, веб-сайт.

Основные термины (генерируются автоматически): CMS, сайт, система управления, динамический сайт, MODX, баз данных, открытый исходный код, гипертекстовая...

Фрезерный станок с ЧПУ на основе открытого программного...

Управляющая система считывает инструкции специализированного языка программирования (например, G-кода), которые

‒ Большое количество подвижных частей и большая нагрузка на них.

В качестве интерпретатора G-кода и системы управления станком выступает LinuxCNC.

Автоматизация развертывания компонент распределенного...

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

Тестирование графического интерфейса (GUI testing)

Тестирование GUI является процесс тестирования графического пользовательского интерфейса системы из тестируемого приложения.

GUI это то, что видит пользователь. Пользователь не видит исходный код. Интерфейс виден пользователю.

Преимущества использования контейнерной архитектуры...

Одним из решений проблемы изоляции компонент системы друг от друга и, в том числе, от корневой операционной системы является использование виртуальных машин. Однако, здесь существует несколько основных недостатков: Производительность ивремя загрузки.

Программные продукты с использованием открытого исходного...

Библиографическое описание: Маркова, А. В. Программные продукты с использованием открытого исходного кода в Едином реестре

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

Задать вопрос