Managed node groups

Группы управляемых узлов (нодов) Amazon EKS автоматизируют выделение ресурсов и управление жизненным циклом узлов (инстансов Amazon EC2) для кластеров Amazon EKS Kubernetes.

Благодаря группам управляемых узлов Amazon EKS вам не нужно отдельно выделять или регистрировать инстансы Amazon EC2, предоставляющие вычислительные мощности для запуска ваших приложений Kubernetes. Вы можете создавать, автоматически обновлять или отключать узлы кластера с помощью одной операции. Обновления узлов и завершение автоматически истощают узлы, чтобы гарантировать, что ваши приложения останутся доступными.

Каждый управляемый узел выделяется как часть группы Amazon EC2 Auto Scaling, которой управляет Amazon EKS. Каждый ресурс, включая экземпляры и группы Auto Scaling, работает в вашей учетной записи AWS. Каждая группа узлов работает в нескольких определяемых вами зонах доступности.

Вы можете добавить группу управляемых узлов в новые или существующие кластеры с помощью консоли Amazon EKS, eksctl, AWS CLI; AWS API или инфраструктура как инструменты кода, включая AWS CloudFormation. Узлы, запущенные как часть управляемой группы узлов, автоматически помечаются для автоматического обнаружения средством автоматического масштабирования кластера Kubernetes. Вы можете использовать группу узлов, чтобы применять метки Kubernetes к узлам и обновлять их в любое время.

За использование групп управляемых узлов Amazon EKS не взимается дополнительная плата, вы платите только за предоставленные ресурсы AWS. К ним относятся инстансы Amazon EC2, тома Amazon EBS, часы работы кластера Amazon EKS и любая другая инфраструктура AWS. Минимальных комиссий и требований по объему использования нет.

Концепции групп управляемых узлов

Группы управляемых узлов Amazon EKS создают для вас инстансы Amazon EC2 и управляют ими.

Каждый управляемый узел выделяется как часть группы Amazon EC2 Auto Scaling, которой управляет Amazon EKS. Более того, все ресурсы, включая инстансы Amazon EC2 и группы Auto Scaling, работают в вашей учетной записи AWS.

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

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

Если вы запускаете приложение с отслеживанием состояния в нескольких зонах доступности, которое поддерживается томами Amazon EBS и использует автомасштабирование кластера Kubernetes, вам следует настроить несколько групп узлов, каждая из которых привязана к одной зоне доступности. Кроме того, вы должны включить функцию —balance-similar-node-groups.

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

Amazon EKS следует модели общей ответственности за CVE и исправления безопасности в группах управляемых узлов. Когда на управляемых узлах работает оптимизированный образ AMI Amazon EKS, Amazon EKS отвечает за создание исправленных версий образа AMI при появлении сообщений об ошибках или проблемах. Мы можем опубликовать исправление. Однако вы несете ответственность за развертывание этих исправленных версий AMI в группах управляемых узлов. Когда на управляемых узлах работает пользовательский образ AMI, вы несете ответственность за создание исправленных версий образа AMI при появлении сообщений об ошибках или проблемах, а затем за развертывание образа AMI. Дополнительные сведения см. в разделе Обновление группы управляемых узлов.

Группы управляемых узлов Amazon EKS можно запускать как в общедоступных, так и в частных подсетях. Если вы запускаете группу управляемых узлов в общедоступной подсети 22 апреля 2020 г. или позднее, в подсети должно быть установлено значение true для параметра MapPublicIpOnLaunch, чтобы экземпляры могли успешно присоединиться к кластеру. Если общедоступная подсеть была создана с использованием eksctl или шаблонов AWS CloudFormation, предоставленных Amazon EKS, 26 марта 2020 г. или позже, то для этого параметра уже задано значение true. Если общедоступные подсети были созданы до 26 марта 2020 г., необходимо изменить параметр вручную. Дополнительные сведения см. в разделе Изменение общедоступного атрибута адресации IPv4 для вашей подсети.

При использовании конечных точек VPC в частных подсетях необходимо создать конечные точки для com.amazonaws.region.ecr.api, com.amazonaws.region.ecr.dkr и конечную точку шлюза для Amazon S3. Дополнительные сведения см. в разделе Конечные точки VPC интерфейса Amazon ECR (AWS PrivateLink).

Группы управляемых узлов нельзя развернуть на AWS Outposts, в AWS Wavelength или в локальных зонах AWS.

Вы можете создать несколько групп управляемых узлов в одном кластере. Например, вы можете создать одну группу узлов со стандартным Amazon Linux 2 AMI, оптимизированным для Amazon EKS, для некоторых рабочих нагрузок, а другую — с вариантом графического процессора для рабочих нагрузок, требующих поддержки графического процессора.

Если в вашей группе управляемых узлов возникает ошибка проверки состояния инстанса Amazon EC2, Amazon EKS возвращает сообщение об ошибке, помогающее диагностировать проблему. Дополнительные сведения см. в разделе Ошибки групп управляемых узлов.

Amazon EKS добавляет метки Kubernetes к экземплярам группы управляемых узлов. Эти ярлыки, предоставляемые Amazon EKS, имеют префикс eks.amazonaws.com.

Amazon EKS автоматически освобождает узлы с помощью API Kubernetes во время завершения или обновления.

Бюджеты на сбои в подах не учитываются при отключении узла с помощью AZRebalance или уменьшении желаемого количества узлов. Эти действия пытаются вытеснить модули на узле, но если это занимает более 15 минут, узел завершается независимо от того, завершены ли все модули на узле. Чтобы продлить период до прекращения работы узла, добавьте обработчик жизненного цикла в группу Auto Scaling. Дополнительные сведения см. в разделе Добавление перехватчиков жизненного цикла в Руководстве пользователя по автоматическому масштабированию Amazon EC2.

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

