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

Стадия жизненного цикла модуля: General Availability

Instance

Scope: Cluster

  • v1alpha2
  • v1alpha1

Instance описывает полный жизненный цикл сервера в Deckhouse Platform, агрегируя состояние от объектов Machine (инфраструктура) и сервиса Bashible на узле (конфигурация).

  • spec
    объект

    Спецификация Instance, включая ссылки на связанные ресурсы.

    • spec.classReference
      объект

      Ссылка на объект InstanceClass.

      Уникален для каждого модуля cloud-provider-*.

      • spec.classReference.kind
        строка

        Тип объекта (например, OpenStackInstanceClass).

        Тип объекта указан в документации соответствующего модуля облачного провайдера.

      • spec.classReference.name
        строка

        Имя нужного объекта InstanceClass (например, finland-medium).

    • spec.machineRef
      объект

      Ссылка на объект машины облачного провайдера.

      • spec.machineRef.apiVersion
        строка

        Используемая версия API.

      • spec.machineRef.kind
        строка

        Тип объекта.

      • spec.machineRef.name
        строка

        Имя объекта.

      • spec.machineRef.namespace
        строка

        Пространство имён, в котором находится объект.

    • spec.nodeGroupRef
      объект

      Ссылка на NodeGroup, заказавшую этот Instance. Известна до того, как узел вошёл в кластер.

      • spec.nodeGroupRef.name
        строка

        Имя NodeGroup.

    • spec.nodeRef
      объект

      Ссылка на объект узла Kubernetes.

      • spec.nodeRef.name
        строка

        Имя узла.

  • status
    объект

    Последнее наблюдаемое состояние Instance.

    • status.bashibleStatus
      строка

      Агрегированный статус процесса конфигурации bashible.

      Вычисляется из условия BashibleReady.

      Допустимые значения: Error, Unknown, Ready, WaitingApproval

    • status.bootstrapStatus
      объект

      Информация о процессе начальной настройки узла.

      • status.bootstrapStatus.description
        строка

        Описание процесса получения логов начальной настройки узла.

      • status.bootstrapStatus.logsEndpoint
        строка

        HTTP-эндпоинт для получения логов начальной настройки узла.

    • status.conditions
      массив объектов

      Детализированные условия Instance (MachineReady, BashibleReady и т.д.).

      • status.conditions.lastHeartbeatTime
        строка

        Время последнего heartbeat-обновления условия от источника.

      • status.conditions.lastTransitionTime
        строка

        Время последнего перехода условия из одного состояния в другое.

      • status.conditions.message
        строка

        Человекочитаемое сообщение с деталями перехода.

      • status.conditions.observedGeneration
        целочисленный

        Поколение ресурса, наблюдаемое контроллером.

      • status.conditions.reason
        строка

        Обязательный параметр

        Причина последнего перехода условия.

      • status.conditions.severity
        строка

        Серьёзность условия (Error, Warning, Info).

      • status.conditions.status
        строка

        Обязательный параметр

        Статус условия (True, False, Unknown).

      • status.conditions.type
        строка

        Обязательный параметр

        Тип условия (например, MachineReady, BashibleReady).

    • status.machineStatus
      строка

      Агрегированный статус инфраструктурной машины.

      Вычисляется из условия MachineReady.

      Допустимые значения: Progressing, Error, Ready, Blocked, Rebooting

    • status.message
      строка

      Человекочитаемое сообщение с деталями текущего состояния или ошибки.

      В CLI отображается только при использовании флага -o wide при вызове d8 k.

    • status.phase
      строка

      Высокоуровневая фаза жизненного цикла Instance.

      Соответствие: Pending -> Provisioning -> Provisioned -> Running -> Terminating.

      Допустимые значения: Pending, Provisioning, Provisioned, Running, Terminating, Unknown

Описывает независимый от реализации объект эфемерной машины.

  • status
    объект
    • status.bootstrapStatus
      объект

      Информация о процессе начальной настройки узла.

      • status.bootstrapStatus.description
        строка

        Описание процесса получения логов начальной настройки узла.

      • status.bootstrapStatus.logsEndpoint
        строка

        HTTP-эндпоинт для получения логов начальной настройки узла.

    • status.classReference
      объект

      Ссылка на объект InstanceClass. Уникален для каждого модуля cloud-provider-*.

      • status.classReference.kind
        строка

        Тип объекта (например, OpenStackInstanceClass). Тип объекта указан в документации соответствующего модуля облачного провайдера.

        Допустимые значения: OpenStackInstanceClass, GCPInstanceClass, VsphereInstanceClass, AWSInstanceClass, YandexInstanceClass, AzureInstanceClass, VCDInstanceClass, ZvirtInstanceClass, DynamixInstanceClass, HuaweiCloudInstanceClass, DVPInstanceClass

      • status.classReference.name
        строка

        Имя нужного объекта InstanceClass (например, finland-medium).

    • status.currentStatus
      объект

      Текущий статус объекта.

      • status.currentStatus.lastUpdateTime
        строка

        Время последнего обновления статуса.

      • status.currentStatus.phase
        строка

        Фаза состояния машины в текущий момент времени.

    • status.lastOperation
      объект

      Последняя выполненная операция.

      • status.lastOperation.description
        строка

        Описание текущей операции.

      • status.lastOperation.lastUpdateTime
        строка

        Время последнего обновления операции.

      • status.lastOperation.state
        строка

        Состояние операции.

      • status.lastOperation.type
        строка

        Тип операции.

    • status.machineRef
      объект

      Ссылка на объект машины облачного провайдера.

      • status.machineRef.apiVersion
        строка

        Используемая версия API.

      • status.machineRef.kind
        строка

        Тип объекта.

      • status.machineRef.name
        строка

        Имя объекта.

      • status.machineRef.namespace
        строка

        Пространство имён, в котором находится объект.

    • status.nodeRef
      объект

      Ссылка на объект узла Kubernetes.

      • status.nodeRef.name
        строка

        Имя узла.

InstanceTypesCatalog

Scope: Cluster
Version: v1alpha1

Содержит информацию о данных, обнаруженных в облаке.

  • instanceTypes
    массив объектов

    Обязательный параметр

    Список доступных типов виртуальных машин.

    • instanceTypes.cpu
      строка или число

      Обязательный параметр

      Количество vCPU для данного типа виртуальной машины.

      Шаблон: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

    • instanceTypes.memory
      строка или число

      Обязательный параметр

      Объем оперативной памяти для данного типа виртуальной машины.

      Шаблон: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

    • instanceTypes.name
      строка

      Имя типа виртуальной машины.

    • instanceTypes.rootDisk
      строка или число

      Размер корневого диска.

      Шаблон: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

NodeGroup

Short names: ng

Scope: Cluster

  • v1
  • v1alpha2
  • v1alpha1

Описывает runtime-параметры группы узлов.

Пример:

# NodeGroup for cloud nodes in AWS.
apiVersion: deckhouse.io/v1
kind: NodeGroup
metadata:
  name: test
spec:
  nodeType: CloudEphemeral
  cloudInstances:
    zones:
      - eu-west-1a
      - eu-west-1b
    minPerZone: 1
    maxPerZone: 2
    classReference:
      kind: AWSInstanceClass
      name: test
  nodeTemplate:
    labels:
      tier: test
---
# NodeGroup for static nodes on bare metal servers (or VMs).
apiVersion: deckhouse.io/v1
kind: NodeGroup
metadata:
  name: worker
