Стадия жизненного цикла модуля: Experimental
У модуля есть требования для установки
Deckhouse Kubernetes Platform устанавливает CRD, но не удаляет их при отключении модуля. Если вам больше не нужны созданные CRD, удалите их.
ElasticCluster
Scope: Cluster
Version: v1alpha1
Описывает желаемое состояние Ceph-кластера, разворачиваемого модулем sds-elastic.
Контроллер поднимает Rook CephCluster (mon/mgr/osd) поверх локального LVM-хранилища,
обнаруженного через blockDeviceSelector.
Конфигурация пулов (RBD/CephFS, стратегия репликации) описывается отдельно — в
ресурсах ElasticStorageClass, ссылающихся на этот ElasticCluster по имени.
-
объектspecЖелаемое состояние Ceph-кластера под управлением модуля sds-elastic.
-
объектspec.networkОпциональная конфигурация сети. Если не задана — Rook слушает на всех host-IP storage-узлов (host networking). При указании оба поля (
publicиcluster) должны задаваться одновременно. Поля иммутабельны.-
строкаspec.network.cluster
Обязательный параметр
CIDR кластерной подсети для репликации и heartbeat-трафика (например,10.0.1.0/24).Длина:
9..18Шаблон:
^([0-9]{1,3}\.){3}[0-9]{1,3}\/[0-9]{1,2}$ -
строкаspec.network.public
Обязательный параметр
CIDR публичной подсети для трафика клиентов (например,10.0.0.0/24).Длина:
9..18Шаблон:
^([0-9]{1,3}\.){3}[0-9]{1,3}\/[0-9]{1,2}$
-
-
объектspec.storage
Обязательный параметр
Конфигурация хранилища под OSD. Контроллер выбирает подходящие BlockDevice на подходящих узлах и для каждого устройства создаёт по одной LVMVolumeGroup, одной LVMLogicalVolume и одному локальному PersistentVolume, который становится бэкендом одного OSD.-
объектspec.storage.blockDeviceSelector
Обязательный параметр
Селектор ресурсов BlockDevice (управляемых модулем sds-node-configurator), пригодных для размещения OSD. Выбранные устройства должны находиться на узлах, подпадающих подstorage.nodeSelector, и быть свободными (consumable).-
массив объектовspec.storage.blockDeviceSelector.matchExpressionsСписок выражений label-селектора.
-
строкаspec.storage.blockDeviceSelector.matchExpressions.keyИмя ключа метки.
-
строкаspec.storage.blockDeviceSelector.matchExpressions.operatorОператор сравнения.
Допустимые значения:
In,NotIn,Exists,DoesNotExist -
массив строкspec.storage.blockDeviceSelector.matchExpressions.valuesСписок значений.
-
-
объектspec.storage.blockDeviceSelector.matchLabelsКарта label-селекторов.
-
-
объектspec.storage.nodeSelector
Обязательный параметр
Селектор узлов Kubernetes, рассматриваемых как storage-узлы. Каждый матчащийся узел запускает mon/mgr/mds (по необходимости) и OSD для каждого подходящего BlockDevice.-
массив объектовspec.storage.nodeSelector.matchExpressionsСписок выражений label-селектора.
-
строкаspec.storage.nodeSelector.matchExpressions.keyИмя ключа метки.
-
строкаspec.storage.nodeSelector.matchExpressions.operatorОператор сравнения.
Допустимые значения:
In,NotIn,Exists,DoesNotExist -
массив строкspec.storage.nodeSelector.matchExpressions.valuesСписок значений.
-
-
объектspec.storage.nodeSelector.matchLabelsКарта label-селекторов.
-
-
-
-
объектstatusТекущее состояние ресурсов, управляемых ElasticCluster.
-
объектstatus.capacityТекущая утилизация хранилища, как её видит Rook (
CephCluster.status.ceph.capacity). Заполняется после первого сбора метрик Rook.-
строкаstatus.capacity.availableСвободный raw-объём в виде Kubernetes Quantity (BinarySI). Полезный объём для клиентов меньше — зависит от репликации пулов (
available / pool.sizeдля replicated-пулов). -
строкаstatus.capacity.lastUpdatedВремя последней успешной выгрузки метрик ёмкости.
-
строкаstatus.capacity.totalОбщая raw-ёмкость кластера (сумма по всем OSD), в виде Kubernetes Quantity (BinarySI), например
500Giили1.2Ti. -
строкаstatus.capacity.usedИспользованный raw-объём (данные + метаданные + overhead Ceph) в виде Kubernetes Quantity (BinarySI), например
200Gi. -
строкаstatus.capacity.usedPercent
used / total * 100, форматированное с двумя знаками после запятой.
-
-
строкаstatus.cephFSIDFSID/UUID развёрнутого Ceph-кластера, считывается из секрета
rook-ceph-monпосле старта Rook. -
объектstatus.cephTopologyЭффективные счётчики mon/mgr, применённые контроллером к нижележащему CephCluster. Повышение монотонно (sticky): как только
ElasticStorageClassсreplication: HighRedundancyподнимает счётчики до high-availability-профиля (monCount=5,mgrCount=3), контроллер не понижает их обратно даже после удаления триггерного ESC. Чтобы пересчитать топологию принудительно, оператор может очистить это поле через status-subresource.-
строкаstatus.cephTopology.lastPromotedAtВремя последнего повышения счётчиков. Пустое значение, если кластер ни разу не выходил из стандартного профиля.
-
целочисленныйstatus.cephTopology.mgrCount
Обязательный параметр
ЭффективныйCephCluster.spec.mgr.count.Допустимые значения:
1 <= X -
целочисленныйstatus.cephTopology.monCount
Обязательный параметр
ЭффективныйCephCluster.spec.mon.count.Допустимые значения:
1 <= X -
строкаstatus.cephTopology.reasonМашинно-читаемая причина последнего решения по топологии. Известные значения:
Standard(действует профиль по умолчанию),HighRedundancyESCPresent(живой HighRedundancy-ESC требует high-availability-профиль),StickyHighWaterMark(сохранённые счётчики выше того, что требует текущий набор ESC; повышение удерживается как high-water-mark).
-
-
объектstatus.cephVersionСостояние версии Ceph. Желаемая версия зашита в образ модуля; bump модуля запускает rolling-upgrade в Rook.
-
строкаstatus.cephVersion.requestedВерсия, запрошенная контроллером (соответствует образу модуля).
-
строкаstatus.cephVersion.runningВерсия, фактически работающая в кластере; берётся из
CephCluster.status.ceph.versions. -
объектstatus.cephVersion.upgradeProgressПрогресс по этапам идущего rolling-upgrade.
-
целочисленныйstatus.cephVersion.upgradeProgress.completedСколько демонов на этом этапе уже на запрошенной версии.
Допустимые значения:
0 <= X -
строкаstatus.cephVersion.upgradeProgress.lastTransitionTimeВремя последнего перехода фазы.
-
строкаstatus.cephVersion.upgradeProgress.phaseТекущий этап обновления.
Допустимые значения:
MonUpgrading,MgrUpgrading,MdsUpgrading,OsdUpgrading,Completed -
целочисленныйstatus.cephVersion.upgradeProgress.totalВсего демонов в этапе.
Допустимые значения:
0 <= X
-
-
-
массив объектовstatus.conditionsПокомпонентные condition:
StorageReady,CephClusterReady,CredentialsReady,CsiCephReady,UpgradeReady,UpgradeInProgressи агрегатноеReady.-
строкаstatus.conditions.lastTransitionTimeВремя последнего перехода condition.
-
строкаstatus.conditions.messageЧеловекочитаемое описание текущего статуса.
-
целочисленныйstatus.conditions.observedGenerationЗначение
metadata.generation, для которого condition был выставлен. -
строкаstatus.conditions.reasonМашинно-читаемая причина текущего статуса.
-
строкаstatus.conditions.statusТекущий статус condition.
Допустимые значения:
True,False,Unknown -
строкаstatus.conditions.typeТип condition.
-
-
объектstatus.credentialsRefСсылка на ресурс
ElasticClusterCredentials, в котором хранится бэкап идентичности кластера (FSID, секреты mon/admin) за пределами namespace модуля. Заполняется 1:1 сmetadata.name.-
строкаstatus.credentialsRef.nameИмя ECC-ресурса.
-
-
объектstatus.healthСводка здоровья Ceph по данным Rook (
CephCluster.status.ceph.health). Используется UI для индикатора OK / Warn / Err и списка предупреждений.-
массив объектовstatus.health.checksАктивные проверки Ceph (предупреждения/ошибки). Пусто при
HEALTH_OK.-
строкаstatus.health.checks.messageЧеловекочитаемое описание проверки.
-
строкаstatus.health.checks.nameИдентификатор проверки Ceph (например,
MON_DOWN,OSD_NEARFULL,POOL_NO_REDUNDANCY). -
строкаstatus.health.checks.severityСерьёзность проверки, как сообщает Rook (
HEALTH_WARN/HEALTH_ERR).
-
-
строкаstatus.health.lastCheckedВремя последней успешной проверки здоровья кластера.
-
строкаstatus.health.messageКраткое человекочитаемое сообщение Rook о текущем состоянии.
-
строкаstatus.health.statusОдно из
HEALTH_OK,HEALTH_WARN,HEALTH_ERR. Пусто, пока Rook не опубликовал первое значение.Допустимые значения:
HEALTH_OK,HEALTH_WARN,HEALTH_ERR
-
-
объектstatus.mgrsКоличество mgr-демонов и распределение по версиям, по данным
CephCluster.status.ceph.versions.mgr. По умолчанию Rook разворачивает один активный mgr (опционально с standby), типичное healthy-значение —knownToCeph == 1.-
массив объектовstatus.mgrs.byVersionГистограмма по версиям mgr-демонов. Сортируется как
osds.byVersion.-
целочисленныйstatus.mgrs.byVersion.countСколько mgr-демонов сообщили эту версию.
Допустимые значения:
0 <= X -
строкаstatus.mgrs.byVersion.versionСтрока версии Ceph для этого бакета.
-
-
целочисленныйstatus.mgrs.knownToCephСумма значений
CephCluster.status.ceph.versions.mgr.Допустимые значения:
0 <= X
-
-
массив строкstatus.monEndpointsСписок эндпойнтов
ceph-monв формате<host>:<port>, разобранный из ConfigMaprook-ceph-mon-endpoints. -
строкаstatus.monMaxIdНаибольший id mon, достигнутый на текущий момент. Зарезервирован под flow disaster recovery.
-
объектstatus.monsКоличество mon-демонов и распределение по версиям, по данным
CephCluster.status.ceph.versions.mon. UI используетknownToCephдля индикатора кворума (knownToCeph >= floor(spec.mon.count/2)+1).-
массив объектовstatus.mons.byVersionГистограмма по версиям mon-демонов. Сортируется как
osds.byVersion.-
целочисленныйstatus.mons.byVersion.countСколько mon-демонов сообщили эту версию.
Допустимые значения:
0 <= X -
строкаstatus.mons.byVersion.versionСтрока версии Ceph для этого бакета.
-
-
целочисленныйstatus.mons.knownToCephСумма значений
CephCluster.status.ceph.versions.mon.Допустимые значения:
0 <= X
-
-
целочисленныйstatus.observedGenerationПоследнее значение
metadata.generation, обработанное контроллером. -
объектstatus.osdsКоличество OSD-демонов и распределение по версиям. Источник —
CephCluster.status.ceph.versions.osd(полеdesiredберётся из числа выбранных BlockDevice).-
массив объектовstatus.osds.byVersionГистограмма по версиям OSD-демонов. Сортируется по
countdesc, затем поversionasc. Пусто, пока ни один OSD не отчитался о версии.-
целочисленныйstatus.osds.byVersion.countСколько OSD-демонов сообщили эту версию.
Допустимые значения:
0 <= X -
строкаstatus.osds.byVersion.versionСтрока версии Ceph, которую публикует Rook (как есть, например
ceph version 19.2.3 (...) squid (stable)).
-
-
целочисленныйstatus.osds.desiredСколько OSD контроллер запросил у Rook (== число выбранных BlockDevice для этого ElasticCluster).
Допустимые значения:
0 <= X -
целочисленныйstatus.osds.knownToCephСумма значений
CephCluster.status.ceph.versions.osd— OSD-демоны, которые недавно сообщали Ceph свою версию. Это аппроксимация “alive в глазах Ceph”, а не Pod readiness.Допустимые значения:
0 <= X
-
-
строкаstatus.phaseАгрегатная фаза:
Pending,InProgress,Ready,Error.Допустимые значения:
Pending,InProgress,Ready,Error
-
ElasticStorageClass
Scope: Cluster
Version: v1alpha1
Описывает один Ceph-пул и соответствующий Kubernetes StorageClass
(создаётся через модуль csi-ceph). Контроллер транслирует spec.replication
в production-проверенный layout пула и создаёт CephStorageClass в csi-ceph
с тем же именем (1:1).
Режим репликации ErasureCodedCompact временно отключён и недоступен для выбора.
-
объектspec
-
строкаspec.clusterRef
Обязательный параметр
Имя ElasticCluster, к которому относится этот storage class. Кластер должен существовать и быть в фазеReadyдо создания пула.Длина:
1..30Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ -
строкаspec.replication
Высокоуровневая стратегия репликации. Контроллер транслирует значение в настройки пула:
AvailabilityWithoutConsistency— 2 реплики,min_size=1,requireSafeReplicaSize=false. Максимальная доступность ценой риска split-brain. Для некритичных нагрузок.ConsistencyAndAvailability(по умолчанию) — 3 реплики,min_size=2. Рекомендуется для прода.HighRedundancy— 4 реплики,min_size=2,requireSafeReplicaSize=true. Переживает одновременный отказ двух хостов с непрерывным I/O и сохраняет ещё одну реплику как запас на восстановление: потеря данных только при четвёртом одновременном отказе. Требует не менее 5 storage-узлов; пока существует хотя бы один HighRedundancy ESC, контроллер автоматически повышает топологию CephCluster до 5 mon и 3 mgr и не возвращает её обратно даже после удаления триггерного ESC. Аудит — вElasticCluster.status.cephTopology.
Режим
ErasureCodedCompactвременно отключён и не является допустимым значением.По умолчанию:
ConsistencyAndAvailabilityДопустимые значения:
AvailabilityWithoutConsistency,ConsistencyAndAvailability,HighRedundancy -
строкаspec.type
Обязательный параметр
Тип нижележащего Ceph-пула / Kubernetes StorageClass.
RBD— блочные тома через Rados Block Device.CephFS— общие тома через subvolume CephFS.
Допустимые значения:
RBD,CephFS
-
-
объектstatusТекущее состояние ресурсов, управляемых ElasticStorageClass.
-
массив объектовstatus.conditionsПокомпонентные condition:
PoolReady,CsiStorageClassReadyи агрегатноеReady.-
строкаstatus.conditions.lastTransitionTimeВремя последнего перехода condition.
-
строкаstatus.conditions.messageЧеловекочитаемое описание текущего статуса.
-
целочисленныйstatus.conditions.observedGenerationЗначение
metadata.generation, для которого выставлен condition. -
строкаstatus.conditions.reasonМашинно-читаемая причина текущего статуса.
-
строкаstatus.conditions.statusТекущий статус condition.
Допустимые значения:
True,False,Unknown -
строкаstatus.conditions.typeТип condition.
-
-
целочисленныйstatus.observedGenerationПоследнее значение
metadata.generation, обработанное контроллером. -
строкаstatus.phaseАгрегатная фаза:
Pending,InProgress,Ready,Error.Допустимые значения:
Pending,InProgress,Ready,Error
-