Как экономить до 70% на инфраструктуре? Прерываемые ВМ в Kubernetes
Обсудим, зачем нужны прерываемые виртуальные машины и как с помощью Kubernetes автоматизировать с ними работу.
Облачные технологии и виртуальные машины привлекают своей гибкостью и способностью к масштабированию. Это отличный вариант для проектов с непредсказуемыми нагрузками. Но не всегда проекту или отдельным сервисам требуются виртуальные мощности, доступные 24/7.
В облаке Selectel есть прерываемые виртуальные машины, которые позволяют экономить до 70% на содержании инфраструктуры. Обсудим, как они работают и зачем нужны. Но перед этим вспомним основы.
От обычных виртуальных машин до прерываемых
Когда в облаке создается виртуальная машина (ВМ), она занимает ресурсы на железном хосте виртуализации. Они доступны ВМ полностью до момента удаления. Соответственно, когда мы говорим об облачной машине, хоть она и виртуальная, все так или иначе упирается в ресурсы на железном хосте виртуализации. Поэтому сегодня облако Selectel — это три региона доступности и шесть собственных дата-центров, в которых расположены тысячи стоек и серверов, где как раз и находятся виртуальные машины.
Какие бывают конфигурации
Виртуальные машины можно создавать на базе разных конфигураций. Проще говоря, каждая конфигурация — это некая комбинация из определенного числа ядер, памяти, дисков или GPU. В облаке Selectel есть шесть основных линеек конфигураций, которые называются фиксированными. Среди них — Standard/Memory/CPU Line, GPU Line, Shared Line и HighFreq Line. В них количество ресурсов определено облачным провайдером за пользователя.
Если среди фиксированных конфигураций нет варианта, который подходит клиенту, он может собрать виртуальную машину на базе произвольной конфигурации. И определить количество ядер, памяти, дискового пространства и других ресурсов самостоятельно.
Как конфигурация влияет на утилизацию ресурсов
Фиксированные конфигурации задаются на стороне облачного провайдера. Пользователь не может менять их соотношение. По сути, такие конфигурации выгодны облачным провайдерам, поскольку они сбалансированы и не приводят к неравномерной утилизации разных ресурсов.
Произвольные конфигурации позволяют дать больше гибкости клиентам, но утилизируют ресурсы неравномерно. Бывают ситуации, когда есть неиспользуемые ядра, дисковые пространства и оперативная память.
Предсказать нагрузку на облако — нетривиальная задача. Для клиентов облако должно быть надежным и бесконечным, чтобы всегда можно было создать нужную виртуальную машину. При этом количество железных хостов может резко и непредсказуемо стать меньше нужного количества. И чтобы не допустить критических ситуаций, мы оперативно вводим резервные хосты в основной пул. Так клиенты продолжают свою комфортную работу, без сбоев и ограничений.
Особенности резервных хостов
Резервные ресурсы — это те же самые железные хосты виртуализации, но они находятся в резервном пуле, а не в основном. То есть на них не работают виртуальные машины.
Резервные хосты и не полностью задействованные мощности могут простаивать, при этом требуют энергии и обслуживания. Для оптимизации использования оборудования и были придуманы прерываемые виртуальные машины.
Что такое прерываемые виртуальные машины
Прерываемые виртуальные машины — это ВМ, которые размещаются на базе неиспользуемых ресурсов активных и резервных хостов. При этом могут быть приостановлены провайдером в любой момент для освобождения занимаемых на железном хосте ресурсов, а их срок жизни не превышает 24 часов. При этом основная конфигурация может быть любой: как фиксированной, так и произвольной.
По производительности в рабочем состоянии прерываемые виртуальные машины ничем не отличаются от обычных, но обходятся клиентам до 70% дешевле.
Конечно, такая услуга подойдет не всем. Есть бизнес‑задачи, для которых использование прерываемых виртуальных машин не имеет смысла. Примером может послужить любой интернет‑магазин или другой сервис, который должен быть доступен круглосуточно. Критичные к uptime-приложения не могут переводиться на прерываемые виртуальные машины, как и приложения, чувствительные к внезапным остановкам.
С другой стороны, отсутствие гарантированной доступности требуется не всем компаниям и не каждому проекту. Есть задачи, когда прерываемые виртуальные машины оказываются очень кстати. На таких случаях остановимся чуть подробнее.
Для каких задач подходят прерываемые ВМ
Прерываемые виртуальные машины работают меньше суток, гораздо ниже по стоимости и не попадают под действие SLA. Это решение, которое идеально подойдет для проектов без требований к 100% отказоустойчивости, задач с переменной нагрузкой и параллельной пакетной обработки данных.
Разработка и тестирование
Если нужно проводить масштабные нагрузочные тесты, но бюджет пока не позволяет арендовать под это полноценные виртуальные машины, можно обратиться к прерываемым. Они особенно оптимальны, если тестирование производится не ежечасно, а ситуативно. Нужно провести нагрузочный тест раз в месяц? Арендуете прерываемые виртуальные машины, отрабатываете все кейсы и не переплачиваете. С большой вероятностью к моменту остановки ВМ провайдером вся работа будет уже сделана.
Data-аналитика
Задачи аналитики данных почти всегда требуют значительных вычислительных ресурсов. А при построении ETL-процессов и параллельной работе с другими задачами могут понадобиться дополнительные виртуальные машины с запасом оперативной памяти.
Дополнительные ВМ могут простаивать время от времени, поэтому их содержание оказывает ощутимую финансовую нагрузку. Но прерываемые виртуальные машины позволяют решить эту проблему. Например, если аналитики используют платформу Apache Spark, а для управления используют Kubernetes, драйверы можно разместить на обычных ВМ, в то время как worker-ноды — на прерываемых. В таком случае краткосрочная недоступность виртуальной машины не является проблемой, ведь при отключении одной ВМ задачи перераспределяются между другими нодами.
Обучение ML-моделей
Представьте: вы работаете с нейросетями, а основную часть времени занимают задачи по машинному обучению. Приходится активно использовать GPU-ресурсы для тренировки ML-моделей. Уровень затрат значительный, но отказаться от части виртуальных машин — значит, уронить скорость обучения.
Для снижения затрат можно высвободить часть машин и арендовать прерываемые ВМ. При этом данные нужно сохранять на сетевых дисках, тогда недоступность одной из виртуальных машин не приведет к тому, что обучение придется начинать сначала. Зато можно получить больше ресурсов GPU за меньшие деньги.
Периодические задачи
Бывает, нужно периодически очищать или обрабатывать данные из распределенных СУБД. В такие моменты большие вычислительные мощности позволяют сильно ускорить процесс. Но если все остальное время эти ресурсы простаивают, тратить крупные средства на аренду дорогих серверов неоправданно.
С помощью прерываемых виртуальных машин можно сократить затраты на ресурсы и ускорить периодические задачи, потратив часть освободившихся средств на более мощную конфигурацию. А если при работе с данными есть риск, что они повредятся при прерывании, информацию можно сохранять на сетевом диске. Тогда при перезапуске с помощью Kubernetes прерываемых виртуальных машин можно оперативно восстановить прогресс и сделать его почти бесшовным.
Прерываемые ВМ и Kubernetes
В Kubernetes есть два типа нод. Worker-ноды — это то, на чем работает наше приложение, а master-ноды — то, на чем работают системные компоненты. Прерываемые виртуальные машины можно использовать в качестве инфраструктуры для worker-нод, потому что Kubernetes изначально проектировали как инструмент, который должен спокойно реагировать на отказы в инфраструктуре.
То есть для Kubernetes недоступность виртуальной машины (ноды) — обычный кейс. А значит, прерывание не является проблемой: Kubernetes всегда заменит упавшие ноды. Кроме того, он позволяет автоматизировать многие задачи, в том числе и перезапуск прерываемых ВМ.
Как создать кластер Kubernetes на прерываемых ВМ
На базе прерываемых виртуальных машин можно разворачивать Managed Kubernetes — сервис управления кластерами в облаке Selectel. Для этого достаточно зарегистрироваться в панели управления и при создании кластера в разделе Облачная платформа → Kubernetes сделать группу нод прерываемой.
Создать кластер Managed Kubernetes на базе прерываемых виртуальных машин можно и через Terraform. Подробности — в официальной документации к нашему Tf-провайдеру.
Преимущества Managed Kubernetes
Managed Kubernetes позволяет автоматизировать работу с прерываемыми виртуальными машинами. Тем самым — обеспечить непрерывность для запущенных процессов на нодах с выгодой до 70%.
При этом конфигурация нод может быть любой: фиксированной или произвольной. Среди фиксированных конфигураций есть сборки с видеокартами и без. А если одной конфигурации недостаточно, можно добавить дополнительную группу нод — она может быть как обычной, так и прерываемой. В этом плане ноды независимы друг от друга.
Если в облаке Selectel сработал механизм «вытеснения» виртуальной машины и она была остановлена, Managed Kubernetes позаботится об автоматическом перезапуске без промедлений. Итог — нода оперативно вернется в кластер, а восстановление займет не более минуты.
Заключение
Зачем переплачивать за дополнительные ресурсы, если можно использовать прерываемые виртуальные машины в связке с Managed Kubernetes в облаке Selectel? Решение не вызывает трудностей с доступностью и отказоустойчивостью, при этом позволяет сэкономить до 70% средств на инфраструктуре. Достаточно поставить всего одну галочку.