Настройка нескольких узлов и включение масштабирования до нуля с помощью AKS
Служба Azure Kubernetes позволяет создавать разные пулы узлов для сопоставления определенных рабочих нагрузок с узлами, работающими в каждом пуле узлов. Процесс сопоставления рабочих нагрузок с узлами позволяет планировать использование и оптимизировать затраты.
Решение отслеживания дронов вашей компании развертывается в Службе Azure Kubernetes (AKS) как много контейнерных приложений и служб. Ваша команда разработала новую службу прогнозного моделирования, которая обрабатывает сведения о пути полета в экстремальных погодных условиях и создает оптимальные маршруты полета. Эта служба требует поддержки виртуальной машины на основе GPU и работает только в определенные дни в течение недели.
Вы хотите настроить пул узлов кластера, выделенный для обработки информации о маршруте полета. Процесс выполняется всего несколько часов в день, и вы хотите использовать пул узлов на основе GPU. Однако вы хотите платить за узлы только при их использовании.
Давайте рассмотрим, как работают пулы узлов и как AKS использует узлы, а затем — как увеличить количество узлов в пуле узлов.
Что такое пул узлов?
Пул узлов описывает группу узлов с той же конфигурацией в кластере AKS. Эти узлы содержат базовые виртуальные машины, запускающие приложения. Вы можете создать два типа пулов узлов в кластере Kubernetes под управлением AKS:
Системные пулы узлов
Пулы узлов для пользователей
Пулы системных узлов
Пулы системных узлов размещают критически важные системные pod, составляющие контрольную плоскость вашего кластера. Пул системных узлов позволяет использовать Linux только в качестве ОС узла и выполняет только рабочие нагрузки на основе Linux. Узлы в пуле системных узлов зарезервированы для системных рабочих нагрузок и обычно не используются для выполнения пользовательских рабочих нагрузок. Каждый кластер AKS должен содержать по крайней мере один системный пул узлов с по крайней мере одним узлом, и необходимо определить базовые размеры виртуальных машин для узлов.
Пулы узлов пользователей
Пулы узлов пользователей поддерживают рабочие нагрузки, и вы можете указать Windows или Linux в качестве операционной системы узла. Вы также можете определить базовые размеры виртуальных машин для узлов и запустить определенные рабочие нагрузки. Например, решение для отслеживания дронов имеет службу пакетной обработки, развернутую в пуле узлов с конфигурацией для виртуальных машин общего назначения. Для новой службы прогнозного моделирования требуется более высокая емкость виртуальных машин на основе GPU. Вы решили настроить отдельный пул узлов и настроить его для использования узлов с поддержкой GPU.
Количество узлов в пуле узлов
В пуле узлов можно настроить до 100 узлов. Однако количество узлов, которые нужно настроить, зависит от количества модулей pod, выполняемых на каждом узле.
Например, в пуле системных узлов необходимо установить максимальное количество pod'ов на одном узле равным 30. Это значение гарантирует, что достаточно места для запуска системных модулей pod, критически важных для работоспособности кластера. Если число подов превышает это минимальное значение, в пуле требуются новые узлы для размещения дополнительных рабочих нагрузок. По этой причине пул системных узлов должен иметь как минимум один узел в пуле. Для рабочих сред рекомендуемое число узлов для пула системных узлов составляет не менее трех узлов.
Пользовательские пулы узлов предназначены для выполнения индивидуальных рабочих нагрузок и для них отсутствует требование наличия 30 pod. Пулы узлов пользователей позволяют задать количество узлов для пула равным нулю.
Управление спросом на приложение в кластере AKS
В AKS, когда вы увеличиваете или уменьшаете объем вычислительных ресурсов в кластере Kubernetes, вы масштабируете. Можно масштабировать либо количество экземпляров рабочей нагрузки, которые необходимо запустить, либо число узлов, на которых они выполняются. Масштабировать кластер, управляемый AKS, можно двумя способами. Первым вариантом является масштабирование модулей или узлов вручную. Второй вариант — это автоматизация, при которой можно использовать горизонтальное автомасштабирование pod для масштабирования pod и автомасштабирование кластера для масштабирования узлов.
Масштабирование пула узлов вручную
Если вы выполняете рабочие нагрузки, которые выполняются в течение определенной длительности с определенными известными интервалами, масштабирование размера пула узлов вручную является хорошим способом управления затратами на узел.
Предположим, что для службы прогнозного моделирования требуется пул узлов на основе GPU, и она выполняется каждый день в полдень в течение часа. Пул узлов можно настроить с определенными узлами на основе GPU и масштабировать пул узлов до нуля, если вы не используете кластер.
Ниже приведен пример команды az aks node pool add
, которую можно использовать для создания пула узлов. Обратите внимание на параметр --node-vm-size
, указывающий размер виртуальной машины на основе GPU Standard_NC6
для узлов в пуле.
az aks nodepool add \
--resource-group resourceGroup \
--cluster-name aksCluster \
--name gpunodepool \
--node-count 1 \
--node-vm-size Standard_NC6 \
--no-wait
Когда пул готов, можно использовать команду az aks nodepool scale
для масштабирования пула узлов до нуля. Обратите внимание, что параметр --node-count
имеет значение нулю. Ниже приведен пример команды:
az aks nodepool scale \
--resource-group resourceGroup \
--cluster-name aksCluster \
--name gpunodepool \
--node-count 0
Автоматическое масштабирование кластера
AKS использует автомасштабирование кластера Kubernetes для автоматического масштабирования рабочих нагрузок. Кластер может масштабироваться с помощью двух вариантов:
Автомасштабирование горизонтального модуля pod
Автомасштабирование кластера
Рассмотрим каждый вариант, начиная с горизонтального автомасштабирования pod.
Горизонтальный автомасштабировщик pod
Используйте горизонтальный под-автомасштабировщик Kubernetes для отслеживания спроса на ресурсы в кластере и автоматического масштабирования количества реплик рабочей нагрузки.
Сервер метрик Kubernetes собирает метрики памяти и процессора из контроллеров, узлов и контейнеров, работающих в кластере AKS. Один из способов доступа к этой информации — использовать API метрик. Горизонтальное автомасштабирование pod проверяет API метрик каждые 30 секунд, чтобы решить, требуется ли приложению больше экземпляров для удовлетворения требуемого спроса.
Предположим, что у вашей компании также есть служба пакетной обработки, которая планирует маршруты полета дронов. Вы замечаете, что служба завалена запросами и накапливает невыполненные заказы, что приводит к задержкам и разочарованиям клиентов. Увеличение количества реплик службы пакетной обработки может обеспечить своевременную обработку заказов.
Чтобы решить проблему, вы настроите горизонтальное автомасштабирование pod, чтобы увеличить количество реплик служб при необходимости. При уменьшении количества пакетных запросов уменьшается число реплик служб.
Однако горизонтальный модуль автомасштабирования pod масштабирует модули pod только на доступных узлах в настроенных пулах узлов кластера.
Автомасштабирование кластера
Ограничение ресурсов активируется, когда горизонтальное автомасштабирование не может запланировать другой модуль на существующих узлах в пуле узлов. Чтобы масштабировать количество узлов в пулах узлов кластера во время ограничений, необходимо использовать автомасштабирование кластера. Средство автомасштабирования кластера проверяет определенные метрики и масштабирует количество узлов вверх или вниз на основе необходимых вычислительных ресурсов.
Автомасштабирование кластера используется вместе с горизонтальным автомасштабированием подов.
Средство автомасштабирования кластера отслеживает события увеличения масштаба и уменьшения масштаба и позволяет кластеру Kubernetes изменять количество узлов в пуле узлов по мере изменения требований к ресурсам.
Вы настраиваете каждый пул узлов с различными правилами масштабирования. Например, может потребоваться настроить только один пул узлов, чтобы разрешить автомасштабирование, или можно настроить пул узлов для масштабирования только до определенного количества узлов.
Важный
При включении автомасштабирования кластера в пуле узлов вы теряете возможность масштабирования узлов до нуля. Вместо этого можно установить минимальное количество равным нулю для экономии ресурсов кластера.