Использование групп управляемых узлов Amazon EKS не требует дополнительных затрат. Вы платите только за предоставленные ресурсы AWS.

Если вы хотите зашифровать тома Amazon EBS для своих узлов, вы можете развернуть узлы с помощью шаблона запуска. Чтобы развернуть управляемые узлы с зашифрованными томами Amazon EBS без использования шаблона запуска, зашифруйте все новые тома Amazon EBS, созданные в вашей учетной записи. Дополнительные сведения см. в разделе Шифрование по умолчанию в Руководстве пользователя Amazon EC2 для инстансов Linux.

Типы емкости группы управляемых узлов

При создании группы управляемых узлов вы можете выбрать тип емкости On-Demand или Spot. Amazon EKS развертывает группу управляемых узлов с группой автоматического масштабирования Amazon EC2, которая содержит либо только инстансы по запросу, либо только спотовые инстансы Amazon EC2. Вы можете запланировать pod для отказоустойчивых приложений в группах управляемых узлов Spot, а отказоустойчивые приложения — в группах узлов On-Demand в одном кластере Kubernetes. По умолчанию группа управляемых узлов развертывает инстансы Amazon EC2 по требованию.

On-demand

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

Как это работает

По умолчанию, если вы не укажете тип емкости, группе управляемых узлов предоставляются экземпляры по требованию. Группа управляемых узлов настраивает группу автоматического масштабирования Amazon EC2 от вашего имени со следующими параметрами:

Стратегия распределения для предоставления емкости по требованию настроена на приоритет. Группы управляемых узлов используют порядок типов экземпляров, передаваемых в API, чтобы определить, какой тип экземпляра следует использовать первым при заполнении емкости по требованию. Например, вы можете указать три типа экземпляров в следующем порядке: c5.large, c4.large и c3.large. Когда ваши инстансы по требованию запускаются, группа управляемых узлов заполняет емкость по требованию, начиная с c5.large, затем c4.large и затем c3.large. Дополнительные сведения см. в группе Amazon EC2 Auto Scaling в Руководстве пользователя Amazon EC2 Auto Scaling.

Amazon EKS добавляет ко всем узлам в вашей группе управляемых узлов следующую метку Kubernetes, указывающую тип емкости: eks.amazonaws.com/capacityType: ON_DEMAND. Вы можете использовать эту метку для планирования приложений с отслеживанием состояния или отказоустойчивых приложений на узлах по требованию.

Spot

Спотовые инстансы Amazon EC2 — это свободная емкость Amazon EC2, которая предлагает большие скидки по сравнению с ценами на инстансы по запросу. Спотовые инстансы Amazon EC2 могут быть прерваны с двухминутным уведомлением о прерывании, когда EC2 потребуется резервная емкость. Дополнительные сведения см. в разделе «Спотовые инстансы» Руководства пользователя Amazon EC2 для инстансов Linux. Вы можете настроить группу управляемых узлов со спотовыми инстансами Amazon EC2, чтобы оптимизировать затраты на вычислительные узлы, работающие в вашем кластере Amazon EKS.

Как это работает

Чтобы использовать спотовые инстансы внутри группы управляемых узлов, создайте группу управляемых узлов, задав тип емкости как спот. Группа управляемых узлов настраивает группу Amazon EC2 Auto Scaling от вашего имени с применением следующих передовых практик для спотов:

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

Включена перебалансировка спотовой емкости Amazon EC2, чтобы Amazon EKS мог изящно истощать и перебалансировать ваши спотовые узлы, чтобы свести к минимуму сбои в работе приложений, когда спотовый узел подвергается повышенному риску прерывания. Дополнительную информацию см. в разделе Перебалансировка ресурсов Amazon EC2 Auto Scaling в Руководстве пользователя Amazon EC2 Auto Scaling.

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

Когда замещающий спотовый узел загружается и находится в состоянии «Готово» в Kubernetes, Amazon EKS блокирует и истощает спотовый узел, получивший рекомендацию по повторной балансировке. Оцепление спотового узла гарантирует, что контроллер служб не отправит никаких новых запросов на этот спотовый узел. Он также удаляет его из списка исправных активных узлов Spot. Опорожнение узла Spot гарантирует, что запущенные модули будут корректно вытеснены.

Если спотовое уведомление о прерывании за две минуты поступает до того, как заменяющий спотовый узел перейдет в состояние «Готово», Amazon EKS начнет истощать спотовый узел, получивший рекомендацию по повторной балансировке.

Amazon EKS добавляет ко всем узлам в вашей группе управляемых узлов следующую метку Kubernetes, указывающую тип емкости: eks.amazonaws.com/capacityType: SPOT. Эту метку можно использовать для планирования отказоустойчивых приложений на спотовых узлах.

Рекомендации по выбору типа размера

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

Спотовые инстансы хорошо подходят для отказоустойчивых и гибких приложений без сохранения состояния. К ним относятся учебные рабочие нагрузки пакетного и машинного обучения, ETL для больших данных, такие как Apache Spark, приложения для обработки очередей и конечные точки API без сохранения состояния. Поскольку спотовые ресурсы — это запасные ресурсы Amazon EC2, которые могут меняться со временем, мы рекомендуем использовать спотовые ресурсы для рабочих нагрузок, устойчивых к сбоям. В частности, спотовая емкость подходит для рабочих нагрузок, которые могут выдерживать периоды, когда требуемая емкость недоступна.

Мы рекомендуем использовать On-Demand для приложений, неустойчивых к сбоям. Сюда входят инструменты управления кластером, такие как инструменты мониторинга и эксплуатации, развертывания, которые