spec:
  nodeType: Static
  • metadata
    объект
    • metadata.name
      строка

      Шаблон: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$

      Максимальная длина: 42

  • spec
    объект

    Обязательный параметр

    • spec.chaos
      объект

      Настройки Chaos Monkey.

      Пример:

      chaos:
        mode: DrainAndDelete
        period: 24h
      
      • spec.chaos.mode
        строка

        Режим работы Chaos Monkey:

        • DrainAndDelete — при срабатывании делает узлу drain, затем удаляет его.
        • Disabled — не трогает данную NodeGroup.

        По умолчанию: Disabled

        Допустимые значения: Disabled, DrainAndDelete

      • spec.chaos.period
        строка

        Интервал времени срабатывания Chaos Monkey.

        Задается в виде строки с указанием часов и минут: 30m, 1h, 2h30m, 24h.

        По умолчанию: 6h

        Шаблон: ^([0-9]+h([0-9]+m)?|[0-9]+m)$

    • spec.cloudInstances
      объект

      Параметры заказа облачных виртуальных машин.

      Внимание. Допустимо использовать только совместно с nodeType: CloudEphemeral.

      • spec.cloudInstances.classReference
        объект

        Обязательный параметр

        Ссылка на объект InstanceClass. Уникален для каждого модуля cloud-provider-*.

        • spec.cloudInstances.classReference.kind
          строка

          Тип объекта InstanceClass (например, OpenStackInstanceClass). Поддерживаемые типы определяются установленными модулями облачных провайдеров и указаны в их документации.

        • spec.cloudInstances.classReference.name
          строка

          Имя нужного InstanceClass-объекта (например, finland-medium).

      • spec.cloudInstances.maxPerZone
        целочисленный

        Обязательный параметр

        Максимальное количество инстансов в зоне. Проставляется как верхняя граница в cluster-autoscaler.

        Допустимые значения: 0 <= X

      • spec.cloudInstances.maxSurgePerZone
        целочисленный

        Количество одновременно создаваемых инстансов при scale-up.

        По умолчанию: 1

        Допустимые значения: 0 <= X

      • spec.cloudInstances.maxUnavailablePerZone
        целочисленный

        Недоступное количество инстансов при RollingUpdate’е.

        По умолчанию: 0

        Допустимые значения: 0 <= X

      • spec.cloudInstances.minPerZone
        целочисленный

        Обязательный параметр

        Минимальное количество инстансов в зоне.

        Проставляется в объект MachineDeployment и в качестве нижней границы в cluster autoscaler.

        Допустимые значения: 0 <= X

      • spec.cloudInstances.priority
        целочисленный

        Приоритет группы узлов.

        При масштабировании кластера cluster autoscaler будет выбирать сначала группы узлов с установленным бОльшим приоритетом. Если существует несколько групп узлов с одинаковым приоритетом, группа будет выбрана из них случайным образом. Скоростью переключения на заказ узлов из групп с меньшим приоритетом можно управлять (подробнее — в разделе «FAQ»).

        Использование приоритетов может быть удобно, например, для предпочтения заказа более дешевых узлов (например, spot-инстансов) перед более дорогими.

      • spec.cloudInstances.quickShutdown
        Параметр устарел
        булевый

        Снижает время drain’а CloudEphemeral-машин до 5 минут.

      • spec.cloudInstances.standby
        строка или число

        Количество резервных (подогретых) узлов в этой NodeGroup во всех зонах.

        Резервный узел — это узел кластера, на котором резервируются ресурсы, доступные в любой момент для масштабирования. Наличие такого узла позволяет cluster autoscaler’у не ждать инициализации узла (которая может занимать несколько минут), а сразу размещать на нем нагрузку.

        Значение может быть абсолютным (например, 2) или процентом желаемых узлов (например, 10%). Если указан процент, абсолютное значение рассчитывается исходя из процента от максимального количества узлов (параметр maxPerZone), округленного в меньшую сторону, но не менее одного.

        Шаблон: ^[0-9]+%?$

      • spec.cloudInstances.standbyHolder
        объект

        Объем резервируемых ресурсов.

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

        • spec.cloudInstances.standbyHolder.notHeldResources
          Параметр устарел
          объект

          Устарело: параметр больше не используется. Используйте параметр overprovisioningRate.

          Резервируемые ресурсы.

          • spec.cloudInstances.standbyHolder.notHeldResources.cpu
            строка или число

            Количество CPU.

            Значение может быть абсолютным (например, 1) или в millicore-формате (например, 1500m).

            Шаблон: ^[0-9]+m?$

          • spec.cloudInstances.standbyHolder.notHeldResources.memory
            строка или число

            Количество памяти.

            Значение может быть абсолютным в байтах (например, 128974848) или в Kubernetes-формате с суффиксами: G, Gi, M, Mi (например, 750Mi).

            Шаблон: ^[0-9]+(\.[0-9]+)?(E|P|T|G|M|K|Ei|Pi|Ti|Gi|Mi|Ki)?$

        • spec.cloudInstances.standbyHolder.overprovisioningRate
          целочисленный

          Процент резервируемых ресурсов, рассчитываемый от ресурсов узла в NodeGroup.

          По умолчанию: 50

          Допустимые значения: 1 <= X <= 80

      • spec.cloudInstances.zones
        массив строк

        Переопределение перечня зон, в которых создаются инстансы.

        Значение по умолчанию зависит от выбранного облачного провайдера и обычно соответствует всем зонам используемого региона.

        Пример:

        zones:
        - Helsinki
        - Espoo
        - Tampere
        
    • spec.cri
      объект

      Параметры container runtime.

      • spec.cri.containerd
        объект

        Параметры работы containerd.

        При настройке этих параметров cri.type должен быть Containerd.

        • spec.cri.containerd.maxConcurrentDownloads
          целочисленный

          Максимальное количество параллельных потоков загрузки для каждой операции pull.

          По умолчанию: 3

      • spec.cri.containerdV2
        объект

        Параметры работы containerd V2.

        При настройке этих параметров cri.type должен быть ContainerdV2.

        При использовании ContainerdV2 будет использоваться CgroupsV2 (обеспечивает улучшенную безопасность и управление ресурсами).

        Для использования ContainerdV2 в качестве container runtime узлы в группе должны соответствовать следующим требованиям:

        • поддержка CgroupsV2;
        • ядро Linux версии 5.8 и новее;
        • systemd версии 244 и новее;
        • поддержка модуля ядра erofs.
        • spec.cri.containerdV2.maxConcurrentDownloads
          целочисленный

          Максимальное количество параллельных потоков загрузки для каждой операции pull.

          По умолчанию: 3

      • spec.cri.docker
        Параметр устарел
        объект

        Параметры настройки Docker.

        • spec.cri.docker.manage
          булевый

          Автоматическое управление версией и параметрами Docker.

          По умолчанию: true

        • spec.cri.docker.maxConcurrentDownloads
          целочисленный

          Максимальное количество потоков одновременного скачивания Docker-образов.

          По умолчанию: 3

      • spec.cri.notManaged
        объект

        Настройки для CRI, установленных на узлах вручную.

        • spec.cri.notManaged.criSocketPath
          строка

          Путь к сокету CRI.

      • spec.cri.type
        строка

        Тип container runtime.

        Если не указан, используется значение параметра defaultCRI ClusterConfiguration.

        Внимание. Поддержка Docker считается устаревшей.

        Внимание. В редакции CSE доступен только containerd v2.

        Допустимые значения: Docker, Containerd, ContainerdV2, NotManaged

    • spec.disruptions
      объект

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

      Пример:

      disruptions:
        approvalMode: Automatic
        automatic:
          drainBeforeApproval: false
          windows:
          - from: '06:00'
            to: '08:00'
            days:
            - Tue
            - Sun
      
      • spec.disruptions.approvalMode
        строка

        Режим выдачи разрешения на disruptive-обновление (обновление, требующее прерывание работы узла):

        • Manual — отключить автоматическую выдачу разрешений на disruptive-обновление. Если потребуется disruptive-обновление, появится специальный алерт. При выборе этого режима не происходит автоматический drain узла. Если требуется drain узла, сделайте это вручную перед установкой аннотации update.node.deckhouse.io/disruption-approved= на ресурс node. Внимание. Для группы узлов master режим выдачи разрешения всегда должен быть Manual, чтобы избежать проблем при выполнении drain узла.
        • Automatic — автоматически выдавать разрешения на disruptive-обновление. При этом возможен автоматический drain узла, управляющийся настройкой drainBeforeApproval.
        • RollingUpdate — в этом режиме будет создан новый узел с обновленными настройками, а старый узел будет удален. Разрешено только для облачных узлов.

        Когда не используется режим RollingUpdate, при обновлении узел освобождается от нагрузки (drain), после чего обновляется (перезагружается) и вводится в работу. Обратите внимание, что в этом случае в кластере должно быть место для размещения нагрузки на время, пока обновляемый узел недоступен. В режиме RollingUpdate узел заменяется на обновленный, то есть на время обновления в кластере появляется дополнительный узел. В облачной инфраструктуре режим RollingUpdate удобен, например, если в кластере нет ресурсов для временного размещения нагрузки с обновляемого узла.

        По умолчанию: Automatic

        Допустимые значения: Manual, Automatic, RollingUpdate

      • spec.disruptions.automatic
        объект

        Дополнительные параметры для режима Automatic.

        • spec.disruptions.automatic.drainBeforeApproval
          булевый

          Выполнение drain подов с узла перед выдачей разрешения на disruption.

          Внимание. Данная настройка игнорируется (узлам будет выдано разрешение без предварительного выполнения drain подов с узлов):

          • для nodeGroup master с единственным узлом;
          • для выделенного под запуск DP узла, если этот узел в группе узлов единственно рабочий (Ready).

          По умолчанию: true

        • spec.disruptions.automatic.windows
          массив объектов

          Список окон disruption-обновлений узлов.

          • spec.disruptions.automatic.windows.days
            массив строк

            Дни недели, в которые применяется окно обновлений.

            Примеры:

            days: Mon
            
            days: Wed
            
            • Элемент массива
              строка

              День недели.

              Допустимые значения: Mon, Tue, Wed, Thu, Fri, Sat, Sun

          • spec.disruptions.automatic.windows.from
            строка

            Обязательный параметр

            Время начала окна обновления (в часовом поясе UTC).

            Шаблон: ^(?:\d|[01]\d|2[0-3]):[0-5]\d$

            Пример:

            from: '13:00'
            
          • spec.disruptions.automatic.windows.to
            строка

            Обязательный параметр

            Время окончания окна обновления (в часовом поясе UTC).

            Шаблон: ^(?:\d|[01]\d|2[0-3]):[0-5]\d$

            Пример:

            to: '18:30'
            
      • spec.disruptions.rollingUpdate
        объект

        Дополнительные параметры для режима RollingUpdate.

        • spec.disruptions.rollingUpdate.windows
          массив объектов

          Список окон disruption-обновлений узлов.

          • spec.disruptions.rollingUpdate.windows.days
            массив строк

            Дни недели, в которые применяется окно обновлений.

            Примеры:

            days: Mon
            
            days: Wed
            
            • Элемент массива
              строка

              День недели.

              Допустимые значения: Mon, Tue, Wed, Thu, Fri, Sat, Sun

          • spec.disruptions.rollingUpdate.windows.from
            строка

            Обязательный параметр

            Время начала окна обновления (в часовом поясе UTC).

            Шаблон: ^(?:\d|[01]\d|2[0-3]):[0-5]\d$

            Пример:

            from: '13:00'
            
          • spec.disruptions.rollingUpdate.windows.to
            строка

            Обязательный параметр

            Время окончания окна обновления (в часовом поясе UTC).

            Шаблон: ^(?:\d|[01]\d|2[0-3]):[0-5]\d$

            Пример:

            to: '18:30'
            
    • spec.fencing
      объект

      Включает fencing-controller для группы узлов.

      • spec.fencing.mode
        строка

        Обязательный параметр

        Устанавливает режим работы fencing-controller.

        Поддерживаемые режимы работы:

        • Watchdog — использует модуль ядра watchdog для автоматической перезагрузки узлов, потерявших связь с кластером. Также в этом режиме fencing-agent отслеживает доступность узлов в кластере.

        При включении fencing скрипт NodeGroupConfiguration загружает модуль ядра softdog с параметром soft_margin, равным значению spec.fencing.watchdog.timeout (по умолчанию 60 секунд), и параметром soft_panic=1.

        Как работает fencing-agent:

        • Агент открывает устройство /dev/watchdog и устанавливает на узле лейбл node-manager.deckhouse.io/fencing-enabled, а также лейбл node-manager.deckhouse.io/fencing-mode со значением Watchdog.
        • Fencing-agent объединяется с агентами той же группы узлов в gossip-кластер (memberlist).
        • Агент регулярно проверяет кворум (доступность большинства узлов группы):
        • если кворума нет (quorum=false), агент выполняет дополнительную проверку доступности Kubernetes API;
        • если кворум есть или Kubernetes API доступен, агент сбрасывает таймер watchdog;
        • если ни кворума, ни доступа к Kubernetes API нет, watchdog перестает сбрасываться, таймер истекает, что приводит к kernel panic.
        • Агент учитывает аннотации обслуживания node-manager.deckhouse.io/fencing-disable, update.node.deckhouse.io/approved и update.node.deckhouse.io/disruption-approved, чтобы временно отключать watchdog на время плановых операций.

        При включённом fencing автоматическая перезагрузка узла после kernel panic отключается на уровне ОС. Это исключает возврат узла с неопределённым состоянием до его корректной обработки (для статических узлов — вручную, для облачных узлов — через cloud-provider-controller).

        Fencing-controller учитывает тип узла (node.deckhouse.io/type) при реакции на сбойный узел:

        • для облачных узлов (CloudEphemeral, CloudPermanent) контроллер удаляет объект Node, после чего cloud-provider-controller пересоздаёт соответствующую виртуальную машину;
        • для статических узлов (Static, CloudStatic) контроллер только вытесняет нагрузку, оставляя объект Node в кластере.

        Подробнее о том, как механизм fencing обрабатывает разные типы узлов, можно почитать в разделе «FAQ».

        Допустимые значения: Watchdog

      • spec.fencing.watchdog
        объект
        • spec.fencing.watchdog.timeout
          строка

          Обязательный параметр

          Длительность таймаута watchdog. Указывается в секундах, минутах или часах.

          По умолчанию: 60s

          Шаблон: ^[0-9]+[smh]{1}$

    • spec.gpu
      объект

      Доступно в редакциях: Ultimate/EE

      Параметры GPU.

      • spec.gpu.exclusive
        объект

        Режим без разделения GPU.

      • spec.gpu.mig
        объект

        Параметры для стратегии MIG.

        • spec.gpu.mig.customConfigs
          массив объектов

          Кастомное разбиение MIG по индексам GPU.

          Используется только при значении partedConfig: custom.

          Представляет собой массив устройств (map по index), где каждый элемент указывает на GPU по его индексу и описывает создаваемые срезы.

          Примеры:

          customConfigs:
            profile: 3g.40gb
            count: 2
          
          customConfigs:
            profile: 1g.10gb.me
            count: 1
          
          • spec.gpu.mig.customConfigs.index
            целочисленный

            Обязательный параметр

            Индекс GPU на узле.

            Допустимые значения: 0 <= X

          • spec.gpu.mig.customConfigs.slices
            массив объектов

            Обязательный параметр

            Список создаваемых MIG-срезов.

            • spec.gpu.mig.customConfigs.slices.count
              целочисленный

              Обязательный параметр

              Количество срезов выбранного профиля.

              По умолчанию: 1

              Допустимые значения: 1 <= X <= 7

            • spec.gpu.mig.customConfigs.slices.profile
              строка

              Обязательный параметр

              Имя MIG-профиля.

              Шаблон: ^[0-9]+g\.[0-9]+gb(\.me)?$

              Примеры:

              profile: 3g.40gb
              
              profile: 1g.10gb
              
              profile: 1g.10gb.me
              
        • spec.gpu.mig.partedConfig
          строка

          Имя используемой конфигурации MIG.

          Поддерживаются стандартные профили вида all-* (одинаковое разбиение для всех GPU) или значение custom, позволяющее задать разбиение отдельно для каждой видеокарты.

          По умолчанию: all-1g.5gb

      • spec.gpu.sharing
        строка

        Стратегия разделения GPU:

        • Exclusive — без разделения (каждый GPU полностью выделяется одному поду).
        • TimeSlicing — разделение GPU по времени (несколько подов могут одновременно использовать один GPU, поочередно получая доступ к его вычислительным ресурсам).
        • MIG — разделение одного GPU на несколько экземпляров (технология NVIDIA MIG, при наличии поддержки).

        Допустимые значения: TimeSlicing, MIG, Exclusive

      • spec.gpu.timeSlicing
        объект

        Параметры для стратегии TimeSlicing.

        • spec.gpu.timeSlicing.partitionCount
          число

          Количество разделов (виртуальных GPU) на один физический GPU.

          По умолчанию: 4

          Допустимые значения: 1 <= X <= 100

    • spec.kubelet
      объект

      Параметры настройки kubelet.

      • spec.kubelet.containerLogMaxFiles
        целочисленный

        Максимальное количество файлов журналов с учетом ротации.

        По умолчанию: 4

        Допустимые значения: 1 <= X <= 20

      • spec.kubelet.containerLogMaxSize
        строка

        Максимальный размер файла журнала до того, как он будет ротирован.

        По умолчанию: 50Mi

        Шаблон: \d+[Ei|Pi|Ti|Gi|Mi|Ki|E|P|T|G|M|k|m]

      • spec.kubelet.maxPods
        целочисленный

        Максимальное количество подов на узлах данной NodeGroup. Если явно не задан, по умолчанию задается в зависимости от значения параметра podSubnetNodeCIDRPrefix ClusterConfiguration:

        • 120 подов для podSubnetNodeCIDRPrefix ≥ 24;
        • 250 подов для podSubnetNodeCIDRPrefix = 23;
        • 500 подов для podSubnetNodeCIDRPrefix = 22;
        • 1000 подов для podSubnetNodeCIDRPrefix ≤ 21.
      • spec.kubelet.memorySwap
        объект

        Конфигурация использования swap-памяти для kubelet.

        • spec.kubelet.memorySwap.limitedSwap
          объект

          Настройки режима ограниченного использования swap. Требуются, если для swapBehavior указано значение LimitedSwap.

          • spec.kubelet.memorySwap.limitedSwap.size
            строка

            Обязательный параметр

            Размер создаваемого swap-файла в ГБ (например, “2G”, “4G”).

            Шаблон: ^\d+G$

            Пример:

            size: 1G
            
        • spec.kubelet.memorySwap.swapBehavior
          строка

          Определяет, как используется swap-память на узле:

          • NoSwap — swap отключен. Это традиционное поведение Kubernetes.
          • LimitedSwap — kubelet может использовать swap-память в пределах, заданных в limitedSwap.size.

          Подробнее об использовании swap-памяти на узлах можно прочитать в документации Kubernetes.

          Допустимые значения: NoSwap, LimitedSwap

        • spec.kubelet.memorySwap.swappiness
          целочисленный

          Определяет склонность ядра к использованию swap.

          • 0 — минимальное использование (только для предотвращения OOM).
          • 60 — сбалансированное поведение по умолчанию.
          • 100 — агрессивное использование.

          Значение устанавливается через параметр sysctl vm.swappiness.

          По умолчанию: 60

          Допустимые значения: 0 <= X <= 100

      • spec.kubelet.resourceReservation
        объект

        Управление резервированием ресурсов для системных служб на узле.

        Больше информации в документации Kubernetes.

        • spec.kubelet.resourceReservation.mode
          строка

          Выбор режима резервирования системных ресурсов:

          • Off — отключение резервирования системных ресурсов.
          • Auto — автоматический подсчет резервирования через алгоритм, основанный на размере узла.
          • Static — указание статических значений через параметр static.

          Обратите внимание, что Deckhouse не использует выделенную cgroup для резервирования ресурсов (флаг -system-reserved-cgroup не используется).

          По умолчанию: Auto

        • spec.kubelet.resourceReservation.static
          объект

          Параметры резервирования ресурсов в режиме Static.

          • spec.kubelet.resourceReservation.static.cpu
            строка или число

            Шаблон: \d+[m]

          • spec.kubelet.resourceReservation.static.ephemeralStorage
            строка или число

            Шаблон: \d+[Ei|Pi|Ti|Gi|Mi|Ki|E|P|T|G|M|k|m]

          • spec.kubelet.resourceReservation.static.memory
            строка или число

            Шаблон: \d+[Ei|Pi|Ti|Gi|Mi|Ki|E|P|T|G|M|k|m]

      • spec.kubelet.rootDir
        строка

        Путь к каталогу для файлов kubelet (volume mounts и т. д.).

        По умолчанию: /var/lib/kubelet

      • spec.kubelet.seccompDefault
        булевый

        Использовать seccomp-профиль RuntimeDefault для workload’ов, где seccomp-профиль не задан явно.

      • spec.kubelet.topologyManager
        объект

        Управление менеджером топологии.

        Менеджер топологии позволяет планировщику Kubernetes учитывать данные о топологии ресурсов при планировании подов.

        В кластере с NUMA-узлами менеджер топологии может повысить производительность приложения, размещая контейнеры пода на том NUMA-узле, который эффективней работает с ресурсами.

        Дополнительная информация в документации Kubernetes.

        • spec.kubelet.topologyManager.enabled
          булевый

          Включение использования менеджера топологий.

          Если менеджер топологий включен, активируются режимы строгого выделения ресурсов для контейнеров подов класса Guaranteed. В настройках kubelet устанавливаются следующие значения параметров:

          • cpuManagerPolicy: static — kubelet эксклюзивно закрепляет целые физические ядра за контейнером с целочисленным запросом CPU;
          • memoryManagerPolicy: Static — kubelet закрепляет память контейнера за минимальным числом NUMA-узлов (предпочтительно одним).

          По умолчанию: false

        • spec.kubelet.topologyManager.policy
          строка

          Определение политики выравнивания ресурсов с учетом топологии узлов при планировании пода.

          Поддерживаются четыре политики:

          • None — выравнивание ресурсов не выполняется (используется по умолчанию).
          • BestEffort — для каждого контейнера определяется предпочтительный NUMA-узел. Если предпочтительные узлы для планирования пода отсутствуют, то новый под будет запланирован на узел без учета данных менеджера топологии, а уже запущенный под продолжит работу.
          • Restricted — для каждого контейнера пода определяется предпочтительный NUMA-узел. Если предпочтительные узлы для планирования пода отсутствуют, то новый под не будет запланирован на узел, а уже запущенный под будет остановлен.
          • SingleNumaNode — для каждого контейнера пода определяется предпочтительный NUMA-узел. Если нет NUMA-узла, предпочтительного для всех контейнеров пода, то новый под не будет запланирован, а уже запущенный под будет остановлен.

          Больше информации читайте в документации Kubernetes.

          По умолчанию: None

          Допустимые значения: None, BestEffort, Restricted, SingleNumaNode

        • spec.kubelet.topologyManager.scope
          строка

          Определение гранулярности выравнивания ресурсов:

          • Container. Вычисление предпочтительных ресурсов выполняется для контейнера. При вычислении не учитывается, что несколько контейнеров относятся к одному поду.
          • Pod. Вычисление предпочтительных ресурсов выполняется для пода. Все контейнеры пода рассматриваются как единое целое при вычислении.

          По умолчанию: Container

          Допустимые значения: Container, Pod

    • spec.nodeDrainTimeoutSecond
      целочисленный

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

      Диапазон тот же, что и раньше проверялся в настройках самого модуля. Значение за его пределами здесь принималось, а при чтении настроек отвергалось, из-за чего переставал работать весь node-manager.

      Допустимые значения: 30 <= X <= 7200

    • spec.nodeTemplate
      объект

      Настройки Node-объектов в Kubernetes, которые будут добавлены после регистрации узла.

      Пример:

      nodeTemplate:
        labels:
          environment: production
          app: warp-drive-ai
        annotations:
          ai.fleet.com/discombobulate: 'true'
        taints:
        - effect: NoExecute
          key: ship-class
          value: frigate
      
      • spec.nodeTemplate.annotations
        объект

        Аналогично стандартному полю metadata.annotations.

        Пример:

        annotations:
          ai.fleet.com/discombobulate: 'true'
        
      • spec.nodeTemplate.labels
        объект

        Аналогично стандартному полю metadata.labels.

        Пример:

        labels:
          environment: production
          app: warp-drive-ai
        
      • spec.nodeTemplate.taints
        массив объектов

        Аналогично полю .spec.taints из объекта Node.

        Доступны только поля effect, key, value.

        Пример:

        taints:
        - effect: NoExecute
          key: ship-class
          value: frigate
        
        • spec.nodeTemplate.taints.effect
          строка

          Допустимые значения: NoSchedule, PreferNoSchedule, NoExecute

        • spec.nodeTemplate.taints.key
          строка
        • spec.nodeTemplate.taints.value
          строка
    • spec.nodeType
      строка

      Обязательный параметр

      Тип узлов, которые представляет эта группа:

      • CloudEphemeral — узлы для этой группы будут автоматически создаваться (и удаляться) в настроенном облачном провайдере;
      • CloudPermanent — узлы этой группы берутся из ProviderClusterConfiguration и создаются/удаляются через dhctl;
      • CloudStatic — узел, созданный вручную или любыми внешними инструментами, размещенный в том же облаке, с которым настроена интеграция у одного из облачных провайдеров. На таком узле работает CSI и такой узел управляется cloud-controller-manager’ом: объект Node автоматически обогащается информацией о зоне и регионе по данным, полученным от облака; при удалении узла из облака, соответствующий ему объект Node будет удален в Kubernetes;
      • Static — статический узел, размещенный на физическом сервере или виртуальной машине. Узел не управляется cloud-controller-manager’ом, даже если включен один из облачных провайдеров.

      Допустимые значения: CloudEphemeral, CloudPermanent, CloudStatic, Static

    • spec.operatingSystem
      объект

      Параметры операционной системы.

      • spec.operatingSystem.manageKernel
        Параметр устарел
        булевый

        Этот параметр не используется. Раньше он включал автоматическое управление ядром операционной системы.

        По умолчанию: true

    • spec.providerType
      строка

      Тип облачного провайдера группы узлов. None или пустое значение — для статической группы узлов.

    • spec.staticInstances
      объект

      Параметры настройки машин статических узлов кластера.

      • spec.staticInstances.count
        целочисленный

        Желаемое количество ресурсов StaticInstance (подпадающих под labelSelector), которые DP автоматически настроит и добавит в кластер.

        В NodeGroup со Static- и CloudStatic-узлами этот параметр задаёт ожидаемое количество узлов. DP использует это значение для контроля состояния и автоматизации.

        Внимание. Этот параметр необходимо задавать явно. Значение по умолчанию — 0, поэтому без изменения этого значения DP не настроит ни один ресурс StaticInstance и не добавит в группу ни одного узла. Чтобы добавить статические узлы, укажите здесь нужное количество (больше 0).

        По умолчанию: 0

        Допустимые значения: 0 <= X

      • spec.staticInstances.labelSelector
        объект

        Настройка фильтра лейблов по ресурсам staticInstances.

        Если указаны одновременно matchExpressions и matchLabels, учитываются оба фильтра (операция И).

        Пустое значение labelSelector соответствует всем объектам. Нулевое — никаким.

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

        • spec.staticInstances.labelSelector.matchExpressions
          массив объектов

          Список фильтров на основе выражений.

          Итоговый результат — результат пересечения множеств, определяемых всеми фильтрами в списке (операция И).

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

          • spec.staticInstances.labelSelector.matchExpressions.key
            строка

            Имя лейбла.

          • spec.staticInstances.labelSelector.matchExpressions.operator
            строка

            Оператор сравнения.

          • spec.staticInstances.labelSelector.matchExpressions.values
            массив строк

            Значение лейбла.

            • Элемент массива
              строка

              Шаблон: [a-z0-9]([-a-z0-9]*[a-z0-9])?

              Длина: 1..63

        • spec.staticInstances.labelSelector.matchLabels
          объект

          Фильтр на основе совпадения/несовпадения лейблов.

    • spec.systemType
      строка

      Способ управления узлом.

      Возможные значения:

      • Mutable — классический узел, настраиваемый «на лету» с помощью bashible. Именно это означает незаполненное поле;
      • Immutable — immutable-узел: агент на узле приводит его в состояние, описанное в объекте NodeConfig; bashible не используется.

      Заданное значение изменить или удалить нельзя. Если значение ещё не задано, его можно указать — но не Immutable, когда в группе уже есть узлы, настроенные bashible: передать такие узлы агенту на узле нельзя.

      Допустимые значения: Mutable, Immutable

    • spec.update
      объект
      • spec.update.maxConcurrent
        строка или число

        Максимальное количество одновременно обновляемых узлов.

        Можно указать число узлов или процент от общего количества узлов в данной группе.

        По умолчанию: 1

        Шаблон: ^[1-9][0-9]*%?$

  • status
    объект
    • status.conditionSummary
      объект
      • status.conditionSummary.ready
        строка

        Готовность группы узлов по сводному состоянию.

        Допустимые значения: True, False

      • status.conditionSummary.statusMessage
        строка

        Сообщение о состоянии обработки группы узлов.

    • status.conditions
      массив объектов
      • status.conditions.lastTransitionTime
        строка

        Время последнего перехода условия из одного состояния в другое.

      • status.conditions.message
        строка

        Человекочитаемое сообщение с подробностями последнего перехода.

      • status.conditions.status
        строка

        Обязательный параметр

        Статус условия: True или False.

      • status.conditions.type
        строка

        Обязательный параметр

        Тип условия группы узлов.

    • status.deckhouse
      объект
      • status.deckhouse.observed
        объект

        Содержит время последнего обнаруженного оператором изменения ресурса и его контрольную сумму.

        • status.deckhouse.observed.checkSum
          строка

          Контрольная сумма последней обнаруженной версии ресурса.

        • status.deckhouse.observed.lastTimestamp
          строка

          Время, когда оператор в последний раз обнаружил изменение ресурса.

      • status.deckhouse.processed
        объект

        Содержит время последнего применения ресурса в кластере оператором и его контрольную сумму.

        • status.deckhouse.processed.checkSum
          строка

          Контрольная сумма последней применённой версии ресурса.

        • status.deckhouse.processed.lastTimestamp
          строка

          Время, когда ресурс был в последний раз применён в кластере.

      • status.deckhouse.synced
        строка

        Указывает, была ли последняя обнаруженная версия ресурса успешно применена в кластере.

    • status.desired
      целочисленный

      Желаемое количество машин в группе.

    • status.engine
      строка

      Фактический механизм управления узлами в этой группе.

      Значение поля определяет, каким компонентом управляются узлы:

      • None — узлы группы не управляются через Machine Controller Manager или CAPI;
      • MCM — узлы группы управляются через Machine Controller Manager;
      • CAPI — узлы группы управляются через Cluster API.

      Допустимые значения: None, MCM, CAPI

    • status.error
      строка

      Сообщение об ошибке при обработке группы узлов.

    • status.instances
      целочисленный

      Количество инстансов в группе в любом состоянии.

    • status.kubernetesVersion
      строка

      Текущая версия Kubernetes на узлах или версия, до которой узлы будут обновлены.

    • status.lastMachineFailures
      массив объектов
      • status.lastMachineFailures.lastOperation
        объект
        • status.lastMachineFailures.lastOperation.description
          строка

          Описание последней операции.

        • status.lastMachineFailures.lastOperation.lastUpdateTime
          строка

          Время последнего обновления статуса операции.

        • status.lastMachineFailures.lastOperation.state
          строка

          Состояние операции с машиной.

        • status.lastMachineFailures.lastOperation.type
          строка

          Тип операции.

      • status.lastMachineFailures.name
        строка

        Имя машины.

      • status.lastMachineFailures.ownerRef
        строка

        Имя владельца машины.

      • status.lastMachineFailures.providerID
        строка

        ProviderID машины.

    • status.max
      целочисленный

      Максимальное количество инстансов в группе.

    • status.min
      целочисленный

      Минимальное количество инстансов в группе.

    • status.nodes
      целочисленный

      Количество Kubernetes-узлов в группе в любом состоянии.

    • status.ready
      целочисленный

      Количество готовых Kubernetes-узлов в группе.

    • status.standby
      целочисленный

      Количество резервных инстансов в группе.

    • status.upToDate
      целочисленный

      Количество узлов в актуальном состоянии.

