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

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

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

Автор:

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

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

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

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

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

Шуляк, А. В. Масштабирование ресурсов с использованием Kubernetes / А. В. Шуляк. — Текст : непосредственный // Молодой ученый. — 2022. — № 31 (426). — С. 8-13. — URL: https://moluch.ru/archive/426/94330/ (дата обращения: 22.12.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
Основные термины (генерируются автоматически): приложение, сервер, система, центральный процессор, масштабирование, нагрузка, ресурс, автоматическое масштабирование, внутренняя система, открытый исходный код.


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

Параллельное программирование в Java

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

Сравнение потоков Java и Kotlin Coroutines в контексте Android-разработки

В современной разработке мобильных приложений на Android, понимание и эффективное использование многозадачности является ключевым для создания высокопроизводительных и отзывчивых приложений. Многозадачность позволяет приложениям одновременно обрабаты...

Исследование энергоэффективных MANET-протоколов маршрутизации

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

Протокол TACACS+

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

Энергопотребление в состоянии screen-off

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

Платформы для разработки децентрализованных приложений на основе Blockchain

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

Реализация управления конфигурацией сетевого оборудования с использованием Ansible: интерфейс управления

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

Снижение затрат на программное обеспечение с использованием массива GNU\Linux

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

Автоматизированная среда оценки усвоения студентом учебного материала

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

Оптимизация работы промышленной электростанции в условиях неопределенности спроса на пар

Работа местных электростанций в химической промышленности обычно определяется потребностью производственных установок в паре. Этот спрос нестабилен из-за отклонений от производственного плана и колебаний в работе заводов. Неопределенность потребности...

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

Параллельное программирование в Java

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

Сравнение потоков Java и Kotlin Coroutines в контексте Android-разработки

В современной разработке мобильных приложений на Android, понимание и эффективное использование многозадачности является ключевым для создания высокопроизводительных и отзывчивых приложений. Многозадачность позволяет приложениям одновременно обрабаты...

Исследование энергоэффективных MANET-протоколов маршрутизации

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

Протокол TACACS+

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

Энергопотребление в состоянии screen-off

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

Платформы для разработки децентрализованных приложений на основе Blockchain

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

Реализация управления конфигурацией сетевого оборудования с использованием Ansible: интерфейс управления

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

Снижение затрат на программное обеспечение с использованием массива GNU\Linux

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

Автоматизированная среда оценки усвоения студентом учебного материала

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

Оптимизация работы промышленной электростанции в условиях неопределенности спроса на пар

Работа местных электростанций в химической промышленности обычно определяется потребностью производственных установок в паре. Этот спрос нестабилен из-за отклонений от производственного плана и колебаний в работе заводов. Неопределенность потребности...

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