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 - целочисленный
Недоступное количество инстансов при 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.
Если не указан, используется значение параметра
defaultCRIClusterConfiguration.Внимание. Поддержка 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 - для nodeGroup
- массив объектовspec.disruptions.automatic.windows
Список окон disruption-обновлений узлов.
- массив строкspec.disruptions.automatic.windows.days
Дни недели, в которые применяется окно обновлений.
Примеры:
days: Mondays: 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: Mondays: 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: 2customConfigs: 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.40gbprofile: 1g.10gbprofile: 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 - целочисленный
Недоступное количество инстансов при 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 - для nodeGroup
- массив объектовspec.disruptions.automatic.windows
Список окон disruption-обновлений узлов.
- массив строкspec.disruptions.automatic.windows.days
Дни недели, в которые применяется окно обновлений.
Примеры:
days: Mondays: 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
RollingUpdatemode.- массив объектов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: Mondays: 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 - целочисленный
Максимальное количество недоступных инстансов в группе в каждой зоне во время последовательного обновления.
По умолчанию:
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
defaultCRIparameter 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 - для nodeGroup
- массив объектовspec.disruptions.automatic.windows
Список окон disruption-обновлений узлов.
- массив строкspec.disruptions.automatic.windows.days
Дни недели, в которые применяется окно обновлений.
Примеры:
days: Mondays: 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
RollingUpdatemode.- массив объектов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: Mondays: 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.dcontainerd.Возможные значения:
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.search
- массив строк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. Права на subresourcenodeconfigs/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— не разрешился, причина указана в conditionReady.Допустимые значения:
Ready,Degraded
NodeGroupConfiguration
Short names: ngc
Scope: Cluster
Version: v1alpha1
Ресурс для выполнения bash-скриптов на узлах.
Подробнее в документации модуля.
- объектspec
Обязательный параметр
- массив строкspec.bundles
Обязательный параметр
Список bundle’ов, для которых будет выполняться скрипт. Для выбора всех bundle’ов нужно указать
'*'.Примеры:
bundles: - ubuntu-lts - centos-7bundles: - ubuntu-ltsbundles: - "*"- строкаЭлемент массива
Допустимые значения:
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-proxytest-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 - workernodeGroups: - workernodeGroups: - "*" - целочисленный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: - dockerextraGroups: - docker - ftp - булевыйspec.isSudoer
Определяет, будет ли пользователю разрешено sudo.
По умолчанию:
falseПример:
isSudoer: true - массив строкspec.nodeGroups
Список NodeGroup, к которым будет применяться настройка пользователя.
По умолчанию:
["*"]Примеры:
nodeGroups: - master - workernodeGroups: - workernodeGroups: - "*" - строка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: - dockerextraGroups: - docker - ftp - булевыйspec.isSudoer
Определяет, будет ли пользователю разрешено sudo.
По умолчанию:
falseПример:
isSudoer: true - массив строкspec.nodeGroups
Список NodeGroup, к которым будет применяться настройка пользователя.
По умолчанию:
["*"]Примеры:
nodeGroups: - master - workernodeGroups: - workernodeGroups: - "*" - строка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.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
Конкретная версия ресурса, на которую ссылается данная ссылка, если таковая имеется.
- строкаspec.credentialsRef.uid
UID ресурса.
Подробнее: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
- объект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
StaticMachineobject.- строка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
Nodeobject.- строка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.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
Конкретная версия ресурса, на которую ссылается данная ссылка, если таковая имеется.
- строкаspec.credentialsRef.uid
UID ресурса.
Подробнее: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
- объект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
StaticMachineobject.- строка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
Nodeobject.- строка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