Описывает runtime-параметры группы узлов.

  • metadata
    объект
    • metadata.name
      строка

      Шаблон: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$

      Максимальная длина: 42

  • spec
    объект

    Обязательный параметр

    • spec.chaos
      объект

      Настройки Chaos Monkey.

      Пример:

      chaos:
        mode: DrainAndDelete
        period: 24h
      
      • spec.chaos.mode
        строка

        Режим работы Chaos Monkey:

        • DrainAndDelete — при срабатывании делает узлу drain, затем удаляет его.
        • Disabled — не трогает данную NodeGroup.

        По умолчанию: Disabled

        Допустимые значения: Disabled, DrainAndDelete

      • spec.chaos.period
        строка

        Интервал времени срабатывания Chaos Monkey.

        Задается в виде строки с указанием часов и минут: 30m, 1h, 2h30m, 24h.

        По умолчанию: 6h

        Шаблон: ^[0-9]+[mh]{1}$

    • spec.cloudInstances
      объект

      Параметры заказа облачных виртуальных машин.

      Внимание. Допустимо использовать только совместно с nodeType: CloudEphemeral.

      • spec.cloudInstances.classReference
        объект

        Обязательный параметр

        Ссылка на объект InstanceClass. Уникален для каждого модуля cloud-provider-*.

        • spec.cloudInstances.classReference.kind
          строка

          Тип объекта InstanceClass (например, OpenStackInstanceClass). Поддерживаемые типы определяются установленными модулями облачных провайдеров и указаны в их документации.

        • spec.cloudInstances.classReference.name
          строка

          Имя нужного InstanceClass-объекта (например, finland-medium).

      • spec.cloudInstances.maxPerZone
        целочисленный

        Обязательный параметр

        Максимальное количество инстансов в зоне.

        Проставляется как верхняя граница в cluster-autoscaler.

        Допустимые значения: 0 <= X

      • spec.cloudInstances.maxSurgePerZone
        целочисленный

        Количество одновременно создаваемых инстансов при scale-up.

        По умолчанию: 1

        Допустимые значения: 0 <= X

      • spec.cloudInstances.maxUnavailablePerZone
        целочисленный

        Недоступное количество инстансов при RollingUpdate’е.

        По умолчанию: 0

        Допустимые значения: 0 <= X

      • spec.cloudInstances.minPerZone
        целочисленный

        Обязательный параметр

        Минимальное количество инстансов в зоне.

        Проставляется в объект MachineDeployment и в качестве нижней границы в cluster autoscaler.

        При значении 0 для некоторых InstanceClass нужно задавать capacity. Более подробно можно узнать в описании нужных InstanceClass.

        Допустимые значения: 0 <= X

      • spec.cloudInstances.standby
        строка или число

        Количество резервных (подогретых) узлов в этой NodeGroup во всех зонах.

        Резервный узел — это узел кластера, на котором резервируются ресурсы, доступные в любой момент для масштабирования. Наличие такого узла позволяет cluster autoscaler’у не ждать инициализации узла (которая может занимать несколько минут), а сразу размещать на нем нагрузку.

        Значение может быть абсолютным (например, 2) или процентом желаемых узлов (например, 10%). Если указан процент, абсолютное значение рассчитывается исходя из процента от максимального количества узлов (параметр maxPerZone), округленного в меньшую сторону, но не менее одного.

        Шаблон: ^[0-9]+%?$

      • spec.cloudInstances.standbyHolder
        объект

        Объем резервируемых ресурсов.

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

        • spec.cloudInstances.standbyHolder.notHeldResources
          объект

          Резервируемые ресурсы.

          • spec.cloudInstances.standbyHolder.notHeldResources.cpu
            строка или число

            Количество CPU.

            Значение может быть абсолютным (например, 1) или в millicore-формате (например, 1500m).

            Шаблон: ^[0-9]+m?$

          • spec.cloudInstances.standbyHolder.notHeldResources.memory
            строка или число

            Количество памяти.

            Значение может быть абсолютным в байтах (например, 128974848) или в Kubernetes-формате с суффиксами: G, Gi, M, Mi (например, 750Mi).

            Шаблон: ^[0-9]+(\.[0-9]+)?(E|P|T|G|M|K|Ei|Pi|Ti|Gi|Mi|Ki)?$

      • spec.cloudInstances.zones
        массив строк

        Переопределение перечня зон, в которых создаются инстансы.

        Значение по умолчанию зависит от выбранного облачного провайдера и обычно соответствует всем зонам используемого региона.

        Пример:

        zones:
        - Helsinki
        - Espoo
        - Tampere
        
    • spec.cri
      объект

      Параметры container runtime.

      • spec.cri.containerd
        объект

        Параметры работы containerd.

        При настройке этих параметров cri.type должен быть Containerd.

        • spec.cri.containerd.maxConcurrentDownloads
          целочисленный

          Максимальное количество параллельных потоков загрузки для каждой операции pull.

          По умолчанию: 3

      • spec.cri.docker
        объект

        Параметры настройки Docker.

        Внимание. Docker считается устаревшим, не используйте его.

        • spec.cri.docker.manage
          булевый

          Автоматическое управление версией и параметрами Docker.

          По умолчанию: true

        • spec.cri.docker.maxConcurrentDownloads
          целочисленный

          Максимальное количество потоков одновременного скачивания Docker-образов.

          По умолчанию: 3

      • spec.cri.notManaged
        объект

        Настройки для CRI, установленных на узлах вручную.

        • spec.cri.notManaged.criSocketPath
          строка

          Путь к сокету CRI.

      • spec.cri.type
        строка

        Тип container runtime.

        Если не указан, используется значение параметра defaultCRI общих параметров кластера (ClusterConfiguration).

        Внимание. Поддержка Docker считается устаревшей.

        Допустимые значения: Docker, Containerd, NotManaged

    • spec.disruptions
      объект

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

      Пример:

      disruptions:
        approvalMode: Automatic
        automatic:
          drainBeforeApproval: false
          windows:
          - from: '06:00'
            to: '08:00'
            days:
            - Tue
            - Sun
      
      • spec.disruptions.approvalMode
        строка

        Режим выдачи разрешения на disruptive-обновление (обновление, требующее прерывание работы узла):

        • Manual — отключить автоматическую выдачу разрешений на disruptive-обновление. Если потребуется disruptive-обновление, загорится специальный алерт. Внимание. Для группы узлов master режим выдачи разрешения всегда должен быть Manual, чтобы избежать проблем при выполнении drain узла.
        • Automatic — автоматически выдавать разрешения на disruptive-обновление.
        • RollingUpdate — в этом режиме будет создан новый узел с обновленными настройками, а старый узел будет удален. Разрешено только для облачных узлов.

        Когда не используется режим RollingUpdate, при обновлении узел освобождается от нагрузки (drain), после чего обновляется (перезагружается) и вводится в работу. Обратите внимание, что в этом случае в кластере должно быть место для размещения нагрузки на время, пока обновляемый узел недоступен. В режиме RollingUpdate узел заменяется на обновленный, то есть на время обновления в кластере появляется дополнительный узел. В облачной инфраструктуре режим RollingUpdate удобен, например, если в кластере нет ресурсов для временного размещения нагрузки с обновляемого узла.

        По умолчанию: Automatic

        Допустимые значения: Manual, Automatic, RollingUpdate

      • spec.disruptions.automatic
        объект

        Дополнительные параметры для режима Automatic.

        • spec.disruptions.automatic.drainBeforeApproval
          булевый

          Выполнение drain подов с узла перед выдачей разрешения на disruption.

          Внимание. Данная настройка игнорируется (узлам будет выдано разрешение без предварительного выполнения drain подов с узлов):

          • для nodeGroup master с единственным узлом;
          • для выделенного под запуск DP узла, если этот узел в группе узлов единственно рабочий (Ready).

          По умолчанию: true

        • spec.disruptions.automatic.windows
          массив объектов

          Список окон disruption-обновлений узлов.

          • spec.disruptions.automatic.windows.days
            массив строк

            Дни недели, в которые применяется окно обновлений.

            Примеры:

            days: Mon
            
            days: Wed
            
            • Элемент массива
              строка

              День недели.

              Допустимые значения: Mon, Tue, Wed, Thu, Fri, Sat, Sun

          • spec.disruptions.automatic.windows.from
            строка

            Обязательный параметр

            Время начала окна обновления (в часовом поясе UTC).

            Шаблон: ^(?:\d|[01]\d|2[0-3]):[0-5]\d$

            Пример:

            from: '13:00'
            
          • spec.disruptions.automatic.windows.to
            строка

            Обязательный параметр

            Время окончания окна обновления (в часовом поясе UTC).

            Шаблон: ^(?:\d|[01]\d|2[0-3]):[0-5]\d$

            Пример:

            to: '18:30'
            
      • spec.disruptions.rollingUpdate
        объект

        Additional parameters for the RollingUpdate mode.

        • spec.disruptions.rollingUpdate.windows
          массив объектов

          Time windows for node disruptive updates.

          • spec.disruptions.rollingUpdate.windows.days
            массив строк

            Days of the week when node could be updated.

            Примеры:

            days: Mon
            
            days: Wed
            
            • Элемент массива
              строка

              Day of the week.

              Допустимые значения: Mon, Tue, Wed, Thu, Fri, Sat, Sun

          • spec.disruptions.rollingUpdate.windows.from
            строка

            Обязательный параметр

            Start time of disruptive update window (UTC timezone).

            Шаблон: ^(?:\d|[01]\d|2[0-3]):[0-5]\d$

            Пример:

            from: '13:00'
            
          • spec.disruptions.rollingUpdate.windows.to
            строка

            Обязательный параметр

            End time of disruptive update window (UTC timezone).

            Шаблон: ^(?:\d|[01]\d|2[0-3]):[0-5]\d$

            Пример:

            to: '18:30'
            
    • spec.kubelet
      объект

      Параметры настройки kubelet.

      • spec.kubelet.containerLogMaxFiles
        целочисленный

        Максимальное количество файлов журналов с учетом ротации.

        Параметр не влияет на работу, если тип CRI — Docker.

        Внимание. Docker считается устаревшим, не используйте его.

        По умолчанию: 4

        Допустимые значения: 1 <= X <= 20

      • spec.kubelet.containerLogMaxSize
        строка

        Максимальный размер файла журнала до того, как он будет ротирован.

        Внимание! Параметр не влияет на работу, если тип CRI — Docker.

        Внимание. Docker считается устаревшим, не используйте его.

        По умолчанию: 50Mi

        Шаблон: \d+[Ei|Pi|Ti|Gi|Mi|Ki|E|P|T|G|M|k|m]

      • spec.kubelet.maxPods
        целочисленный

        Максимальное количество подов на узлах данной NodeGroup. Если явно не задан, по умолчанию задается в зависимости от значения параметра podSubnetNodeCIDRPrefix ClusterConfiguration:

        • 120 подов для podSubnetNodeCIDRPrefix ≥ 24;
        • 250 подов для podSubnetNodeCIDRPrefix = 23;
        • 500 подов для podSubnetNodeCIDRPrefix = 22;
        • 1000 подов для podSubnetNodeCIDRPrefix ≤ 21.
      • spec.kubelet.rootDir
        строка

        Путь к каталогу для файлов kubelet (volume mounts и т. д.).

        По умолчанию: /var/lib/kubelet

      • spec.kubelet.seccompDefault
        булевый

        Использовать seccomp-профиль RuntimeDefault для workload’ов, где seccomp-профиль не задан явно.

    • spec.nodeTemplate
      объект

      Настройки Node-объектов в Kubernetes, которые будут добавлены после регистрации узла.

      Пример:

      nodeTemplate:
        labels:
          environment: production
          app: warp-drive-ai
        annotations:
          ai.fleet.com/discombobulate: 'true'
        taints:
        - effect: NoExecute
          key: ship-class
          value: frigate
      
      • spec.nodeTemplate.annotations
        объект

        Аналогично стандартному полю metadata.annotations.

        Пример:

        annotations:
          ai.fleet.com/discombobulate: 'true'
        
      • spec.nodeTemplate.labels
        объект

        Аналогично стандартному полю metadata.labels.

        Пример:

        labels:
          environment: production
          app: warp-drive-ai
        
      • spec.nodeTemplate.taints
        массив объектов

        Аналогично полю .spec.taints из объекта Node.

        Доступны только поля effect, key, value.

        Пример:

        taints:
        - effect: NoExecute
          key: ship-class
          value: frigate
        
        • spec.nodeTemplate.taints.effect
          строка

          Допустимые значения: NoSchedule, PreferNoSchedule, NoExecute

        • spec.nodeTemplate.taints.key
          строка
        • spec.nodeTemplate.taints.value
          строка
    • spec.nodeType
      строка

      Обязательный параметр

      Тип узлов, которые представляет эта группа:

      • Cloud — узлы для этой группы будут автоматически создаваться (и удаляться) в настроенном облачном провайдере;
      • Static — статический узел, размещенный на железном сервере или виртуальной машине. Узел не управляется cloud-controller-manager’ом, даже если включен один из облачных провайдеров;
      • Hybrid — статический узел (созданный вручную или любыми внешними инструментами), размещенный в том же облаке, с которым настроена интеграция у одного из облачных провайдеров. На таком узле работает CSI и такой узел управляется cloud-controller-manager’ом: объект Node автоматически обогащается информацией о зоне и регионе по данным, полученным от облака; при удалении узла из облака соответствующий ему объект Node будет удален в Kubernetes.

      Допустимые значения: Cloud, Static, Hybrid

    • spec.operatingSystem
      объект

      Параметры операционной системы.

      • spec.operatingSystem.manageKernel
        булевый

        Этот параметр не используется. Раньше он включал автоматическое управление ядром операционной системы.

        По умолчанию: true

    • spec.providerType
      строка

      Тип облачного провайдера группы узлов. None или пустое значение — для статической группы узлов.

    • spec.systemType
      строка

      Способ управления узлом:

      • Mutable — классический узел, настраиваемый на лету с помощью bashible. Именно это означает незаполненное поле;
      • Immutable — immutable-узел: агент на узле приводит его в состояние, описанное в объекте NodeConfig; bashible не используется.

      Заданное значение изменить или удалить нельзя. Если значение ещё не задано, его можно указать — но не Immutable, когда в группе уже есть узлы, настроенные bashible: передать такие узлы агенту на узле нельзя.

      Допустимые значения: Mutable, Immutable

  • status
    объект
    • status.conditionSummary
      объект
      • status.conditionSummary.ready
        строка

        Готовность группы узлов по сводному состоянию.

        Допустимые значения: True, False

      • status.conditionSummary.statusMessage
        строка

        Сообщение о состоянии обработки группы узлов.

    • status.desired
      целочисленный

      Желаемое количество машин в группе.

    • status.engine
      строка

      Фактический механизм управления узлами в этой группе.

      Значение поля определяет, каким компонентом управляются узлы:

      • None — узлы группы не управляются через MCM или CAPI;
      • MCM — узлы группы управляются через machine-controller-manager;
      • CAPI — узлы группы управляются через Cluster API.

      Допустимые значения: None, MCM, CAPI

    • status.error
      строка

      Сообщение об ошибке при обработке группы узлов.

    • status.instances
      целочисленный

      Количество инстансов в группе в любом состоянии.

    • status.kubernetesVersion
      строка

      Текущая версия Kubernetes на узлах или версия, до которой узлы будут обновлены.

    • status.lastMachineFailures
      массив объектов
      • status.lastMachineFailures.lastOperation
        объект
        • status.lastMachineFailures.lastOperation.description
          строка

          Описание последней операции.

        • status.lastMachineFailures.lastOperation.lastUpdateTime
          строка

          Время последнего обновления статуса операции.

        • status.lastMachineFailures.lastOperation.state
          строка

          Состояние операции с машиной.

        • status.lastMachineFailures.lastOperation.type
          строка

          Тип операции.

      • status.lastMachineFailures.name
        строка

        Имя машины.

      • status.lastMachineFailures.ownerRef
        строка

        Имя владельца машины.

      • status.lastMachineFailures.providerID
        строка

        ProviderID машины.

    • status.max
      целочисленный

      Максимальное количество инстансов в группе.

    • status.min
      целочисленный

      Минимальное количество инстансов в группе.

    • status.nodes
      целочисленный

      Количество Kubernetes-узлов в группе в любом состоянии.

    • status.ready
      целочисленный

      Количество готовых Kubernetes-узлов в группе.

    • status.standby
      целочисленный

      Количество резервных инстансов в группе.

    • status.upToDate
      целочисленный

      Количество узлов в актуальном состоянии.

