Node-feature-discovery#
Node-feature-discovery (NFD) – инструмент, предназначенный для обнаружения аппаратных и системных характеристик узлов кластера. Он автоматически определяет особенности оборудования (например, наличие GPU, поддержку конкретных инструкций CPU, тип NIC) и конфигурации системы, а затем добавляет эту информацию в виде меток на узлы DropApp.
Основные задачи и возможности
Автоматические метки узлов:
На основе обнаруженных признаков (например,
feature.node.kubernetes.io/cpu-cpuid.AESNI=true) NFD расставляет метки, которые можно использовать вnodeSelectorилиaffinityдля целевого размещения pod.Поддержка пользовательских правил обнаружения:
Позволяет определять собственные правила через CRD (
NodeFeatureRule,NodeFeatureGroup), чтобы выявлять особенности среды.Работа с различными типами особенностей:
Может обнаруживать:
Характеристики CPU (SSE, AVX, AMD SEV и др.);
Наличие GPU, FPGA;
Сетевые возможности (SR-IOV, RDMA);
Операционную систему и ядро.
Интеграция с workload:
Упрощает запуск приложений, требующих определенного оборудования («железа»), например, HPC, ML, телеком, за счет точного соответствия между требованиями pod и возможностями узла.
Гибкая архитектура:
Состоит из master- и worker-компонентов, легко масштабируется и работает в любом окружении — bare metal, виртуализация, облако.
Примечание
Node-feature-discovery устанавливается по умолчанию с компонентом Node-management.
Конфигурация values#
Параметры Node-feature-discovery можно переопределить через редактирование нужных значений в spec.values. Общее описание конфигурации values для инструментов приведено в разделе «Конфигурации инструментов дополнительных компонентов».
nameOverride - переопределение имени релиза#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Пользовательское имя для переопределения стандартных имен ресурсов Helm |
|
|
Полное переопределенное имя ресурсов с фиксированным префиксом |
|
|
Пространство имен Kubernetes для установки объектов чарта |
|
featureGates - включение/отключение экспериментальных возможностей#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Флаг для включения NodeFeatureGroup API ; |
|
priorityClassName - приоритет pod master/worker/gc#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Имя класса приоритета ( |
|
|
Включение очистки объектов, созданных чартом, после удаления релиза; |
|
master - настройки компонента nfd-master#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Включение развертывания |
|
|
Дополнительные аргументы командной строки для контейнера master |
|
|
Дополнительные переменные окружения для pod master |
|
|
Использование сети хоста: |
|
|
Политика DNS ( |
|
|
YAML-конфигурация nfd-master, монтируемая как ConfigMap |
Отсутствует |
|
Порт HTTP/gRPC для запросов worker-агентов |
|
|
Интервал периодической синхронизации feature-меток; значение |
пусто |
|
Список запрещенных пространств имен меток, которые master не может создавать |
|
|
Дополнительные разрешенные пространства имен меток |
|
|
Включение использования |
|
|
Число параллельных запросов к Kubernetes API |
|
|
Дополнительные аннотации для |
|
|
Количество реплик |
|
|
Pod-level |
|
|
Запрет/разрешение повышения привилегий |
|
|
Список |
|
|
Включение режима «только-чтение» для |
|
|
Запуск процесса под учетной записью без прав root; |
|
|
Автоматическое создание |
|
|
Дополнительные аннотации для |
|
|
Имя |
пусто |
|
Количество старых |
пусто |
|
Автоматическое создание RBAC-ресурсов для master |
|
|
Лимит памяти контейнера master; при превышении завершает pod механизмом OOM-killer |
|
|
Запрос CPU для планировщика, гарантирует минимальную долю CPU для master |
|
|
Запрос памяти; влияет на планирование при давлении на память |
|
|
Селектор узлов для размещения master; пустой объект — допускается планирование на любом узле |
|
|
Ключ |
|
|
Оператор сравнения ( |
|
|
Значение |
|
|
Эффект |
|
|
Включение создания |
|
|
Минимальное количество доступных pod master при voluntary-вытеснениях |
|
|
Политика вытеснений неработоспособных pod ( |
|
|
Дополнительные аннотации для PDB master |
|
|
Вес предпочтения узлов |
|
|
Ключ метки узла для |
|
|
Оператор для выбора узлов |
|
|
Список значений метки для узла |
|
|
Количество неудачных попыток |
|
|
Конфигурация |
|
|
Количество неудачных попыток |
|
worker - настройки компонента nfd-worker#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Включение |
|
|
Дополнительные аргументы командной строки для worker |
|
|
Дополнительные переменные окружения в pod worker |
|
|
Использование сети хоста для worker |
|
|
Политика DNS для worker, аналогично master |
|
|
YAML-конфигурация nfd-worker, задающая источники feature-меток |
Отсутствует |
|
Порт HTTP/gRPC сервиса worker |
|
|
Аннотации, добавляемые к |
|
|
Pod-уровневые параметры безопасности ( |
|
|
Флаг запрета повышения привилегий в контейнере worker |
|
|
Список сбрасываемых |
|
|
Включение |
|
|
Запуск worker под учетной записью без прав root |
|
|
Задержка перед началом проверок доступности worker |
|
|
Задержка перед проверками готовности worker |
|
|
Количество неудачных проверок готовности до маркировки pod как |
|
|
Создание |
|
|
Аннотации |
|
|
Имя |
пусто |
|
Количество старых |
пусто |
|
Создание RBAC-ресурсов для worker |
|
|
Разрешение монтирования |
|
|
Лимит памяти worker |
|
|
Запрос CPU для worker |
|
|
Запрос памяти для worker |
|
|
Селектор узлов для |
|
|
Список |
|
|
Аннотации к pod worker |
|
|
Полное описание |
|
|
|
|
|
Стратегия обновления |
|
topologyUpdater - настройки nfd-topology-updater#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
YAML-конфигурация |
Отсутствует |
|
Включение |
|
|
Создание CRD |
|
|
Дополнительные аргументы запуска |
|
|
Дополнительные переменные окружения для |
|
|
Использование hostNetwork для |
|
|
Политика DNS для |
|
|
Создание |
|
|
Аннотации |
|
|
Имя |
пусто |
|
Количество старых |
пусто |
|
Создание RBAC-ресурсов для |
|
|
Порт сервиса |
|
|
Путь к |
пусто |
|
Путь к сокету |
пусто |
|
Интервал обновления |
|
|
Пространство имен, в котором |
|
|
Путь к каталогу состояния Kubelet |
|
|
Pod-уровневый |
|
|
Флаг повышения привилегий контейнера |
|
|
Сбрасываемые |
|
|
Использование |
|
|
UID пользователя, от имени которого запускается процесс; |
|
|
Задержка перед началом проверок доступности |
|
|
Задержка перед проверками готовности |
|
|
Количество неудачных проверок готовности |
|
|
Лимит памяти контейнера |
|
|
Запрос CPU для |
|
|
Запрос памяти для |
|
|
|
|
|
|
|
|
Аннотации к pod |
|
|
Аннотации к объекту |
|
|
|
|
podSetFingerprint - механизм включения fingerprint для набора pod#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Включение механизма |
|
gc - настройки компонента nfd-gc#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Включение |
|
|
Дополнительные аргументы командной строки |
|
|
Дополнительные переменные окружения |
|
|
Использование |
|
|
Количество реплик |
|
|
Политика DNS для pod |
|
|
Создание |
|
|
Аннотации |
|
|
Имя |
пусто |
|
Создание RBAC-ресурсов |
|
|
Интервал запуска сканирования ресурсов |
|
|
Pod-уровневый |
|
|
Задержка до начала проверок доступности |
|
|
Задержка до начала проверок готовности |
|
|
Лимит памяти |
|
|
Запрос CPU |
|
|
Запрос памяти |
|
|
Порт сервиса |
|
|
|
|
|
|
|
|
Аннотации pod |
|
|
Аннотации |
|
|
|
|
|
Включение |
|
|
Минимальное количество доступных pod при voluntary-вытеснениях |
|
|
Политика вытеснения неработоспособных pod |
|
|
Количество старых |
пусто |
prometheus - параметры предоставления метрик NFD#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Включение предоставления (экспорта) метрик Prometheus в компонентах чарта |
|
|
Рекомендуемый интервал опроса метрик Prometheus; |
|
|
Дополнительные метки, добавляемые к ресурсам, связанным с мониторингом |
|