Сэкономьте до 90 % на вычислительных расходах, обеспечив нулевое время простоя.

Amazon Elastic Kubernetes Service (EKS) — это управляемая служба для запуска Kubernetes в облаке AWS. Управляемое решение запускает однопользовательский план управления Kubernetes для каждого кластера EKS. Когда кластер EKS настроен и готов, вам необходимо подготовить рабочие процессы Amazon Elastic Compute Cloud (EC2) или AWS Fargate для запуска ваших приложений.

Служба EC2 предоставляет масштабируемые вычислительные мощности. Вы можете арендовать виртуальные машины с именованными экземплярами, на которых можно запускать свои приложения. Сервис предлагает вам различные типы инстансов и способы оплаты.

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

В большинстве случаев люди используют для своих кластеров EKS только инстансы по запросу. Если это относится и к вам, вы можете упустить значительную экономию, если не будете использовать спотовые инстансы EC2 (до 90 % экономии).

Прочитав эту статью, вы узнаете, как использовать EKS со спотовыми инстансами EC2 посредством:

  • Полный обзор 4 моделей ценообразования EC2 позволяет выбрать наиболее подходящую для вас.
  • Знать, когда использовать спотовые инстансы в вашей вычислительной стратегии.
  • Понимание того, как работают спотовые инстансы, чтобы максимизировать ваши инвестиции и свести к минимуму их недостатки.
  • Разработка кластера EKS с помощью спотовых инстансов EC2.

4 модели ценообразования EC2

1- Экземпляры по требованию

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

Выбирайте инстансы по требованию, чтобы не платить аванс и не брать на себя долгосрочных обязательств.

2- Зарезервированные экземпляры

Зарезервированные инстансы предоставляют вам скидку до 75 % по сравнению с инстансами по требованию. Вы получите выгоду от резервирования мощности в определенных зонах доступности. Предсказуемость использования гарантирует доступность вычислительных мощностей, когда это необходимо.

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

3- Выделенные хосты

Выделенный хост — это физический сервер EC2, выделенный вам для запуска экземпляров. Вы можете сократить расходы, используя существующее серверное программное обеспечение (например, Windows Server). Использование этой модели ценообразования может помочь вам достичь требований соответствия. Вы платите по требованию за каждый час активности хоста в аккаунте.

Выберите выделенные хосты, если у вас есть лицензии на программное обеспечение и требования соответствия.

4- Спотовые инстансы

Спотовые инстансы EC2 — это неиспользуемые ресурсы EC2 в облаке AWS. Они доступны со скидкой до 90% по сравнению с ценами по требованию. Спотовая цена экземпляров колеблется в зависимости от спроса и предложения. В случае инстансов On-Demand вы платите за использование в час или секунду. В отношении спотовых инстансов нет обязательств, и AWS может запросить прекращение работы инстанса. Таким образом, вычислительные ресурсы перераспределяются в облаке AWS.

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

Когда использовать спотовые инстансы EC2?

Вы можете использовать спотовые инстансы для покупки дополнительной вычислительной мощности по скидке. Это отличное дополнение к экземплярам On-Demand. Они дешевле, чем цены на EC2 по запросу.

Спотовые инстансы не должны справляться со всеми рабочими нагрузками из-за возможных сбоев в обслуживании.

Спотовые инстансы идеально подходят для следующих целей:

  • Задачи пакетной обработки включают обработку большого объема данных за короткое время. Прекрасными примерами являются такие задачи, как генерация отчетов, генерация документов или кодирование видео. Они большую часть времени не имеют гражданства.
  • Непрерывная интеграция (CI) и непрерывная доставка (CD). Вы можете масштабировать задачи, выполняемые в вашем любимом инструменте CI/CD (Gitlab, Jenkins и т. д.). Задания выполняются по нерегулярному графику и являются эфемерными. Использование инстансов по требованию дорого обходится для такого использования.
  • Высокопроизводительные вычисления. Вы можете использовать спотовые инстансы для рабочих нагрузок, требующих большого объема памяти и интенсивных вычислительных мощностей. Приложения на основе ИИ и машинного обучения жадные и дорогостоящие. Спотовые экземпляры — лучший вариант для них.
  • Аналитика больших данных. Спотовые инстансы можно использовать для интенсивной обработки, чтобы анализировать большие наборы данных и извлекать ценную информацию. Масштабируемость и стоимость спотовых инстансов являются хорошим решением.
  • Визуализация рабочих нагрузок. С помощью спотовых инстансов можно отображать дешевые рабочие нагрузки.

Спотовые инстансы идеально подходят для автоматизации, массового масштабирования и очень просты в использовании.

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

Управление спотовыми инстансами, как правило, сложно из-за времени и сбоев. Если вы можете справляться со сбоями и уменьшать риски, вы можете двигаться вперед.

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

