В предыдущей статье я представил плагин устройства и оператор графического процессора, чтобы разоблачить базовую ускоренную инфраструктуру для рабочих нагрузок Kubernetes. В этой статье я представлю появляющуюся функцию Kubernetes под названием Dynamic Resource Allocation (DRA), которая обеспечивает эффективную оркестровку GPU.
Традиционное управление ресурсами Kubernetes было разработано вокруг простых счетных ресурсов, таких как процессор и память. Эта модель хорошо работала для общих вычислений, но боролась со специализированным оборудованием, таким как графические процессоры и специально построенные ускорители ИИ.
Структура плагина устройства, представленная в Kubernetes 1.8, была предпринята для решения этого пробела, но пострадала от фундаментальных архитектурных ограничений. Плагины устройства могут сообщать только о количестве доступных устройств без какой -либо информации о их конкретных атрибутах или возможностях. Каждое устройство было полностью выделено на один контейнер без возможности обмена или дробного распределения.
Ограничения архитектуры плагинов устройства
Структура плагина устройства в Kubernetes страдает от нескольких архитектурных ограничений, которые препятствуют эффективному использованию и управлению аппаратным обеспечением. Его целочисленная модель ресурсов рассматривает устройства как обезболивающие подсчеты, что не может отражать различия в моделях GPU, размерах памяти или атрибутах производительности.
Это заставляет операторов полагаться на метки узлов и узловые элементы, создавая хрупкую связь инфраструктуры и сложность эксплуатации. Структура также запрещает совместное использование устройств, что означает, что один контейнер может монополизировать высококачественный графический процессор, даже если он использует только часть своего мощности, что приводит к широко распространенному недостаточным использованию.
Кроме того, ему не хватает параметризации, предотвращая динамическую настройку рабочих нагрузок с настройками с такими настройками, как профили графических процессоров (MIG), или ограничения мощности, делая расширенные конфигурации, специфичные для поставщика и непонятные.
Планировщик работает слепо, без осознания топологии устройства или ресурсов для общеобразований, что приводит к неэффективным решениям размещения, которые снижают производительность для распределенных рабочих нагрузок. Мониторинг здоровья является элементарным, часто оставляя стручки, застрявшие на неудачных устройствах, если только внешние контроллеры не вмешаются. Наконец, плагины устройства обычно работают как привилегированные Daemonsets с обширным доступом к хосту, создавая серьезные риски безопасности.
Вместе эти недостатки раскрывают фундаментальное смещение между упрощенным дизайном структуры и сложным, гетерогенным характером современных ускорителей, устройств хранения и сетевых интерфейсов, что делает его недостаточным для рабочих нагрузок в следующем поколении.
Понимание архитектуры DRA
Архитектура DRA представляет собой полную редизайн того, как Kubernetes управляет специализированными ресурсами. По своей сути, DRA представляет несколько новых объектов API в группе API Resource.k8s.io, которые работают вместе, чтобы обеспечить динамическое распределение.
Ресурс Объекты описывают запросы на конкретные ресурсы с подробными требованиями, выраженными с помощью фильтров общего языка выражения (CEL). Претензия может запросить графический процессор с не менее 16 ГБ памяти и конкретными возможностями вычислений. Эти претензии могут быть созданы вручную для общих ресурсов или создавать автоматически на капсулу ResourceCeclaimtemplatesПолем Жизненный цикл ресурса отслеживает весь процесс распределения от начального запроса посредством привязки к возможной очистке.
DeviceClass Объекты определяют категории устройств с критериями выбора, которые администраторы платформы создают при установке драйверов DRA. Эти классы используют выражения CEL для фильтрации устройств на основе их атрибутов. DeviceClass для высокопроизводительных вычислений или запуска рабочих нагрузок ИИ может выбрать только графические процессоры с конкретными конфигурациями памяти и вычисления архитектуры. Структурированные параметры в объектах DeviceClass позволяют планировщику понимать требования устройства без непрозрачных конфигураций, специфичных для поставщика.
Resourceslice Объекты публикуются DRA Drivers для рекламы доступных ресурсов на каждом узле. Эти срезы содержат подробные атрибуты устройства, включая емкость памяти, версии архитектуры и возможности для конкретных поставщиков. Планировщик использует эту информацию, чтобы соответствовать требованиям POD с доступными ресурсами. В отличие от статической отчетности плагинов устройства, ресурсы предоставляют динамические обновления в качестве изменения доступности устройства.
Сдвиг парадигмы, вдохновленная хранением
Чтобы учесть глубокие ограничения плагина Device Framework, Kubernetes представил динамическое распределение ресурсов. DRA представляет собой фундаментальный сдвиг парадигмы в том, как управляется специализированное оборудование, черпает вдохновение из зрелой и понятной модели для динамического обеспечения хранения с использованием Persistentvolumes (PVS) и PersistentVolumeclaims (PVC).
Эта аналогия обеспечивает мощную ментальную модель для инженеров. DeviceClass в DRA аналогично StorageClass, определяя тип доступного ресурса. Ресурс, аналогичный ПВХ, представляющий запрос пользователя на экземпляр этого ресурса. Этот подход отделяет запрос на ресурс из ее базовой реализации, обеспечивая огромную гибкость.
Следующая таблица сравнивает ключевые компоненты DRA с их аналогами хранения и идентифицирует первичные персонажи пользователей, связанные с каждым.
Концепция динамического распределения ресурсов (DRA) повлияло на примитивы DRA Persona Storage Hore Horage, повлиявшие на хранение, определяет «тип» или «класс» доступного ресурса DeviceClass Cluster Admin, владелец устройства StorageClass Admin, специалист по хранилищу запрос пользователя для ресурса ресурса для ресурса, Resourceculathemptrate Orperator Presermator. Cluster Resourceslice DRA Driver Driver (владелец устройства) PersistentVolume (PV) Cluster Admin, специалист по хранению, как DRA преобразует Рабочие процессы распределения ресурсов
Технический рабочий процесс DRA демонстрирует свои преимущества по сравнению с традиционными подходами. Когда пользователь создает POD с требованиями к ресурсам, планировщик немедленно начинает анализировать эти претензии через плагин DynamicResources. Планировщик запрашивает ресурсы по всему кластеру для идентификации устройств, соответствующих критериям выбора CEL. Сложные выражения могут одновременно оценивать множество атрибутов, такие как требование как минимальной памяти, так и конкретных архитектурных функций.
После определения подходящих устройств планировщик выбирает оптимальную комбинацию узла и устройства на основе общих целей оптимизации кластера. Детали распределения записываются непосредственно в статус ресурса, что устраняет необходимость вовлечения внешнего драйвера в решениях планирования. Этот подход позволяет планировщику обрабатывать распределение ресурсов для нескольких стручков параллельно, значительно улучшая пропускную способность по сравнению с плагинами устройства.
После того, как стручок связан с узлом, менеджер DRA Kubelet берет на себя локальное управление ресурсами. Он вызывает метод nodeprepreresources grpc в соответствующем плагине драйвера DRA. Драйвер готовит аппаратное устройство и генерирует спецификации интерфейса устройства контейнера, которые настраивают доступ к контейнеру к ресурсам. Когда POD заканчивается, Kubelet вызывает Nodeunprepreresources для очистки и выпуска ресурсов для будущих распределений.
Драйверы DRA следуют двухкомпонентной архитектуре, которая разделяет операции управления плоскости и уровня узлов. Компонент контроллера работает центрально и управляет созданием и обновлениями ресурсов. Он наблюдает за изменениями ресурсов и обрабатывает управление жизненным циклом ресурсов. Компонент плагина Kubelet работает на каждом узле в виде Daemonset и реализует интерфейс GRPC для подготовки устройства и очистки. Это разделение обеспечивает лучшую масштабируемость и более чистые архитектурные границы, чем подход плагина монолитного устройства.
Текущие ограничения и будущая траектория
DRA в настоящее время находится в статусе бета -версии с несколькими воротами функций, контролирующих различные возможности. Особенность Core DynamicResourceallocation Feature Gate был доступен с Kubernetes 1.32. Дополнительные альфа -функции включают в себя устройства, подходящие для динамической реконфигурации, увлечения устройствами и переносимость для административного управления, и приоритетные списки для выбора резервного устройства. Эти функции подвергаются активной разработке и тестированию при подготовке к общему освобождению доступности.
Несколько технических проблем остаются для полной созревания DRA. Сетевые ресурсы, которые не видны до приложения, требуют дополнительной разработки. Сложность реализации драйверов DRA выше, чем у традиционных плагинов устройства, создавая кривую обучения для поставщиков. Объекты Resourceslice могут столкнуться с проблемами масштабирования с обширными запасами устройств. Сообщество активно учитывает эти ограничения посредством расширенного тестирования и оптимизации производительности.
Только что выпущенный Kubernetes 1.34 включает в себя несколько важных улучшений. Расширенный ресурсный мост DRA обеспечит бесшовную миграцию из существующих плагинов устройства. Условия привязки устройства обеспечат проверки готовности на основе приоритетов. Особенности расходной пропускной способности позволят более сложным моделям обмена. Настоящий мониторинг здоровья будет интегрировать состояние устройства непосредственно в модель ресурса Kubernetes.
Переход на Дра
Организации должны начать оценивать DRA для своих специализированных требований к рабочей нагрузке. Команды платформы, управляющие рабочим нагрузкой ИИ и машинного обучения (ML), будут иметь немедленные преимущества обмена графическими процессорами и возможностей динамического распределения. Высокопроизводительные вычислительные среды могут использовать DRA для сложных требований к топологии и зависимостей для перекрестных устройств. Развертывания виртуализации сетевых функций могут использовать DRA для сложного управления сетевыми ресурсами.
Миграция от плагинов устройства в DRA требует тщательного планирования, но предлагает значительные долгосрочные выгоды. Организации должны создать среда тестирования с функциями DRA Beta, чтобы получить эксплуатационный опыт. Команды разработчиков нуждаются в обучении по структурированной модели параметров и выбору устройств на основе CEL. Отношения поставщиков должны быть оценены, чтобы обеспечить доступность драйвера DRA для критических аппаратных ресурсов.
Динамическое распределение ресурсов представляет собой будущее специализированного управления оборудованием в Kubernetes. Технология рассматривает фундаментальные ограничения, которые в течение многих лет ограничивали использование ресурсов и гибкость рабочей нагрузки. Благодаря сильной поддержке экосистемы и четким пути к общей доступности, DRA позиционирует, чтобы стать стандартным подходом для управления графическими процессорами, ускорителей и других специализированных ресурсов в облачных местах. Организации, которые начинают планирование усыновления, теперь будут хорошо расположены для использования этих возможностей по мере их появления к готовности к производству.
Trending Stories youtube.com/thenewstack Tech движется быстро, не пропустите эпизод. Подпишитесь на наш канал YouTube, чтобы транслировать все наши подкасты, интервью, демонстрации и многое другое. Группа подпишитесь с эскизом. Janakiram MSV является основным аналитиком в Janakiram & Associates и адъюнкт -преподавателем Международного института информационных технологий. Он также является квалифицированным Google Cloud Developer, сертифицированным архитектором решений Amazon, сертифицированным разработчиком Amazon, … Подробнее от Janakiram MSV