Добавление пользовательских устройств с использованием ConfigMap

Содержание

Введение

  • Реализует стандартизированное определение и управление пользовательскими ресурсами Kubernetes через ConfigMap, решая задачи:
  • Унифицированное управление спецификациями пользовательских ресурсов для предотвращения фрагментации конфигураций
  • Стандартизированный формат определения ресурсов для лучшей поддерживаемости
  • Поддержка многоязычных описаний и настройка значений по умолчанию
  • Подходит для сценариев, требующих расширения модели ресурсов Kubernetes (например, управление GPU-ресурсами), предоставляя стандартизированную структуру определения ресурсов

Особенности

  • Спецификация определения ресурса с одним ключом
  • Определение ресурсов с несколькими связанными ключами
  • Стандартизированный интерфейс запроса ресурсов
  • Поддержка двуязычных описаний на китайском и английском языках
  • Механизм настройки значений ресурсов по умолчанию

Преимущества

  • Расширяемость: управление группами ресурсов через метки
  • Безопасность: изоляция по namespace (kube-public)
  • Стабильность: принудительное соблюдение правил валидации формата
  • Поддерживаемость: унифицированные спецификации меток метаданных

Функциональный модуль 1: Спецификации создания ConfigMap

Основные правила

  1. Принцип единственной ответственности: один ConfigMap на определение ключа

  2. Namespace: фиксирован на namespace=kube-public

  3. Правила именования:

    cf-crl-{customName}-{keyName} 
    • cf-crl: фиксированный префикс
    • customName: пользовательское валидное имя
    • keyName: идентификатор ключа (специальные символы заменяются на '-')
  4. Требования к меткам:

    labels:
      features.alauda.io/type: CustomResourceLimitation  # фиксированное значение
      features.alauda.io/group: {resource-group}         # например, gpu-manager
      features.alauda.io/enabled: "true"                 # флаг активации

Спецификация параметров

ПараметрОбязательныйОписание
формат имениДаСоответствует cf-crl-{customName}-{keyName}
namespaceДаФиксирован как kube-public
группа метокДаДолжна содержать указанные 3 метки features

Функциональный модуль 2: Определение значений ресурсов

Пример с одним ключом

apiVersion: v1
kind: ConfigMap
metadata:
  name: cf-crl-gpu-manager-vcuda-core
  namespace: kube-public
  labels:
    features.alauda.io/type: CustomResourceLimitation
    features.alauda.io/group: gpu-manager
    features.alauda.io/enabled: "true"
data:
  key: "tencent.com/vcuda-core"       # Ключ ресурса
  dataType: "integer"                  # Тип значения
  defaultValue: "20"                   # Значение по умолчанию
  descriptionZh: ""                    # Описание на китайском
  descriptionEn: "GPU vcore count, 100 virtual cores equal 1 physical GPU core" # Описание на английском
  group: "gpu-manager"                 # Группа ресурса
  limits: "optional"                   # Политика поля limits
  requests: "disabled"                 # Политика поля requests

Ассоциация с несколькими ключами

metadata:
  name: cf-crl-gpu-manager-vcuda-core
  labels: [same group labels]

metadata:
  name: cf-crl-gpu-manager-vcuda-memory
  labels: [same group labels]  # Ассоциация через одинаковые метки

Спецификация политики

ПолеДопустимые значенияОписание
limitsdisabled/required/optionalКонфигурация ограничений ресурса
requestsdisabled/required/fromLimitsКонфигурация запросов ресурса