Как работают спотовые инстансы EC2?

Для запуска экземпляров необходимо создать запрос спотового инстанса.

Запрос включает максимальную цену, которую вы готовы заплатить за инстанс. Если вы не укажете его, максимальной ценой будет цена по требованию. Вы можете добавить другие ограничения, такие как тип экземпляра и зона доступности.

AWS проверит ваш запрос и запустит ваши спотовые инстансы при 2 условиях:

  • Ваша максимальная цена ниже спотовой цены.
  • Доступная емкость зависит от типов инстансов в зоне доступности.

При подтверждении с вас взимается текущая цена спотового инстанса, а не максимальная цена, которую вы установили.

Amazon EC2 корректирует спотовую цену в зависимости от долгосрочного предложения и спроса на спот. Спотовый рынок постоянно колеблется. Вы можете сравнить его с фондовым рынком на основе спроса и предложения.

Ваши спотовые инстансы работают до тех пор, пока вы их не остановите или не завершите, или пока Amazon EC2 не прервет их. Amazon EC2 может прерватьваш спотовый инстанс, когда:

  • Спот-инстанс требует повышения.
  • Предложение спотовых инстансов уменьшается.
  • Цена спотового инстанса превышает максимальную цену.

Amazon EC2 отправляет вам уведомление о прерывании работы спотового инстанса за 2 минуты до завершения работы инстанса. Таким образом, вы можете предвидеть нарушение.

Мы увидим, как построить отказоустойчивый и экономичный кластер EKS с помощью Terraform.

Проектирование кластера EKS с помощью спотовых инстансов EC2

Разнообразьте свои спотовые инстансы

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

Пул спотовой емкости будет отличаться в зависимости от зоны доступности:

Цена также будет отличаться в зависимости от типа инстанса:

Спотовые ресурсы разделены на пулы в зависимости от типа инстанса, зоны доступности и региона AWS:

Пулы спотовой емкости = (зоны доступности) x (типы инстансов) = 3 x 5 = 15

На приведенной выше диаграмме показано 15 пулов емкости.

Используйте как можно больше зон доступности и типов инстансов, чтобы повысить стабильность и отказоустойчивость

Кластерная архитектура EKS

Следующая архитектура EKS распространяется на 3 зоны доступности. Рабочие нагрузки разделены на 2 группы узлов:

  • 1 группа узлов, на которой запущены спотовые инстансы с несколькими типами инстансов для обеспечения отказоустойчивости.
  • 1 группа узлов, на которой запущены инстансы по требованию для запуска критически важных компонентов кластера, приложений с отслеживанием состояния и обеспечения резервного копирования спотовых инстансов.
  • Каждый рабочий EKS запускает Контроллер обработчика завершения узла.
  • Cluster-Autoscaler развертывается на инстансах по требованию

Контроллер обработчика завершения узла

Этот проект гарантирует, что плоскость управления Kubernetes надлежащим образом реагирует на события, которые могут привести к недоступности вашего экземпляра EC2, такие как «события обслуживания EC2, точечные прерывания EC2, масштабирование ASG, перебалансировка ASG AZ, и завершение инстанса EC2 через API или консоль. Если его не обработать, код вашего приложения может не остановиться корректно, восстановление полной доступности может занять больше времени или случайно запланировать работу на отказавших узлах». из https://github.com/aws/aws-node-termition-handler



Amazon Eventbridge собирает события EC2, включая прерывание спотового инстанса, и помещает их в очередь SQS. Обработчик завершения узла использует эту очередь и управляет рабочей нагрузкой для обеспечения отказоустойчивости:

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

Кластер-Автомасштабирование

“Cluster Autoscaler” — компонент, который автоматически подстраивает размер Kubernetes Cluster, чтобы всем подам было место для запуска и не было лишних узлов с https://github.com/kubernetes/autoscaler



Роль Cluster-Autoscaler заключается в увеличении/уменьшении масштаба кластера для обеспечения эластичности. Он также будет управлять заменой будущих прекращенных спотовых инстансов.

Заключение

Теперь вы лучше понимаете различные модели ценообразования EC2. Вы знаете, что лучше всего использовать в соответствии с вашими обязательствами и рабочими нагрузками. Мы подробно рассмотрим, когда использовать спотовые инстансы, и поймем, как они работают. Это позволило понять главное неудобство: отсутствие обязательств и перерывов.

Будем надеяться, что прерывание работы спотового инстанса можно ожидать благодаря уведомлению. Кроме того, вы увидите, как разнообразить типы инстансов и максимально распределить их по множеству зон доступности. Это увеличивает количество пулов спотовых инстансов, из которых можно выбирать инстансы.

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

Спасибо за прочтение! 🙏 Надеюсь, статья была полезной. Хотите узнать больше о DevOps? Ознакомьтесь с другими статьями, подобными этой, внизу! ⬇️