Deckhouse Kubernetes Platform устанавливает CRD, но не удаляет их при отключении модуля. Если вам больше не нужны созданные CRD, удалите их.
Стадия жизненного цикла модуля: General Availability
Instance
Scope: Cluster
- v1alpha2
- v1alpha1
Instance описывает полный жизненный цикл сервера в Deckhouse Kubernetes 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.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
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
Тип объекта (например,
OpenStackInstanceClass). Тип объекта указан в документации соответствующего модуля облачного провайдера.Допустимые значения:
OpenStackInstanceClass,GCPInstanceClass,VsphereInstanceClass,AWSInstanceClass,YandexInstanceClass,AzureInstanceClass,VCDInstanceClass,ZvirtInstanceClass,DynamixInstanceClass,HuaweiCloudInstanceClass,DVPInstanceClass - строка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 считается устаревшей.
Допустимые значения:
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
Выгон (draining) подов с узла перед выдачей разрешения на disruption.
Внимание! Данная настройка игнорируется (узлам будет выдано разрешение без предварительного выгона подов с узлов):
- для nodeGroup
masterс единственным узлом; - для выделенного под запуск Deckhouse узла, если этот узел в группе узлов единственно рабочий (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
Доступно в редакциях: 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.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 на узле.
- объект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.staticInstances
Параметры настройки машин статических узлов кластера.
- целочисленныйspec.staticInstances.count
Количество узлов
staticInstances, которые нужно автоматически настроить и включить в кластер. В NodeGroup с типами Static и CloudStatic вы можете явно указать количество узлов в этом параметре. Это позволяет задать ожидаемое количество узлов — DKP использует это значение для контроля состояния и автоматизации.По умолчанию:
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.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
Тип объекта (например,
OpenStackInstanceClass). Тип объекта указан в документации соответствующего модуля облачного провайдера.Допустимые значения:
OpenStackInstanceClass,GCPInstanceClass,VsphereInstanceClass,AWSInstanceClass,YandexInstanceClass,AzureInstanceClass,VCDInstanceClass,ZvirtInstanceClass,DynamixInstanceClass,HuaweiCloudInstanceClass,DVPInstanceClass - строка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
Выгон (draining) подов с узла перед выдачей разрешения на disruption.
Внимание! Данная настройка игнорируется (узлам будет выдано разрешение без предварительного выгона подов с узлов):
- для nodeGroup
masterс единственным узлом; - для выделенного под запуск Deckhouse узла, если этот узел в группе узлов единственно рабочий (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.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
- объект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
Тип объекта (например,
OpenStackInstanceClass). Тип объекта указан в документации соответствующего модуля облачного провайдера.Допустимые значения:
OpenStackInstanceClass,GCPInstanceClass,VsphereInstanceClass,AWSInstanceClass,YandexInstanceClass,AzureInstanceClass,VCDInstanceClass,ZvirtInstanceClass,DynamixInstanceClass,HuaweiCloudInstanceClass,DVPInstanceClass - строка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
Выгон (draining) подов с узла перед выдачей разрешения на disruption.
Внимание. Данная настройка игнорируется (узлам будет выдано разрешение без предварительного выгона подов с узлов):
- для nodeGroup
masterс единственным узлом; - для выделенного под запуск Deckhouse узла, если этот узел в группе узлов единственно рабочий (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.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.static
Параметры статического узла.
- массив строкspec.static.internalNetworkCIDRs
CIDR подсети.
- объект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
Количество узлов в актуальном состоянии.
NodeGroupConfiguration
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
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.
- строка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. - строкаspec.user
Обязательный параметр
Имя пользователя для подключения по SSH.
Содержит данные, необходимые Cluster API Provider Static (CAPS) для подключения по протоколу SSH. CAPS подключается к серверу (виртуальной машине), описанному в ресурсе StaticInstance для управления его состоянием.
Ссылка на этот ресурс указывается в параметре credentialsRef ресурса StaticInstance.
- строкаapiVersion
Версия API объекта.
- строкаkind
Тип объекта.
- объектmetadata
- объектspec
Желаемое состояние объекта SSHCredentials.
- строкаspec.privateSSHKey
Закрытый ключ SSH в формате PEM, закодированный в Base64.
- строка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. - строка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