Описывает runtime-параметры группы узлов.

  • metadata
    объект
    • metadata.name
      строка

      Шаблон: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$

      Максимальная длина: 42

  • spec
    объект

    Обязательный параметр

    • spec.chaos
      объект

      Настройки Chaos Monkey.

      Пример:

      chaos:
        mode: DrainAndDelete
        period: 24h
      
      • spec.chaos.mode
        строка

        Режим работы Chaos Monkey:

        • DrainAndDelete — при срабатывании делает узлу drain, затем удаляет его.
        • Disabled — не трогает данную NodeGroup.

        По умолчанию: Disabled

        Допустимые значения: Disabled, DrainAndDelete

      • spec.chaos.period
        строка

        Интервал времени срабатывания Chaos Monkey.

        Задается в виде строки с указанием часов и минут: 30m, 1h, 2h30m, 24h.

        По умолчанию: 6h

        Шаблон: ^[0-9]+[mh]{1}$

    • spec.cloudInstances
      объект

      Параметры заказа облачных виртуальных машин.

      Внимание. Допустимо использовать только совместно с nodeType: CloudEphemeral.

      • spec.cloudInstances.classReference
        объект

        Обязательный параметр

        Ссылка на объект InstanceClass. Уникален для каждого модуля cloud-provider-*.

        • spec.cloudInstances.classReference.kind
          строка

          Тип объекта InstanceClass (например, OpenStackInstanceClass). Поддерживаемые типы определяются установленными модулями облачных провайдеров и указаны в их документации.

        • spec.cloudInstances.classReference.name
          строка

          Имя нужного InstanceClass-объекта (например, finland-medium).

      • spec.cloudInstances.maxPerZone
        целочисленный

        Обязательный параметр

        Максимальное количество инстансов в зоне.

        Проставляется как верхняя граница в cluster-autoscaler.

        Допустимые значения: 0 <= X

      • spec.cloudInstances.maxSurgePerZone
        целочисленный

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

        По умолчанию: 1

        Допустимые значения: 0 <= X

      • spec.cloudInstances.maxUnavailablePerZone
        целочисленный

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

        По умолчанию: 0

        Допустимые значения: 0 <= X

      • spec.cloudInstances.minPerZone
        целочисленный

        Обязательный параметр

        Минимальное количество инстансов в зоне.

        Проставляется в объект MachineDeployment и в качестве нижней границы в cluster autoscaler.

        При значении 0 для некоторых InstanceClass нужно задавать capacity. Более подробно можно узнать в описании нужных InstanceClass.

        Допустимые значения: 0 <= X

      • spec.cloudInstances.standby
        строка или число

        Количество резервных (подогретых) узлов в этой NodeGroup во всех зонах.

        Резервный узел — это узел кластера, на котором резервируются ресурсы, доступные в любой момент для масштабирования. Наличие такого узла позволяет cluster autoscaler’у не ждать инициализации узла (которая может занимать несколько минут), а сразу размещать на нем нагрузку.

        Значение может быть абсолютным (например, 2) или процентом желаемых узлов (например, 10%). Если указан процент, абсолютное значение рассчитывается исходя из процента от максимального количества узлов (параметр maxPerZone), округленного в меньшую сторону, но не менее одного.

        Шаблон: ^[0-9]+%?$

      • spec.cloudInstances.standbyHolder
        объект

        Объем резервируемых ресурсов.

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

        • spec.cloudInstances.standbyHolder.notHeldResources
          объект

          Резервируемые ресурсы.

          • spec.cloudInstances.standbyHolder.notHeldResources.cpu
            строка или число

            Количество CPU.

            Значение может быть абсолютным (например, 1) или в millicore-формате (например, 1500m).

            Шаблон: ^[0-9]+m?$

          • spec.cloudInstances.standbyHolder.notHeldResources.memory
            строка или число

            Количество памяти.

            Значение может быть абсолютным в байтах (например, 128974848) или в Kubernetes-формате с суффиксами: G, Gi, M, Mi (например, 750Mi).

            Шаблон: ^[0-9]+(\.[0-9]+)?(E|P|T|G|M|K|Ei|Pi|Ti|Gi|Mi|Ki)?$

      • spec.cloudInstances.zones
        массив строк

        Переопределение перечня зон, в которых создаются инстансы.

        Значение по умолчанию зависит от выбранного облачного провайдера и обычно соответствует всем зонам используемого региона.

        Пример:

        zones:
        - Helsinki
        - Espoo
        - Tampere
        
    • spec.cri
      объект

      Параметры container runtime.

      • spec.cri.containerd
        объект

        Параметры работы containerd.

        При настройке этих параметров cri.type должен быть Containerd.

        • spec.cri.containerd.maxConcurrentDownloads
          целочисленный

          Максимальное количество параллельных потоков загрузки для каждой операции pull.

          По умолчанию: 3

      • spec.cri.type
        строка

        Container runtime type.

        If not specified, the defaultCRI parameter value of ClusterConfiguration is used.

        Note. Docker support is deprecated.

        Допустимые значения: Docker, Containerd, NotManaged

    • spec.disruptions
      объект

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

      Пример:

      disruptions:
        approvalMode: Automatic
        automatic:
          drainBeforeApproval: false
          windows:
          - from: '06:00'
            to: '08:00'
            days:
            - Tue
            - Sun
      
      • spec.disruptions.approvalMode
        строка

        Режим выдачи разрешения на disruptive-обновление (обновление, требующее прерывания работы узла):

        • Manual — отключить автоматическую выдачу разрешений на disruptive-обновление. Если потребуется disruptive-обновление, загорится специальный алерт. Внимание. Для группы узлов master режим выдачи разрешения всегда должен быть Manual, чтобы избежать проблем при выполнении drain узла.
        • Automatic — автоматически выдавать разрешения на disruptive-обновление.
        • RollingUpdate — в этом режиме будет создан новый узел с обновленными настройками, а старый узел будет удален. Разрешено только для облачных узлов.

        Когда не используется режим RollingUpdate, при обновлении узел освобождается от нагрузки (drain), после чего обновляется (перезагружается) и вводится в работу. Обратите внимание, что в этом случае в кластере должно быть место для размещения нагрузки на время, пока обновляемый узел недоступен. В режиме RollingUpdate узел заменяется на обновленный, то есть на время обновления в кластере появляется дополнительный узел. В облачной инфраструктуре режим RollingUpdate удобен, например, если в кластере нет ресурсов для временного размещения нагрузки с обновляемого узла.

        По умолчанию: Automatic

        Допустимые значения: Manual, Automatic, RollingUpdate

      • spec.disruptions.automatic
        объект

        Дополнительные параметры для режима Automatic.

        • spec.disruptions.automatic.drainBeforeApproval
          булевый

          Выполнение drain подов с узла перед выдачей разрешения на disruption.

          Внимание. Данная настройка игнорируется (узлам будет выдано разрешение без предварительного выполнения drain подов с узлов):

          • для nodeGroup master с единственным узлом;
          • для выделенного под запуск DP узла, если этот узел в группе узлов единственно рабочий (Ready).

          По умолчанию: true

        • spec.disruptions.automatic.windows
          массив объектов

          Список окон disruption-обновлений узлов.

          • spec.disruptions.automatic.windows.days
            массив строк

            Дни недели, в которые применяется окно обновлений.

            Примеры:

            days: Mon
            
            days: Wed
            
            • Элемент массива
              строка

              День недели.

              Допустимые значения: Mon, Tue, Wed, Thu, Fri, Sat, Sun

          • spec.disruptions.automatic.windows.from
            строка

            Обязательный параметр

            Время начала окна обновления (в часовом поясе UTC).

            Шаблон: ^(?:\d|[01]\d|2[0-3]):[0-5]\d$

            Пример:

            from: '13:00'
            
          • spec.disruptions.automatic.windows.to
            строка

            Обязательный параметр

            Время окончания окна обновления (в часовом поясе UTC).

            Шаблон: ^(?:\d|[01]\d|2[0-3]):[0-5]\d$

            Пример:

            to: '18:30'
            
      • spec.disruptions.rollingUpdate
        объект

        Additional parameters for the RollingUpdate mode.

        • spec.disruptions.rollingUpdate.windows
          массив объектов

          Time windows for node disruptive updates.

          • spec.disruptions.rollingUpdate.windows.days
            массив строк

            Days of the week when node could be updated.

            Примеры:

            days: Mon
            
            days: Wed
            
            • Элемент массива
              строка

              Day of the week.

              Допустимые значения: Mon, Tue, Wed, Thu, Fri, Sat, Sun

          • spec.disruptions.rollingUpdate.windows.from
            строка

            Обязательный параметр

            Start time of disruptive update window (UTC timezone).

            Шаблон: ^(?:\d|[01]\d|2[0-3]):[0-5]\d$

            Пример:

            from: '13:00'
            
          • spec.disruptions.rollingUpdate.windows.to
            строка

            Обязательный параметр

            End time of disruptive update window (UTC timezone).

            Шаблон: ^(?:\d|[01]\d|2[0-3]):[0-5]\d$

            Пример:

            to: '18:30'
            
    • spec.docker
      объект

      Параметры настройки Docker.

      При настройке этих параметров cri.type должен быть Docker.

      Внимание. Docker считается устаревшим, не используйте его.

      • spec.docker.manage
        булевый

        Автоматическое управление версией и параметрами Docker.

        По умолчанию: true

      • spec.docker.maxConcurrentDownloads
        целочисленный

        Максимальное количество потоков одновременного скачивания Docker-образов.

        По умолчанию: 3

    • spec.kubelet
      объект

      Параметры настройки kubelet.

      • spec.kubelet.containerLogMaxFiles
        целочисленный

        Максимальное количество файлов журналов с учетом ротации.

        Параметр не влияет на работу, если тип CRI — Docker.

        Внимание. Docker считается устаревшим, не используйте его.

        По умолчанию: 4

        Допустимые значения: 1 <= X <= 20

      • spec.kubelet.containerLogMaxSize
        строка

        Максимальный размер файла журнала до того, как он будет ротирован.

        Параметр не влияет на работу, если тип CRI — Docker.

        Внимание. Docker считается устаревшим, не используйте его.

        По умолчанию: 50Mi

        Шаблон: \d+[Ei|Pi|Ti|Gi|Mi|Ki|E|P|T|G|M|k|m]

      • spec.kubelet.maxPods
        целочисленный

        Максимальное количество подов на узлах данной NodeGroup. Если явно не задан, по умолчанию задается в зависимости от значения параметра podSubnetNodeCIDRPrefix ClusterConfiguration:

        • 120 подов для podSubnetNodeCIDRPrefix ≥ 24;
        • 250 подов для podSubnetNodeCIDRPrefix = 23;
        • 500 подов для podSubnetNodeCIDRPrefix = 22;
        • 1000 подов для podSubnetNodeCIDRPrefix ≤ 21.
      • spec.kubelet.rootDir
        строка

        Путь к каталогу для файлов kubelet (volume mounts и т. д.).

        По умолчанию: /var/lib/kubelet

      • spec.kubelet.seccompDefault
        булевый

        Использовать seccomp-профиль RuntimeDefault для workload’ов, где seccomp-профиль не задан явно.

    • spec.kubernetesVersion
      строка

      Желаемая минорная версия Kubernetes.

      По умолчанию соответствует глобально выбранной для кластера версии (см. документацию по установке) или, если таковая не определена, текущей версии control plane.

      Допустимые значения: 1.32, 1.33, 1.34, 1.35, 1.36

      Пример:

      kubernetesVersion: '1.33'
      
    • spec.nodeTemplate
      объект

      Настройки Node-объектов в Kubernetes, которые будут добавлены после регистрации узла.

      Пример:

      nodeTemplate:
        labels:
          environment: production
          app: warp-drive-ai
        annotations:
          ai.fleet.com/discombobulate: 'true'
        taints:
        - effect: NoExecute
          key: ship-class
          value: frigate
      
      • spec.nodeTemplate.annotations
        объект

        Аналогично стандартному полю metadata.annotations.

        Пример:

        annotations:
          ai.fleet.com/discombobulate: 'true'
        
      • spec.nodeTemplate.labels
        объект

        Аналогично стандартному полю metadata.labels.

        Пример:

        labels:
          environment: production
          app: warp-drive-ai
        
      • spec.nodeTemplate.taints
        массив объектов

        Аналогично полю .spec.taints из объекта Node.

        Доступны только поля effect, key, value.

        Пример:

        taints:
        - effect: NoExecute
          key: ship-class
          value: frigate
        
        • spec.nodeTemplate.taints.effect
          строка

          Допустимые значения: NoSchedule, PreferNoSchedule, NoExecute

        • spec.nodeTemplate.taints.key
          строка
        • spec.nodeTemplate.taints.value
          строка
    • spec.nodeType
      строка

      Обязательный параметр

      Тип узлов, которые представляет эта группа:

      • Cloud — узлы для этой группы будут автоматически создаваться (и удаляться) в настроенном облачном провайдере;
      • Static — статический узел, размещенный на железном сервере или виртуальной машине. Узел не управляется cloud-controller-manager’ом, даже если включен один из облачных провайдеров;
      • Hybrid — статический узел (созданный вручную или любыми внешними инструментами), размещенный в том же облаке, с которым настроена интеграция у одного из облачных провайдеров. На таком узле работает CSI и такой узел управляется cloud-controller-manager’ом: объект Node автоматически обогащается информацией о зоне и регионе по данным, полученным от облака; при удалении узла из облака соответствующий ему объект Node будет удален в Kubernetes.

      Допустимые значения: Cloud, Static, Hybrid

    • spec.operatingSystem
      Параметр устарел
      объект

      Параметры операционной системы.

      • spec.operatingSystem.manageKernel
        Параметр устарел
        булевый

        Этот параметр не используется. Раньше он включал автоматическое управление ядром операционной системы.

        По умолчанию: true

    • spec.providerType
      строка

      Тип облачного провайдера группы узлов. None или пустое значение — для статической группы узлов.

    • spec.static
      объект

      Параметры статического узла.

      • spec.static.internalNetworkCIDRs
        массив строк

        CIDR подсети.

    • spec.systemType
      строка

      Способ управления узлом.

      Возможные значения:

      • Mutable — классический узел, настраиваемый «на лету» с помощью bashible. Именно это означает незаполненное поле.
      • Immutable — immutable-узел: агент на узле приводит его в состояние, описанное в объекте NodeConfig; bashible не используется.

      Заданное значение изменить или удалить нельзя. Если значение ещё не задано, его можно указать — но не Immutable, когда в группе уже есть узлы, настроенные bashible: передать такие узлы агенту на узле нельзя.

      Допустимые значения: Mutable, Immutable

  • status
    объект
    • status.conditionSummary
      объект
      • status.conditionSummary.ready
        строка

        Готовность группы узлов по сводному состоянию.

        Допустимые значения: True, False

      • status.conditionSummary.statusMessage
        строка

        Сообщение о состоянии обработки группы узлов.

    • status.desired
      целочисленный

      Желаемое количество машин в группе.

    • status.engine
      строка

      Фактический механизм управления узлами в этой группе.

      Значение поля определяет, каким компонентом управляются узлы:

      • None — узлы группы не управляются через Machine Controller Manager или CAPI;
      • MCM — узлы группы управляются через Machine Controller Manager;
      • CAPI — узлы группы управляются через Cluster API.

      Допустимые значения: None, MCM, CAPI

    • status.error
      строка

      Сообщение об ошибке при обработке группы узлов.

    • status.instances
      целочисленный

      Количество инстансов в группе в любом состоянии.

    • status.kubernetesVersion
      строка

      Текущая версия Kubernetes на узлах или версия, до которой узлы будут обновлены.

    • status.lastMachineFailures
      массив объектов
      • status.lastMachineFailures.lastOperation
        объект
        • status.lastMachineFailures.lastOperation.description
          строка

          Описание последней операции.

        • status.lastMachineFailures.lastOperation.lastUpdateTime
          строка

          Время последнего обновления статуса операции.

        • status.lastMachineFailures.lastOperation.state
          строка

          Состояние операции с машиной.

        • status.lastMachineFailures.lastOperation.type
          строка

          Тип операции.

      • status.lastMachineFailures.name
        строка

        Имя машины.

      • status.lastMachineFailures.ownerRef
        строка

        Имя владельца машины.

      • status.lastMachineFailures.providerID
        строка

        ProviderID машины.

    • status.max
      целочисленный

      Максимальное количество инстансов в группе.

    • status.min
      целочисленный

      Минимальное количество инстансов в группе.

    • status.nodes
      целочисленный

      Количество Kubernetes-узлов в группе в любом состоянии.

    • status.ready
      целочисленный

      Количество готовых Kubernetes-узлов в группе.

    • status.standby
      целочисленный

      Количество резервных инстансов в группе.

    • status.upToDate
      целочисленный

      Количество узлов в актуальном состоянии.

