Instance
Scope: Cluster
Version: v1alpha1
Описывает независимый от реализации объект эфемерной машины.
InstanceTypesCatalog
Scope: Cluster
Version: v1alpha1
Contains information about discovered data from cloud.
- массив объектовinstanceTypes
Обязательный параметр
List of available instance types.
- строка или числоinstanceTypes.cpu
Обязательный параметр
The number of CPUs for the instance type.
Шаблон:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - строка или числоinstanceTypes.memory
Обязательный параметр
The amount of RAM a instance type has.
Шаблон:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - строкаinstanceTypes.name
Instance type name.
- строка или числоinstanceTypes.rootDisk
Root disk size.
Шаблон:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
NodeFeature
Scope: Namespaced
Version: v1alpha1
NodeFeature resource holds the features discovered for one node in the cluster.
- строкаapiVersion
APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
- строкаkind
Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
- объектmetadata
- объектspec
Обязательный параметр
Specification of the NodeFeature, containing features discovered for a node.
- объектspec.features
Features is the full “raw” features data that has been discovered.
- объектspec.features.attributes
Attributes contains all the attribute-type features of the node.
- объектspec.features.flags
Flags contains all the flag-type features of the node.
- объектspec.features.instances
Instances contains all the instance-type features of the node.
- объектspec.labels
Labels is the set of node labels that are requested to be created.
NodeGroup
Scope: Cluster
Описывает 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 будет выбирать сначала группы узлов с установленным бОльшим приоритетом. Если существует несколько групп узлов с одинаковым приоритетом, группа будет выбрана из них случайным образом.
Использование приоритетов может быть удобно, например, для предпочтения заказа более дешевых узлов (например, 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 для этой группы.
- строкаspec.fencing.mode
Обязательный параметр
Fencing поддерживает единственный режим работы:
Watchdog. В этом режиме используется модуль ядра watchdog (сторожевой таймер).Реализация Watchdog включает в себя следующие компоненты:
-
Fencing-agent — DaemonSet, который разворачивается на определенной группе узлов (NodeGroup).
После запуска агент активирует Watchdog и устанавливает специальную метку
node-manager.deckhouse.io/fencing-enabledна узле, где он функционирует. Агент регулярно проверяет доступность Kubernetes API. Если API доступен, агент отправляет сигнал в Watchdog, что сбрасывает сторожевой таймер. Также агент отслеживает специальные метки обслуживания на узле и, в зависимости от их наличия, включает или отключает Watchdog.В качестве Watchdog используется модуль ядра softdog с параметрами
soft_margin=60иsoft_panic=1. Это означает, что время таймаута сторожевого таймера составляет 60 секунд. По истечении этого времени происходит kernel-panic, и узел остается в этом состоянии до тех пор, пока пользователь не выполнит его перезагрузку. -
Fencing-controller — контроллер, который отслеживает все узлы с установленной меткой
node-manager.deckhouse.io/fencing-enabled. Если какой-либо из узлов становится недоступным на протяжении более 60 секунд, контроллер удаляет все поды с этого узла и затем удаляет сам узел.
Допустимые значения:
Watchdog -
- объектspec.gpu
Доступно в редакциях: EE
Параметры GPU.
- объектspec.gpu.exclusive
Режим без разделения GPU.
- объектspec.gpu.mig
Параметры для стратегии
MIG.- строкаspec.gpu.mig.partedConfig
Имя используемой конфигурация MIG.
По умолчанию:
all-1g.5gbШаблон:
^all-(balanced|disabled|[0-9]g[.][0-9]{1,2}gb([.]me)?)$
- строка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.По умолчанию:
110 - объект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
Включение использования менеджера топологий.
По умолчанию:
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
Настройка фильтра меток (label) по ресурсам
staticInstances.Если указаны одновременно
matchExpressionsиmatchLabels, учитываются оба фильтра (операцияИ).Пустое значение
labelSelectorсоответствует всем объектам. Нулевое — никаким.- массив объектов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]*%?$
Описывает 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.По умолчанию:
110 - строка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
Описывает 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.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.По умолчанию:
110 - строкаspec.kubelet.rootDir
Путь к каталогу для файлов kubelet (volume mounts и т. д.).
По умолчанию:
/var/lib/kubelet
- строкаspec.kubernetesVersion
Желаемая минорная версия Kubernetes.
По умолчанию соответствует глобально выбранной для кластера версии (см. документацию по установке) или, если таковая не определена, текущей версии
control plane.Допустимые значения:
1.29,1.30,1.31,1.32,1.33Пример:
kubernetesVersion: '1.30' - объект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 подсети.
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
Описывает 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
Устаревший ресурс. Поддержка ресурса может быть исключена в следующих версиях.
Описывает 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
Содержит данные, необходимые 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
Описывает объект машины для 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.kind
Kind ресурса.
- строкаspec.credentialsRef.name
Имя ресурса.
Описывает объект машины для 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.kind
Kind ресурса.
- строкаspec.credentialsRef.name
Имя ресурса.