NodeConfig

Short names: nc

Scope: Cluster
Version: v1alpha1

Объект верхнего уровня, описывающий желаемое состояние узла Deckhouse Engine.

Один и тот же тип используется в двух местах: на узле он хранится в файле /config/nodeconfig.yaml и читается загрузчиком конфигурации, а в кластере представлен ресурсом группы internal.deckhouse.io версии v1alpha1.

  • spec
    объект

    Обязательный параметр

    Желаемое состояние узла.

    • spec.apiServerEndpoints
      массив строк

      Список адресов серверов API, к которым подключается узел (через локальный на узле API-прокси).

      • Элемент массива
        строка

        Шаблон: ^(https?://)?(\[[0-9A-Fa-f:]+\]|[A-Za-z0-9]([-A-Za-z0-9]*[A-Za-z0-9])?([.][A-Za-z0-9]([-A-Za-z0-9]*[A-Za-z0-9])?)*):(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{0,3})/?$

    • spec.containerRuntime
      объект

      Параметры containerd.

      • spec.containerRuntime.maxConcurrentDownloads
        целочисленный

        Максимальное количество потоков одновременного скачивания слоёв образов.

        По умолчанию: 8

        Допустимые значения: 0 <= X

      • spec.containerRuntime.registryOwner
        строка

        Имя владельца директории registry.d containerd.

        Возможные значения:

        • nodelet — агент узла формирует в каталоге конфигурацию на основе spec.registry и удаляет конфигурацию, которой там быть не должно;
        • agent — каталогом управляет статический под registry-агента. Агент узла не записывает в каталог и не удаляет из него конфигурацию, включая конфигурацию из spec.registry. Это позволяет использовать конфигурацию _default, создаваемую registry-агентом, для доступа к хранилищу образов контейнеров платформы.

        Значение устанавливается node-controller в зависимости от режима работы модуля registry.

        По умолчанию: nodelet

        Допустимые значения: nodelet, agent

      • spec.containerRuntime.sandboxImage
        строка

        Образ pause, используемый для песочниц подов.

        Если параметр не задан, используется образ pause, импортированный системным расширением containerd.

        Шаблон: ^[^[:space:]]+$

    • spec.extensions
      массив объектов

      Подписанные образы systemd-sysext с verity, подключаемые поверх корневой файловой системы.

      Подписанный образ systemd-sysext с verity, собранный из канала обновлений.

      Загружается из registry-packages-proxy по дайджесту.

      Необязательное поле repository (хост registry, например cr.flant.com) выбирает конфигурацию клиента прокси для конкретного хранилища образов контейнеров. Если поле пустое, берётся конфигурация прокси по умолчанию. Необязательное поле additionalPath (например, deckhouse/sysext/containerd) передаётся прокси в параметре запроса path и указывает, где искать артефакт внутри репозитория.

      • spec.extensions.additionalPath
        строка

        Передаётся прокси в параметре запроса path.

      • spec.extensions.digest
        строка

        Обязательный параметр

        Дайджест образа sysext в формате sha256:.

        Шаблон: ^sha256:[a-f0-9]{64}$

      • spec.extensions.name
        строка

        Обязательный параметр

        Имя расширения (оно же — базовое имя образа sysext).

        Шаблон: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$

        Длина: 1..63

      • spec.extensions.repository
        строка

        Выбирает конфигурацию клиента прокси для конкретного registry.

      • spec.extensions.requestedBy
        строка

        Кто запросил расширение (например, node-manager).

    • spec.internalNetworkCIDRs
      массив строк

      Внутренние сети кластера — подсети, в которых узлы адресуют друг друга и control-plane.

      Узел выбирает интерфейс, адрес которого попадает в одну из этих сетей, и регистрируется с этим адресом. Узлу с единственным интерфейсом поле не нужно. Значение кластерное: контроллер публикует его на каждом проходе, беря из StaticClusterConfiguration статического кластера и из конфигурации облачного провайдера. Допускаются только адреса IPv4.

      • Элемент массива
        строка

        Шаблон: ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$

    • spec.kernel
      объект

      Параметры sysctl и модули ядра, которые нужно загрузить.

      • spec.kernel.modules
        массив объектов
        • spec.kernel.modules.name
          строка

          Обязательный параметр

        • spec.kernel.modules.params
          массив строк
      • spec.kernel.sysctl
        объект
    • spec.kubelet
      объект

      Параметры kubelet.

      • spec.kubelet.bootstrapToken
        строка

        Bootstrap-токен, с помощью которого kubelet получает свой клиентский сертификат при первой загрузке.

      • spec.kubelet.caCert
        строка

        CA-сертификат кластера в кодировке Base64, используемый в bootstrap-kubelet.conf для проверки сервера API.

      • spec.kubelet.clusterDNS
        массив строк

        Список IP-адресов DNS-серверов кластера.

        • Элемент массива
          строка

          Максимальная длина: 45

      • spec.kubelet.clusterDomain
        строка

        DNS-домен кластера (например, cluster.local).

        Шаблон: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$

        Максимальная длина: 253

      • spec.kubelet.containerLogMaxFiles
        целочисленный

        Количество сохраняемых файлов журналов с учётом ротации.

        По умолчанию: 4

        Допустимые значения: 1 <= X <= 1000

      • spec.kubelet.containerLogMaxSize
        строка

        Максимальный размер файла журнала, при достижении которого выполняется ротация (например, 50Mi).

        По умолчанию: 50Mi

      • spec.kubelet.externalCloudProvider
        булевый

        Включает --cloud-provider=external, чтобы узлом (зона, регион, providerID) управлял cloud-controller-manager.

      • spec.kubelet.kubernetesVersion
        строка

        Минорная версия Kubernetes в кластере, например 1.34.

        От неё зависит, с какими feature gates запускается kubelet: bashible включает feature gates для DRA в зависимости от версии, и узел, которому версию не сообщили, сделать то же самое не сможет. Если версию не передать, DRA-нагрузка будет работать во всём кластере, кроме immutable-узлов.

        Шаблон: ^[0-9]+\.[0-9]+$

        Максимальная длина: 16

      • spec.kubelet.maxPods
        целочисленный

        Максимальное количество подов на узле.

        По умолчанию: 120

        Допустимые значения: 1 <= X <= 1000

      • spec.kubelet.nodeLabels
        объект

        Лейблы, добавляемые к объекту Node при регистрации kubelet.

      • spec.kubelet.registerWithTaints
        массив объектов

        Список taint’ов, добавляемых к объекту Node при регистрации kubelet. Применяется только при первичной регистрации.

        Taint Kubernetes, добавляемый узлу при регистрации.

        • spec.kubelet.registerWithTaints.effect
          строка

          Допустимые значения: NoSchedule, PreferNoSchedule, NoExecute

        • spec.kubelet.registerWithTaints.key
          строка

          Обязательный параметр

        • spec.kubelet.registerWithTaints.value
          строка
      • spec.kubelet.resourceReservation
        объект

        Определяет, сколько процессорного времени, памяти и дискового пространства резервируется под нужды самой системы и не отдаётся подам (kubeReserved).

        • spec.kubelet.resourceReservation.mode
          строка

          Режим резервирования.

          Возможные значения:

          • Auto — рассчитать резерв по ёмкости узла.
          • Off — не резервировать ничего.

          По умолчанию: Auto

          Допустимые значения: Auto, Off

      • spec.kubelet.serverTLSBootstrap
        булевый

        Заставляет kubelet запрашивать серверный сертификат у кластера вместо того, чтобы подписывать его самому.

        По умолчанию true. На первом разворачиваемом master-узле в кластере значение false: пока DP не установлена, подписывать серверные CSR некому, а kubelet, который ждёт такой сертификат, так и не сообщит, что узел готов.

    • spec.network
      объект

      Имя хоста, DNS, NTP, сетевые интерфейсы и маршруты.

      • spec.network.dns
        объект

        Параметры DNS-резолвера.

        • массив строк
        • spec.network.dns.servers
          массив строк
      • spec.network.hostname
        строка
      • spec.network.interfaces
        массив объектов
        • spec.network.interfaces.addresses
          массив строк

          Статические адреса в формате CIDR (используются, если dhcp выключен).

        • spec.network.interfaces.cluster
          булевый

          Помечает интерфейс как кластерный — тот, по которому идёт трафик кластера.

          Нужно машине, адресацию которой не получается различить по spec.internalNetworkCIDRs: например, когда несколько интерфейсов попадают в одну и ту же внутреннюю сеть. Пометить так можно не более одного интерфейса.

        • spec.network.interfaces.dhcp
          булевый

          Обязательный параметр

          Включает DHCPv4 на интерфейсе.

        • spec.network.interfaces.gateway
          строка
        • spec.network.interfaces.name
          строка

          Обязательный параметр

      • spec.network.ntp
        объект

        Параметры синхронизации времени по NTP.

        • spec.network.ntp.servers
          массив строк
      • spec.network.routes
        массив объектов
        • spec.network.routes.gateway
          строка
        • spec.network.routes.name
          строка
        • spec.network.routes.networks
          массив строк
    • spec.nodeName
      строка

      Обязательный параметр

      Имя узла Kubernetes, к которому относится конфигурация.

      Шаблон: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$

      Длина: 1..253

    • spec.osImage
      объект

      Обязательный параметр

      Образ операционной системы, который должен использоваться на узле.

      Узел сравнивает значение digest со значением, сохранённым при установке в /config/os-digest. Дайджест идентифицирует конкретную публикацию образа и может измениться при повторной публикации того же содержимого.

      • spec.osImage.additionalPath
        строка

        Дополнительный путь к образу, передаваемый в registry-packages-proxy в параметре path.

        Для образов Deckhouse параметр можно оставить пустым, поскольку путь к репозиторию уже указан в spec.registry.path.

      • spec.osImage.digest
        строка

        Обязательный параметр

        Дайджест образа операционной системы.

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

        Шаблон: ^sha256:[a-f0-9]{64}$

      • spec.osImage.repository
        строка

        Адрес хранилища образов контейнеров, из которого загружается образ операционной системы.

        Значение передаётся в registry-packages-proxy в параметре repository.

        Если параметр не указан, repository не передаётся и registry-packages-proxy использует адрес хранилища, назначенный по умолчанию.

      • spec.osImage.rootHash
        строка

        Корневой хеш dm-verity файловой системы внутри образа в шестнадцатеричном формате ASCII.

        Используется для определения фактического изменения содержимого образа. В отличие от digest, значение которого может измениться при повторной публикации образа, rootHash остаётся прежним, если содержимое корневой файловой системы не изменилось.

        Deckhouse Platform заполняет это поле на основе лейбла образа. Если получить значение из лейбла не удалось, узел определяет корневой хеш после скачивания образа.

        Шаблон: ^[a-f0-9]{64}$

    • spec.registry
      объект

      Хранилище образов контейнеров, к которому узел обращается напрямую, минуя кластерный registry-packages-proxy.

      Узлу, который разворачивает control-plane, обращаться к прокси бессмысленно: прокси ещё нет, кластер готовит как раз этот узел. Образы control-plane и собственные системные расширения ему при этом всё равно нужно скачать, поэтому адрес и учётные данные он должен знать сам. Остальные узлы оставляют поле пустым и работают через прокси.

      • spec.registry.address
        строка

        Обязательный параметр

        Хост хранилища образов контейнеров, при необходимости с портом, например registry.deckhouse.io или registry.example.com:5000.

        Шаблон: ^\S+$

      • spec.registry.auth
        строка

        Пара user:password в кодировке Base64 — в том же виде, в каком она хранится в поле auth файла docker config.

        Шаблон: ^[A-Za-z0-9+/]+={0,2}$

      • spec.registry.ca
        строка

        Набор сертификатов в формате PEM для проверки хранилища образов контейнеров, подписанного собственным центром сертификации.

        В образе есть только набор Mozilla, поэтому без этого поля хранилище образов контейнеров с самоподписанным сертификатом недоступно.

      • spec.registry.path
        строка

        Путь к репозиторию внутри хранилища образов контейнеров, например /deckhouse/ce. scheme: description: | Схема обращения к хранилищу образов контейнеров: HTTPS (по умолчанию) или HTTP.

      • spec.registry.scheme
        строка

        Scheme is HTTPS (default) or HTTP.

        По умолчанию: HTTPS

        Допустимые значения: HTTPS, HTTP

    • spec.registryPackagesProxyAccessTokenB64
      строка

      Токен в кодировке Base64 для аутентификации в registry-packages-proxy.

      Это учётные данные, но, в отличие от status.maintenanceToken, поле намеренно НЕ помечено x-kubernetes-sensitive-data. Права на subresource nodeconfigs/sensitive выдаются на ресурс целиком, а не на отдельное поле, поэтому разрешить узлу читать этот токен можно только вместе с maintenance-токенами всех остальных узлов, — а читать этот токен узлу необходимо: контроллер расширений расшифровывает его, чтобы скачать каждый sysext. Открытость поля при этом ничего не стоит: токен прокси — один общий для кластера секрет (registry-packages-proxy-token), одинаковый на всех узлах, так что в копии соседа злоумышленник найдёт лишь то, что у него уже есть.

      Шаблон: ^(([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?)?$

    • spec.staticPods
      массив объектов

      Манифесты статических подов, которые kubelet запускает без участия планировщика Kubernetes.

      Узел записывает манифесты в каталог /etc/kubernetes/manifests. Остальные необходимые ресурсы статический под должен получать самостоятельно. Например, под может выпускать собственные сертификаты, использовать kubeconfig узла и монтировать каталоги для хранения состояния через hostPath с типом DirectoryOrCreate.

      Манифесты компонентов control plane, которые агент узла создаёт самостоятельно, в spec.staticPods не включаются и при обработке этого параметра не изменяются.

      Статический под.

      • spec.staticPods.manifest
        строка

        Обязательный параметр

        Полный манифест пода.

        При записи манифеста на диск подстрока $MY_IP заменяется IP-адресом узла аналогично манифестам компонентов control plane.

        Длина: 1..32768

      • spec.staticPods.name
        строка

        Обязательный параметр

        Имя файла манифеста без расширения.

        Используется как ключ элемента списка и не связано с metadata.name пода в манифесте. Имя зеркального пода kubelet определяет по манифесту, а не по имени файла.

        Шаблон: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$

        Длина: 1..63

    • spec.statusToken
      строка

      Токен для аутентификации запроса статуса у порта :50000 узла.

      Токен генерирует тот, кто пишет документ: dhctl при бутстрапе или рендер NodeConfigTemplate для машины, которую ставят руками; кластер переносит значение из уже существующего NodeConfig как есть, потому что сообщить узлу новый токен ему нечем. В NodeConfigTemplate токен генерируется заново на каждое чтение — машине, которую ставят руками, брать его неоткуда.

      В отличие от status.maintenanceToken, поле намеренно НЕ помечено x-kubernetes-sensitive-data: API отвечал бы <omitted>, и перенос значения записал бы эту строку обратно, уничтожив токен. Токен даёт право только читать статус, но не отправлять конфигурацию.

    • spec.storage
      объект

      Выбор целевого диска для установки ОС.

      Разметка разделов фиксирована (boot/config/data), поэтому достаточно указать устройство диска целиком.

      • spec.storage.device
        строка

        Блочное устройство диска целиком, на которое выполняется установка.

        Например /dev/sda, /dev/nvme0n1 или стабильный путь вида /dev/disk/by-id/.... Игнорируется, если задан diskSelector.

        Шаблон: ^/dev/[A-Za-z0-9._/-]+$

      • spec.storage.diskSelector
        объект

        Выбор целевого диска по атрибутам вместо фиксированного пути.

        Имеет приоритет над device (семантика соответствует Talos). Должны совпасть все заданные условия; используется первый подошедший диск.

        • spec.storage.diskSelector.busPath
          строка

          Соответствие пути аппаратной шины (glob).

        • spec.storage.diskSelector.model
          строка

          Соответствие модели устройства (glob), например Samsung*.

        • spec.storage.diskSelector.name
          строка

          Соответствие имени устройства в ядре (glob), например nvme0n1.

        • spec.storage.diskSelector.rotational
          булевый

          Соответствие типу накопителя: true — диск с вращающимися пластинами, false — твердотельный.

        • spec.storage.diskSelector.serial
          строка

          Соответствие серийному номеру диска (glob).

        • spec.storage.diskSelector.size
          строка

          Соответствие объёму диска, опционально с оператором сравнения, например >=100Gi, >1Ti, 512Gi.

        • spec.storage.diskSelector.type
          строка

          Соответствие типу диска.

          Допустимые значения: SSD, HDD, NVMe, SD

        • spec.storage.diskSelector.wwid
          строка

          Соответствие World Wide Identifier (glob).

      • spec.storage.mounts
        массив объектов

        Mounts are additional filesystems the node makes available, at /mnt/ or wherever bindTo names. Nothing here is partitioned: only existing partitions and blank whole disks are formatted (when empty) and mounted.

        Mount is one additional filesystem, at /mnt/ unless bindTo says otherwise. Exactly one of device or partitionSelector names the partition; an empty one is formatted (label = name), an existing filesystem mounted as is.

        • spec.storage.mounts.bindTo
          строка

          BindTo mounts the filesystem at this path instead of /mnt/, for a directory something else knows by name (/var/lib/etcd). The directory must be empty: mounting over files hides them, and hidden etcd data is lost data.

          Шаблон: ^/[A-Za-z0-9._/-]+$

        • spec.storage.mounts.device
          строка

          Device is the partition to use, e.g. “/dev/sdb1” or a stable “/dev/disk/by-id/…-part1” path.

          Шаблон: ^/dev/[A-Za-z0-9._/-]+$

        • spec.storage.mounts.filesystem
          строка

          Filesystem is what to create when the partition is empty. It says what to create and is not a matching condition.

          По умолчанию: ext4

          Допустимые значения: ext4

        • spec.storage.mounts.mode
          строка

          Mode is the mode of the filesystem root after mounting, as an octal string, e.g. “0700”. Left alone when unset. A freshly made ext4 has its root at 0755, which is a mode etcd refuses to start on.

          Шаблон: ^0[0-7]{3}$

        • spec.storage.mounts.name
          строка

          Обязательный параметр

          Name identifies the mount, and is both the mount point (/mnt/) and the filesystem label written when this node formats the partition. Capped at 16 characters because that is the size of the ext4 volume label field.

          Шаблон: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$

          Длина: 1..16

        • spec.storage.mounts.partitionSelector
          объект

          PartitionSelector picks the partition by attributes instead of a fixed path.

          • spec.storage.mounts.partitionSelector.blank
            булевый

            Blank makes whole disks selectable, and only ones that carry nothing: no partition table, no filesystem — a cloud disk never touched. Without it a selector sees partitions only; a whole disk is where somebody’s layout lives.

          • spec.storage.mounts.partitionSelector.fsType
            строка

            FSType matches the type of the filesystem already present (glob).

          • spec.storage.mounts.partitionSelector.label
            строка

            Label matches the filesystem label (glob).

          • spec.storage.mounts.partitionSelector.name
            строка

            Name matches the kernel device name (glob), e.g. “sdb1” or “nvme0n1p*”.

          • spec.storage.mounts.partitionSelector.partLabel
            строка

            PartLabel matches the GPT partition name (glob).

          • spec.storage.mounts.partitionSelector.partUUID
            строка

            PartUUID matches the GPT partition UUID exactly, ignoring case.

          • spec.storage.mounts.partitionSelector.size
            строка

            Size matches the size, optionally with a comparison operator, e.g. “>=100Gi”, “>1Ti”, “512Gi”. Without an operator the comparison is “>=”; “=” allows 1%, since a disk rarely reports an exact round size.

          • spec.storage.mounts.partitionSelector.uuid
            строка

            UUID matches the filesystem UUID exactly, ignoring case.

      • spec.storage.wipe
        булевый

        Определяет, будет ли уже размеченный диск очищен и размечен заново.

        По умолчанию false: настраивается только неразмеченный (или не соответствующий ожидаемой разметке) диск, поэтому корректная существующая разметка остаётся нетронутой, а перезагрузка никогда не приводит к потере данных.

    • spec.updatePolicy
      объект

      Определяет, как и когда обновляется узел.

      • spec.updatePolicy.mode
        строка

        Режим обновления.

        Допустимые значения: Automatic, Manual

      • spec.updatePolicy.window
        объект

        Окно обслуживания, в течение которого выполняются обновления.

        • spec.updatePolicy.window.days
          массив строк

          Дни недели, в которые действует окно.

          • Элемент массива
            строка

            Допустимые значения: Mon, Tue, Wed, Thu, Fri, Sat, Sun

        • spec.updatePolicy.window.from
          строка

          Время начала окна в формате HH:MM (24-часовой формат).

          Шаблон: ^(?:\d|[01]\d|2[0-3]):[0-5]\d$

        • spec.updatePolicy.window.to
          строка

          Время окончания окна в формате HH:MM (24-часовой формат).

          Шаблон: ^(?:\d|[01]\d|2[0-3]):[0-5]\d$

  • status
    объект

    Состояние, публикуемое агентом на узле после каждого цикла согласования.

    • status.appliedGeneration
      целочисленный

      Поколение spec, которое узел реально исполняет. Отстаёт от observedGeneration, пока прерывающая конфигурация удерживается.

      Проверка «узел сошёлся» на стороне кластера — appliedGeneration == metadata.generation.

    • status.conditions
      массив объектов

      Результаты согласования на уровне узла (ConfigurationApplied, DisruptionRequired) и подсистем-гейтов (APIEndpointsReachable, SysctlApplied).

      Результаты по каждому расширению и юниту публикуются в extensions и units — по одной записи, а не единым агрегированным условием.

      Условие описывает одну сторону текущего состояния ресурса.

      • status.conditions.lastTransitionTime
        строка

        Обязательный параметр

        lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.

      • status.conditions.message
        строка

        Обязательный параметр

        Человекочитаемое описание перехода.

        Может быть пустой строкой. lastTransitionTime: description: | Момент последнего перехода условия из одного состояния в другое.

        Если он неизвестен, допустимо указать момент изменения самого поля.

        Максимальная длина: 32768

      • status.conditions.observedGeneration
        целочисленный

        Поколение .metadata.generation, на основании которого установлено условие.

        Если значение этого параметра меньше значения .metadata.generation, условие устарело относительно текущего состояния объекта.

        Допустимые значения: 0 <= X

      • status.conditions.reason
        строка

        Обязательный параметр

        Программный идентификатор причины последнего перехода условия.

        Значение — строка в формате CamelCase. Поле не может быть пустым.

        Шаблон: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$

        Длина: 1..1024

      • status.conditions.status
        строка

        Обязательный параметр

        Статус условия: True, False или Unknown.

        Допустимые значения: True, False, Unknown

      • status.conditions.type
        строка

        Обязательный параметр

        Тип условия в формате CamelCase или foo.example.com/CamelCase.

        Шаблон: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$

        Максимальная длина: 316

    • status.extensions
      массив объектов

      Результат по каждому настроенному системному расширению (sysext) — по одной записи на расширение, чтобы было видно, какое именно расширение отказало, а не единый агрегированный статус.

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

      Результат согласования одного системного расширения.

      • status.extensions.digest
        строка

        Дайджест образа, который узел установил для этого расширения.

      • status.extensions.message
        строка

        Причина, когда state равно Failed.

      • status.extensions.name
        строка

        Обязательный параметр

        Имя расширения, совпадает с spec.extensions[].name.

      • status.extensions.state
        строка

        Обязательный параметр

        Ready — расширение установлено и подключено (merge). Pending — расширение загружается или ожидает окна обновления. Failed — отказ, причина в message.

        Допустимые значения: Ready, Pending, Failed

    • status.lastReconcileTime
      строка

      Момент, когда узел в последний раз завершил проход согласования.

      Больше ничто в статусе не устаревает: у условий есть lastTransitionTime, но он сдвигается только при смене состояния. Поэтому узел, агент которого отказал в 02:00, так и остаётся с последним записанным статусом — и ни оператор, ни механизм выката (который сочтёт такой узел сошедшимся и освободит слот под следующий) не отличат этот узел от работающего.

      Значение обновляется не на каждом проходе, а не чаще раза в несколько минут: ежеминутная запись на каждый узел не даёт ничего по сравнению с более редким heartbeat. Поэтому об устаревании стоит судить в масштабе десятков минут, а не секунд.

    • status.maintenanceToken
      строка

      Токен для аутентификации отправки конфигурации в maintenance-эндпоинт узла.

      Агент на узле генерирует его при старте и переопубликовывает здесь на каждом проходе, пока доступен API кластера. Когда узел теряет доступ к API и открывает порт :50000, оператор читает этот токен из последнего опубликованного статуса и передаёт его как Authorization: Bearer <токен> при отправке конфигурации.

      Токен даёт право отправить узлу произвольную конфигурацию, поэтому поле помечено как чувствительное: API вырезает его из ответов на get, list и watch для всех, у кого нет прав на субресурс nodeconfigs/sensitive. Узлы читают NodeConfig’и всего кластера (RBAC не умеет ограничить cluster-scoped ресурс собственным объектом узла) и этих прав намеренно НЕ получают — иначе один узел смог бы прочитать токен другого и отправить ему конфигурацию, как только тот потеряет доступ к API.

    • status.network
      объект

      Адрес, с которым узел вошёл в кластер, и интерфейс, с которого этот адрес взят.

      Пишет узел: он выбирает интерфейс по spec.internalNetworkCIDRs или по метке cluster и сообщает, чем закончился выбор. Кластер это значение только читает.

      • status.network.address
        строка

        Адрес, с которым kubelet зарегистрировал узел.

      • status.network.clusterInterface
        строка

        Интерфейс, с которого взят адрес.

    • status.observedGeneration
      целочисленный

      Последнее поколение spec, которое узел обработал — обнаружил и принял решение.

      Достигает нового поколения, как только узел его обнаружил, даже если оно ещё удерживается до одобрения и не исполняется (Подробнее — в параметре appliedGeneration).

    • status.osImage
      объект

      Состояние образа операционной системы на узле. Заполняется узлом.

      • status.osImage.attemptsLeft
        целочисленный

        Количество оставшихся попыток загрузки с проверяемым образом до автоматического отката initramfs к предыдущему образу.

      • status.osImage.digest
        строка

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

        Может отсутствовать на узлах, установленных до появления механизма сохранения дайджеста.

      • status.osImage.failedDigest
        строка

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

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

      • status.osImage.rootHash
        строка

        Корневой хеш dm-verity образа, который в данный момент используется узлом. Значение считывается из активного A/B-раздела.

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

      • status.osImage.slot
        строка

        A/B-раздел (a или b), содержащий образ, который в данный момент используется узлом.

      • status.osImage.trialDigest
        строка

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

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

    • status.phase
      строка

      Сводка по узлу.

      Возможные значения:

      Ready — узел исполняет опубликованную конфигурацию и здоров. Pending — узел здоров, но ещё не исполняет опубликованную конфигурацию: удерживает её до выдачи разрешения на disruption. Degraded — подсистема отказала, конфигурация отклонена или произошёл откат.

      Допустимые значения: Ready, Pending, Degraded

    • status.staticPods
      массив объектов

      Результаты обработки статических подов. Для каждого пода создаётся отдельная запись.

      Значение формируется заново при каждом проходе и остаётся пустым, если статические поды во время прохода не проверялись.

      Результат обработки одного статического пода.

      • status.staticPods.message
        строка

        Подробная информация об ошибке, если state имеет значение Failed.

      • status.staticPods.name
        строка

        Обязательный параметр

        Имя статического пода, соответствующее spec.staticPods[].name.

      • status.staticPods.reason
        строка

        Причина состояния Failed.

        Возможные значения:

        • ManifestRejected — узел отклонил манифест. Необходимо исправить манифест в ресурсе;
        • WriteFailed — не удалось записать файл манифеста на узел. Необходимо проверить состояние узла;
        • RemoveFailed — статический под удалён из spec, но соответствующий файл манифеста не удалось удалить с узла. Под продолжает работать.

        Допустимые значения: ManifestRejected, WriteFailed, RemoveFailed

      • status.staticPods.state
        строка

        Обязательный параметр

        Состояние обработки манифеста.

        Возможные значения:

        • Written — файл на диске соответствует манифесту из spec;
        • Failed — файл не соответствует манифесту из spec. Причина указывается в поле reason.

        Допустимые значения: Written, Failed

    • status.units
      массив объектов

      Результат по каждому управляемому systemd-юниту (containerd, kubelet и каждый юнит, поставляемый расширением) — по одной записи на юнит.

      Результат согласования одного управляемого systemd-юнита.

      • status.units.message
        строка

        Причина, когда state равно Failed.

      • status.units.name
        строка

        Обязательный параметр

        Имя systemd-юнита (например, containerd.service).

      • status.units.state
        строка

        Обязательный параметр

        Active — юнит запущен. Pending — юнит поставлен в очередь на запуск позже в этом цикле. Failed — отказ, причина в message.

        Допустимые значения: Active, Pending, Failed

NodeExtensionRequest

Short names: ner

Scope: Cluster
Version: v1alpha1

Запрашивает применение системного расширения (образа sysext, при необходимости с модулями ядра) к узлам, которые оно выбирает.

Образ адресуется так же, как registry-packages-proxy адресует любой пакет: имя, digest и необязательные репозиторий и путь. node-controller передаёт их напрямую в extension объекта NodeConfig, который скачивает агент на узле, и ничего не ищет ни в модулях, ни в ModuleSource.

  • apiVersion
    строка
  • kind
    строка
  • metadata
    объект
  • spec
    объект

    Обязательный параметр

    • spec.kernelModules
      массив объектов

      Модули, которые нужно загрузить после применения расширения.

      • spec.kernelModules.name
        строка

        Обязательный параметр

        Имя модуля ядра.

        Шаблон: ^[a-zA-Z0-9][a-zA-Z0-9_-]*$

      • spec.kernelModules.params
        массив строк

        Параметры модуля, передаваемые строками вида key=value.

    • spec.nodeGroupSelector
      объект

      Ограничивает расширение узлами перечисленных NodeGroup.

      • spec.nodeGroupSelector.matchNames
        массив строк

        Набор имён NodeGroup, к которым применяется расширение.

    • spec.nodeSelector
      объект

      Ограничивает расширение узлами с указанными лейблами.

      • spec.nodeSelector.matchLabels
        объект

        Набор лейблов, которые должен нести узел, чтобы попасть под выбор.

    • spec.sysext
      объект

      Обязательный параметр

      Определяет образ системного расширения для применения — так же, как registry-packages-proxy определяет любой пакет.

      • spec.sysext.digest
        строка

        Обязательный параметр

        Digest манифеста образа sysext.

        Шаблон: ^sha256:[a-f0-9]{64}$

      • spec.sysext.name
        строка

        Обязательный параметр

        Имя sysext: сопоставляется с extension-release внутри образа и устанавливается на узле как <name>.raw.

        Шаблон: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$

        Длина: 1..63

      • spec.sysext.path
        строка

        Путь к образу внутри репозитория (--rpp-path прокси). Если поле пустое, используется корень репозитория.

      • spec.sysext.repository
        строка

        Ключ, по которому registry-packages-proxy подбирает учётные данные (его --rpp-repository), например spec.registry.repo объекта ModuleSource. Если поле пустое, образ скачивается из основного registry кластера.

  • status
    объект
    • status.appliedNodes
      целочисленный

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

      Допустимые значения: 0 <= X

    • status.conditions
      массив объектов

      Подробности о ходе выполнения запроса.

      • status.conditions.lastTransitionTime
        строка

        Обязательный параметр

      • status.conditions.message
        строка

        Обязательный параметр

        Максимальная длина: 32768

      • status.conditions.observedGeneration
        целочисленный

        Допустимые значения: 0 <= X

      • status.conditions.reason
        строка

        Обязательный параметр

        Шаблон: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$

        Длина: 1..1024

      • status.conditions.status
        строка

        Обязательный параметр

        Допустимые значения: True, False, Unknown

      • status.conditions.type
        строка

        Обязательный параметр

        Шаблон: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$

        Максимальная длина: 316

    • status.failedNodes
      целочисленный

      Сколько выбранных узлов сообщают, что sysext отвергнут.

      Допустимые значения: 0 <= X

    • status.failureMessage
      строка

      Что узлы говорят об отказе; берётся с одного из них.

    • status.matchedNodeGroups
      массив строк

      NodeGroup, которым сейчас соответствуют селекторы.

    • status.matchedNodes
      целочисленный

      Количество узлов в выбранных группах.

      Допустимые значения: 0 <= X

    • status.observedGeneration
      целочисленный

      Поколение spec, которому соответствует текущий status.

      Допустимые значения: 0 <= X

    • status.pendingNodes
      целочисленный

      Количество выбранных узлов, которые ещё не сообщили ни об успешном применении манифеста, ни об отказе.

      Допустимые значения: 0 <= X

    • status.phase
      строка

      Ready — sysext разрешился в образ, который выбранные узлы могут скачать; Degraded — не разрешился, причина указана в condition Ready.

      Допустимые значения: Ready, Degraded

NodeGroupConfiguration

Short names: ngc

Scope: Cluster
Version: v1alpha1

Ресурс для выполнения bash-скриптов на узлах.

Подробнее в документации модуля.

  • spec
    объект

    Обязательный параметр

    • spec.bundles
      массив строк

      Обязательный параметр

      Список bundle’ов, для которых будет выполняться скрипт. Для выбора всех bundle’ов нужно указать '*'.

      Примеры:

      bundles:
      - ubuntu-lts
      - centos-7
      
      bundles:
      - ubuntu-lts
      
      bundles:
      - "*"
      
      • Элемент массива
        строка

        Допустимые значения: ubuntu-lts, centos, debian, redos, rosa, astra, altlinux, opensuse, *

    • spec.content
      строка

      Обязательный параметр

      Содержимое шага конфигурации в виде bash-скрипта.

      Для генерации скрипта возможно использовать Go Template.

      Получить список параметров, доступных для использования в шаблонах, можно из секрета bashible-apiserver-context:

      d8 k -n d8-cloud-instance-manager get secrets bashible-apiserver-context -o jsonpath='{.data.input\.yaml}'| base64 -d
      

      Пример:

      {{- range .nodeUsers }}
      echo 'Tuning environment for user {{ .name }}'
      # Some code for tuning user environment
      {{- end }}
      

      Также в скрипте допустимо использовать подготовленные команды bashbooster. Например:

      bb-event-on 'bb-package-installed' 'post-install'
      post-install() {
        bb-log-info "Setting reboot flag due to kernel was updated"
        bb-flag-set reboot
      }
      

      Пример использования параметров proxy, указанных в ресурсе ClusterConfiguration:

      bb-set-proxy
      curl -I https://google.com
      bb-unset-proxy
      
      test-function-with-proxy() {
        bb-set-proxy
        trap bb-unset-proxy RETURN
        curl -I https://google.com
      }
      
      test-function-with-proxy
      
    • spec.nodeGroups
      массив строк

      Обязательный параметр

      Список NodeGroup, к которым нужно применять шаг конфигурации. Для выбора всех NodeGroups нужно указать ‘*’.

      Примеры:

      nodeGroups:
      - master
      - worker
      
      nodeGroups:
      - worker
      
      nodeGroups:
      - "*"
      
    • spec.weight
      целочисленный

      Очередность выполнения шага конфигурации.

      По умолчанию: 100

NodeOperation

Short names: nop

Scope: Cluster
Version: v1alpha1

Описывает операцию над узлом, прерывающую его работу (disruptive-операцию): перезагрузку, drain рабочей нагрузки или разрешение, которое нужно узлу, чтобы применить конфигурацию, применение которой требует прерывания работы узла.

Операция — это запись о намерении, а не переключатель: она создаётся один раз, проводится node-manager и агентом на узле через свои фазы и сохраняется после завершения как история того, что делали с узлом и почему. Изменение spec существующей операции отклоняется — создайте новую, при необходимости.

Через операции координируются disruptive-действия на узлах NodeGroup с systemType: Immutable. Этот же ресурс доступен оператору, которому нужно вручную перезагрузить узел или выполнить на нём drain.

  • apiVersion
    строка
  • kind
    строка
  • metadata
    объект
  • spec
    объект

    Обязательный параметр

    • spec.configGeneration
      целочисленный

      Ревизия NodeConfig узла, на которую выдаётся разрешение (.metadata.generation объекта NodeConfig).

      Разрешение намеренно узкое: оно санкционирует прерывание работы узла, необходимое одной конкретной конфигурации, поэтому следующая опубликованная конфигурация запросит разрешение заново. Имеет смысл только для ApproveDisruption.

      Допустимые значения: 1 <= X

    • spec.drain
      объект

      Как убирать рабочую нагрузку с узла перед тем, как прервать его работу.

      Drain выполняет отдельная операция типа Drain, которую эта операция создаёт для себя и которой владеет. За такой операцией можно наблюдать, как за любой другой, и удаляется она вместе с родительской.

      • spec.drain.skip
        булевый

        Прервать работу узла, не выполняя drain.

        Нагрузка в этом случае прерывается вместе с узлом, а не переносится, поэтому параметр предназначен для узлов, поды которых переносить нельзя: группа из одного узла или узел с единственной репликой чего-то непереносимого.

        По умолчанию: false

    • spec.nodeName
      строка

      Обязательный параметр

      Имя узла, к которому относится операция.

      Шаблон: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$

      Длина: 1..253

    • spec.type
      строка

      Обязательный параметр

      Операция, выполняемая над узлом.

      Возможные значения:

      • Reboot — перезагрузить узел.
      • Drain — выполнить drain узла и оставить его недоступным для планировщика. Операция завершается, как только нагрузка с узла удалена. Узел остаётся вне планировщика, пока его не вернёт оператор.
      • ApproveDisruption — разрешить узлу применить конфигурацию, применение которой прерывает его работу (перезапуск kubelet или container runtime, пересборка слоя системных расширений, смена образа системы).

      Операцию ApproveDisruption обычно создаёт node-manager в ответ на запрос узла. Остальные две предназначены для оператора.

      Допустимые значения: Reboot, Drain, ApproveDisruption

  • status
    объект
    • status.conditions
      массив объектов

      Подробности о ходе выполнения операции.

      • status.conditions.lastTransitionTime
        строка

        Обязательный параметр

      • status.conditions.message
        строка

        Обязательный параметр

        Максимальная длина: 32768

      • status.conditions.observedGeneration
        целочисленный

        Допустимые значения: 0 <= X

      • status.conditions.reason
        строка

        Обязательный параметр

        Шаблон: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$

        Длина: 1..1024

      • status.conditions.status
        строка

        Обязательный параметр

        Допустимые значения: True, False, Unknown

      • status.conditions.type
        строка

        Обязательный параметр

        Шаблон: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$

        Максимальная длина: 316

    • status.drainDeadline
      строка

      Момент, к которому должен завершиться drain, запрошенный этой операцией.

      Значение фиксируется в момент запроса: берётся nodeDrainTimeoutSecond группы, каким он был тогда, — именно с этой границей начал работать контроллер drain. Если вычислять границу заново, изменение NodeGroup оборвёт уже идущий drain.

    • status.finishedAt
      строка

      Момент перехода операции в финальную фазу.

      Завершённая операция хранится как запись о том, что было сделано с узлом, и удаляется через сутки после завершения.

    • status.nodeWasUnschedulable
      булевый

      Был ли узел уже недоступен для планировщика в момент, когда операция до него дошла.

      По завершении операции узлу возвращается именно это значение, а не «доступен» — чтобы операция без уведомления не отменила cordon, установленный оператором вручную.

    • status.phase
      строка

      Текущая фаза операции.

      Возможные значения:

      • Pending — операция поставлена в очередь, node-manager ещё не начал её выполнять.
      • InProgress — узел подготовлен (drain выполнен, если не был пропущен) и выполняет операцию.
      • Completed — операция прошла успешно.
      • Failed — операция завершилась неудачно. За подробностями обратитесь к полю conditions и событиям.

      Допустимые значения: Pending, InProgress, Completed, Failed

    • status.startedAt
      строка

      Момент передачи операции узлу.

      От него отсчитывается ожидание ответа узла.

NodeStaticPodRequest

Short names: nspr

Scope: Cluster
Version: v1alpha1

Ресурс для запуска статического пода на выбранных узлах без участия планировщика.

Kubelet запускает такой под на основе манифеста на диске, поэтому под работает до того, как отвечает API-сервер, и до того, как запущен CNI. Это позволяет использовать статический под для компонентов, от которых зависит загрузка образов контейнеров.

Node-controller добавляет манифест в spec.staticPods ресурса NodeConfig каждого подходящего узла и отслеживает результаты его применения на узлах.

Ресурс содержит только манифест пода. На узле обеспечивается наличие образа в containerd и файла манифеста на диске. Остальные необходимые ресурсы под должен получать самостоятельно. Например, сертификаты выпускаются самим подом, kubeconfig — используется с узла, а каталоги для хранения состояния монтируются через hostPath с типом DirectoryOrCreate.

Пользователь с правами на создание NodeStaticPodRequest может запускать произвольные манифесты с правами root на всех выбранных узлах. По умолчанию права на создание таких ресурсов есть только у Deckhouse Platform.

  • apiVersion
    строка
  • kind
    строка
  • metadata
    объект
  • spec
    объект

    Обязательный параметр

    • spec.manifest
      строка

      Обязательный параметр

      Полный манифест пода.

      Поля metadata.name и metadata.namespace не должны быть пустыми и не зависят от имени ресурса NodeStaticPodRequest. Имя ресурса используется как имя файла манифеста на узле, а имя зеркального пода kubelet определяет по манифесту.

      При записи манифеста на диск подстрока $MY_IP заменяется на IP-адрес узла, так же как в манифестах компонентов control plane.

      Несколько ресурсов NodeStaticPodRequest не могут определять под с одинаковыми metadata.namespace и metadata.name. При обнаружении конфликта ресурс, созданный позднее, отклоняется. В состоянии Ready для него указывается причина Conflict. Таким образом, выбор применяемого манифеста не зависит от порядка записей в NodeConfig.

      Максимальный размер манифеста — 32 КиБ. На одном узле может быть запущено не более 16 статических подов, определённых с помощью NodeStaticPodRequest. Итоговый NodeConfig не должен превышать ограничение API-сервера на размер запроса.

      Длина: 1..32768

    • spec.nodeGroupSelector
      объект

      Ограничивает под узлами перечисленных NodeGroup.

      Если не указана ни одна группа, выбираются все NodeGroup с systemType: Immutable. Для таких групп агент узла записывает манифест из NodeConfig соответствующего узла. NodeGroup, использующие bashible, не выбираются, поскольку для них NodeConfig не используется.

      • spec.nodeGroupSelector.matchNames
        массив строк

        Набор имён NodeGroup, на которых запускается под.

  • status
    объект
    • status.appliedNodes
      целочисленный

      Количество выбранных узлов, которые сообщили об успешной записи манифеста.

      Допустимые значения: 0 <= X

    • status.conditions
      массив объектов

      Подробная информация о состоянии применения статического пода.

      • status.conditions.lastTransitionTime
        строка

        Обязательный параметр

      • status.conditions.message
        строка

        Обязательный параметр

        Максимальная длина: 32768

      • status.conditions.observedGeneration
        целочисленный

        Допустимые значения: 0 <= X

      • status.conditions.reason
        строка

        Обязательный параметр

        Шаблон: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$

        Длина: 1..1024

      • status.conditions.status
        строка

        Обязательный параметр

        Допустимые значения: True, False, Unknown

      • status.conditions.type
        строка

        Обязательный параметр

        Шаблон: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$

        Максимальная длина: 316

    • status.failedNodes
      целочисленный

      Количество выбранных узлов, которые сообщили об отказе применить манифест.

      Допустимые значения: 0 <= X

    • status.failureMessage
      строка

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

    • status.matchedNodeGroups
      массив строк

      NodeGroup, соответствующие текущему селектору.

    • status.matchedNodes
      целочисленный

      Количество узлов в выбранных группах.

      Допустимые значения: 0 <= X

    • status.observedGeneration
      целочисленный

      Поколение spec, которому соответствует текущий status.

      Допустимые значения: 0 <= X

    • status.pendingNodes
      целочисленный

      Количество выбранных узлов, которые ещё не сообщили ни об успешном применении манифеста, ни об отказе.

      Допустимые значения: 0 <= X

    • status.phase
      строка

      Текущая фаза применения статического пода.

      Возможные значения:

      • Ready — манифест успешно обработан и принят выбранными узлами;
      • Degraded — манифест не может быть применён. Причина указывается в состоянии Ready: InvalidName, ReservedName, InvalidManifest, Conflict, LimitExceeded или RefusedByNodes.

      InvalidName означает, что имя ресурса NodeStaticPodRequest не соответствует формату DNS-метки длиной не более 63 символов, необходимому для использования имени в конфигурации узла.

      ReservedName означает, что имя ресурса NodeStaticPodRequest или сочетание metadata.namespace и metadata.name пода из манифеста уже используется манифестом, создаваемым агентом узла или шагом bashible.

      LimitExceeded означает, что хотя бы для одной из выбранных NodeGroup превышен лимит в 16 статических подов. В этом случае данный ресурс, как один из созданных позднее, не добавляется в конфигурацию узлов.

      Допустимые значения: Ready, Degraded

NodeUser

Scope: Cluster

  • v1
  • v1alpha1

Описывает Linux-пользователей, которые будут созданы на всех узлах.

Домашний каталог пользователя создается в директории /home/deckhouse/.

  • spec
    объект

    Обязательный параметр

    • spec.extraGroups
      массив строк

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

      Примеры:

      extraGroups:
      - docker
      
      extraGroups:
      - docker
      - ftp
      
    • spec.isSudoer
      булевый

      Определяет, будет ли пользователю разрешено sudo.

      По умолчанию: false

      Пример:

      isSudoer: true
      
    • spec.nodeGroups
      массив строк

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

      По умолчанию: ["*"]

      Примеры:

      nodeGroups:
      - master
      - worker
      
      nodeGroups:
      - worker
      
      nodeGroups:
      - "*"
      
    • spec.passwordHash
      строка

      Хеш пароля пользователя.

      Формат соответствует хешам паролей, содержащихся в /etc/shadow. Его можно получить с помощью команды openssl passwd -6.

      Пример:

      passwordHash: "$2a$10$F9ey7zW.sVliT224RFxpWeMsgzO.D9YRG54a8T36/K2MCiT41nzmC"
      
    • spec.sshPublicKey
      Параметр устарел
      строка

      Публичный SSH-ключ пользователя.

      Обязательно должен быть указан либо sshPublicKey, либо sshPublicKeys.

      Пример:

      sshPublicKey: ssh-rsa AAABBB
      
    • spec.sshPublicKeys
      массив строк

      Массив публичных SSH-ключей пользователя.

      Обязательно должен быть указан либо sshPublicKey, либо sshPublicKeys.

      Пример:

      sshPublicKeys:
      - ssh-rsa AAABBB
      - cert-authority,principals="name" ssh-rsa BBBCCC
      
    • spec.uid
      число

      Обязательный параметр

      User ID пользователя на узлах.

      Рекомендуем использовать значения >= 1100 во избежание возможных конфликтов с пользователями, созданными вручную.

      Неизменяемый в течение жизни ресурса параметр.

      Допустимые значения: 1001 <= X

      Пример:

      uid: 1100
      
  • status
    объект

    Информация о статусе создания пользователя

    • status.errors
      объект

      Список ошибок создания пользователя на каждом узле

Устаревший ресурс. Поддержка ресурса может быть исключена в следующих версиях.

Описывает Linux-пользователей, которые будут созданы на всех узлах.

Домашний каталог пользователя создается в директории /home/deckhouse/.

  • spec
    объект

    Обязательный параметр

    • spec.extraGroups
      массив строк

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

      Примеры:

      extraGroups:
      - docker
      
      extraGroups:
      - docker
      - ftp
      
    • spec.isSudoer
      булевый

      Определяет, будет ли пользователю разрешено sudo.

      По умолчанию: false

      Пример:

      isSudoer: true
      
    • spec.nodeGroups
      массив строк

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

      По умолчанию: ["*"]

      Примеры:

      nodeGroups:
      - master
      - worker
      
      nodeGroups:
      - worker
      
      nodeGroups:
      - "*"
      
    • spec.passwordHash
      строка

      Хеш пароля пользователя.

      Формат соответствует хешам паролей, содержащихся в /etc/shadow. Его можно получить с помощью команды openssl passwd -6.

      Пример:

      passwordHash: "$2a$10$F9ey7zW.sVliT224RFxpWeMsgzO.D9YRG54a8T36/K2MCiT41nzmC"
      
    • spec.sshPublicKey
      Параметр устарел
      строка

      Публичный SSH-ключ пользователя.

      Обязательно должен быть указан либо sshPublicKey, либо sshPublicKeys.

      Пример:

      sshPublicKey: ssh-rsa AAABBB
      
    • spec.sshPublicKeys
      массив строк

      Массив публичных SSH-ключей пользователя.

      Обязательно должен быть указан либо sshPublicKey, либо sshPublicKeys.

      Пример:

      sshPublicKeys:
      - ssh-rsa AAABBB
      - cert-authority,principals="name" ssh-rsa BBBCCC
      
    • spec.uid
      число

      Обязательный параметр

      User ID пользователя на узлах.

      Рекомендуем использовать значения >= 1100 во избежание возможных конфликтов с пользователями, созданными вручную.

      Неизменяемый в течение жизни ресурса параметр.

      Допустимые значения: 1001 <= X

      Пример:

      uid: 1100
      

SSHCredentials

Scope: Cluster

  • v1alpha2
  • v1alpha1

Содержит данные, необходимые Cluster API Provider Static (CAPS) для подключения по протоколу SSH. CAPS подключается к серверу (виртуальной машине), описанному в ресурсе StaticInstance для управления его состоянием.

Ссылка на этот ресурс указывается в параметре credentialsRef ресурса StaticInstance.

  • apiVersion
    строка

    Версия API объекта.

  • kind
    строка

    Тип объекта.

  • metadata
    объект
  • spec
    объект

    Желаемое состояние объекта SSHCredentials.

    • spec.privateSSHKey
      строка

      Закрытый ключ SSH в формате PEM, закодированный в Base64.

      Если у пользователя нет прав на просмотр конфиденциальных данных SSHCredentials, API возвращает <omitted> вместо фактического значения.

    • spec.sshExtraArgs
      строка

      Список дополнительных параметров для SSH-клиента (openssh).

      Примеры:

      sshExtraArgs: "-vvv"
      
      sshExtraArgs: "-c chacha20-poly1305@openssh.com"
      
      sshExtraArgs: "-c aes256-gcm@openssh.com"
      
      sshExtraArgs: "-m umac-64-etm@openssh.com"
      
      sshExtraArgs: "-m hmac-sha2-512-etm@openssh.com"
      
    • spec.sshPort
      целочисленный

      Порт для подключения по SSH.

      По умолчанию: 22

      Допустимые значения: 1 <= X <= 65535

    • spec.sudoPasswordEncoded
      строка

      Пароль пользователя для использования sudo, закодированный в Base64.

      Если у пользователя нет прав на просмотр конфиденциальных данных SSHCredentials, API возвращает <omitted> вместо фактического значения.

    • spec.user
      строка

      Обязательный параметр

      Имя пользователя для подключения по SSH.

Содержит данные, необходимые Cluster API Provider Static (CAPS) для подключения по протоколу SSH. CAPS подключается к серверу (виртуальной машине), описанному в ресурсе StaticInstance для управления его состоянием.

Ссылка на этот ресурс указывается в параметре credentialsRef ресурса StaticInstance.

  • apiVersion
    строка

    Версия API объекта.

  • kind
    строка

    Тип объекта.

  • metadata
    объект
  • spec
    объект

    Желаемое состояние объекта SSHCredentials.

    • spec.privateSSHKey
      строка

      Закрытый ключ SSH в формате PEM, закодированный в Base64.

      Если у пользователя нет прав на просмотр конфиденциальных данных SSHCredentials, API возвращает <omitted> вместо фактического значения.

    • spec.sshExtraArgs
      строка

      Список дополнительных параметров для SSH-клиента (openssh).

      Примеры:

      sshExtraArgs: "-vvv"
      
      sshExtraArgs: "-c chacha20-poly1305@openssh.com"
      
      sshExtraArgs: "-c aes256-gcm@openssh.com"
      
      sshExtraArgs: "-m umac-64-etm@openssh.com"
      
      sshExtraArgs: "-m hmac-sha2-512-etm@openssh.com"
      
    • spec.sshPort
      целочисленный

      Порт для подключения по SSH.

      По умолчанию: 22

      Допустимые значения: 1 <= X <= 65535

    • spec.sudoPassword
      строка

      Пароль пользователя для использования sudo.

      Если у пользователя нет прав на просмотр конфиденциальных данных SSHCredentials, API возвращает <omitted> вместо фактического значения.

    • spec.user
      строка

      Обязательный параметр

      Имя пользователя для подключения по SSH.

StaticInstance

Scope: Cluster

  • v1alpha2
  • v1alpha1

Описывает объект машины для Cluster API Provider Static.

  • apiVersion
    строка

    Версия API объекта.

  • kind
    строка

    Тип объекта.

  • metadata
    объект
  • spec
    объект

    Желаемое состояние объекта StaticInstance.

    • spec.address
      строка

      Обязательный параметр

      IP-адрес сервера (виртуальной машины) для подключения.

      Шаблон: ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$

    • spec.credentialsRef
      объект

      Обязательный параметр

      Ссылка на ресурс SSHCredentials.

      • spec.credentialsRef.apiVersion
        строка

        Версия API ресурса.

      • spec.credentialsRef.fieldPath
        строка

        Если речь идет о части объекта, а не о целом объекте, эта строка должна содержать действительное выражение для доступа к полю JSON/Go, например desiredState.manifest.containers[2].

        Например, если ссылка на объект относится к контейнеру внутри пода, этот параметр будет иметь значение вида: spec.containers{name} (где name — имя контейнера, который вызвал событие) или, если имя контейнера не указано, — spec.containers[2] (контейнер с индексом 2 в этом поде). Этот синтаксис выбран только для того, чтобы иметь четко определенный способ ссылки на часть объекта.

      • spec.credentialsRef.kind
        строка

        Kind ресурса.

      • spec.credentialsRef.name
        строка

        Имя ресурса.

      • spec.credentialsRef.namespace
        строка

        Неймспейс ресурса.

        Подробнее: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/

      • spec.credentialsRef.resourceVersion
        строка

        Конкретная версия ресурса, на которую ссылается данная ссылка, если таковая имеется.

        Подробнее: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency

      • spec.credentialsRef.uid
        строка
  • status
    объект

    StaticInstanceStatus defines the observed state of StaticInstance.

    • status.conditions
      массив объектов

      Conditions defines current service state of the StaticInstance.

      Condition contains details for one aspect of the current state of this API Resource.

      • status.conditions.lastTransitionTime
        строка

        Обязательный параметр

        lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.

      • status.conditions.message
        строка

        Обязательный параметр

        message is a human readable message indicating details about the transition. This may be an empty string.

        Максимальная длина: 32768

      • status.conditions.observedGeneration
        целочисленный

        observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.

        Допустимые значения: 0 <= X

      • status.conditions.reason
        строка

        Обязательный параметр

        reason contains a programmatic identifier indicating the reason for the condition’s last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.

        Шаблон: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$

        Длина: 1..1024

      • status.conditions.status
        строка

        Обязательный параметр

        status of the condition, one of True, False, Unknown.

        Допустимые значения: True, False, Unknown

      • status.conditions.type
        строка

        Обязательный параметр

        type of condition in CamelCase or in foo.example.com/CamelCase.

        Шаблон: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$

        Максимальная длина: 316

    • status.currentStatus
      объект
      • status.currentStatus.lastUpdateTime
        строка
      • status.currentStatus.phase
        строка

        Допустимые значения: Error, Pending, Bootstrapping, Running, Cleaning

    • status.machineRef
      объект

      The reference to the StaticMachine object.

      • status.machineRef.apiVersion
        строка

        API version of the referent.

      • status.machineRef.fieldPath
        строка

        If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: “spec.containers{name}” (where “name” refers to the name of the container that triggered the event) or if no container name is specified “spec.containers[2]” (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.

      • status.machineRef.kind
        строка

        Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

      • status.machineRef.name
        строка

        Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

      • status.machineRef.namespace
        строка

        Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/

      • status.machineRef.resourceVersion
        строка

        Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency

      • status.machineRef.uid
        строка

        UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids

    • status.nodeRef
      объект

      The reference to the Node object.

      • status.nodeRef.apiVersion
        строка

        API version of the referent.

      • status.nodeRef.fieldPath
        строка

        If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: “spec.containers{name}” (where “name” refers to the name of the container that triggered the event) or if no container name is specified “spec.containers[2]” (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.

      • status.nodeRef.kind
        строка

        Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

      • status.nodeRef.name
        строка

        Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

      • status.nodeRef.namespace
        строка

        Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/

      • status.nodeRef.resourceVersion
        строка

        Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency

      • status.nodeRef.uid
        строка

        UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids

Описывает объект машины для Cluster API Provider Static.

  • apiVersion
    строка

    Версия API объекта.

  • kind
    строка

    Тип объекта.

  • metadata
    объект
  • spec
    объект

    Желаемое состояние объекта StaticInstance.

    • spec.address
      строка

      Обязательный параметр

      IP-адрес сервера (виртуальной машины) для подключения.

      Шаблон: ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$

    • spec.credentialsRef
      объект

      Обязательный параметр

      Ссылка на ресурс SSHCredentials.

      • spec.credentialsRef.apiVersion
        строка

        Версия API ресурса.

      • spec.credentialsRef.fieldPath
        строка

        Если речь идет о части объекта, а не о целом объекте, эта строка должна содержать действительное выражение для доступа к полю JSON/Go, например desiredState.manifest.containers[2].

        Например, если ссылка на объект относится к контейнеру внутри пода, этот параметр будет иметь значение вида: spec.containers{name} (где name — имя контейнера, который вызвал событие) или, если имя контейнера не указано, — spec.containers[2] (контейнер с индексом 2 в этом поде). Этот синтаксис выбран только для того, чтобы иметь четко определенный способ ссылки на часть объекта.

      • spec.credentialsRef.kind
        строка

        Kind ресурса.

      • spec.credentialsRef.name
        строка

        Имя ресурса.

      • spec.credentialsRef.namespace
        строка

        Неймспейс ресурса.

        Подробнее: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/

      • spec.credentialsRef.resourceVersion
        строка

        Конкретная версия ресурса, на которую ссылается данная ссылка, если таковая имеется.

        Подробнее: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency

      • spec.credentialsRef.uid
        строка
  • status
    объект

    StaticInstanceStatus defines the observed state of StaticInstance.

    • status.conditions
      массив объектов

      Conditions defines current service state of the StaticInstance.

      Condition contains details for one aspect of the current state of this API Resource.

      • status.conditions.lastTransitionTime
        строка

        Обязательный параметр

        lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.

      • status.conditions.message
        строка

        Обязательный параметр

        message is a human readable message indicating details about the transition. This may be an empty string.

        Максимальная длина: 32768

      • status.conditions.observedGeneration
        целочисленный

        observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.

        Допустимые значения: 0 <= X

      • status.conditions.reason
        строка

        Обязательный параметр

        reason contains a programmatic identifier indicating the reason for the condition’s last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.

        Шаблон: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$

        Длина: 1..1024

      • status.conditions.status
        строка

        Обязательный параметр

        status of the condition, one of True, False, Unknown.

        Допустимые значения: True, False, Unknown

      • status.conditions.type
        строка

        Обязательный параметр

        type of condition in CamelCase or in foo.example.com/CamelCase.

        Шаблон: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$

        Максимальная длина: 316

    • status.currentStatus
      объект
      • status.currentStatus.lastUpdateTime
        строка
      • status.currentStatus.phase
        строка

        Допустимые значения: Error, Pending, Bootstrapping, Running, Cleaning

    • status.machineRef
      объект

      The reference to the StaticMachine object.

      • status.machineRef.apiVersion
        строка

        API version of the referent.

      • status.machineRef.fieldPath
        строка

        If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: “spec.containers{name}” (where “name” refers to the name of the container that triggered the event) or if no container name is specified “spec.containers[2]” (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.

      • status.machineRef.kind
        строка

        Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

      • status.machineRef.name
        строка

        Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

      • status.machineRef.namespace
        строка

        Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/

      • status.machineRef.resourceVersion
        строка

        Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency

      • status.machineRef.uid
        строка

        UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids

    • status.nodeRef
      объект

      The reference to the Node object.

      • status.nodeRef.apiVersion
        строка

        API version of the referent.

      • status.nodeRef.fieldPath
        строка

        If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: “spec.containers{name}” (where “name” refers to the name of the container that triggered the event) or if no container name is specified “spec.containers[2]” (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object.

      • status.nodeRef.kind
        строка

        Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

      • status.nodeRef.name
        строка

        Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

      • status.nodeRef.namespace
        строка

        Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/

      • status.nodeRef.resourceVersion
        строка

        Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency

      • status.nodeRef.uid
        строка

        UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids