Стадия жизненного цикла модуля: Preview
У модуля есть требования для установки
StarrocksClass
Cluster-wide-ресурс StarrocksClass задаёт политики для инстансов аналитической СУБД StarRocks: допустимые размеры ресурсов, конфигурацию FE/BE по умолчанию и правила валидации. Каждый ресурс Starrocks обязательно должен быть связан с существующим StarrocksClass. Перед развёртыванием сервиса вся конфигурация проверяется по соответствующему классу.
StarrocksClass неизменяем — для смены политик создайте новый класс.
Политики размера ресурсов
Структура определяет допустимые диапазоны CPU и памяти для связанных инстансов Starrocks.
Это помогает равномерно распределять ресурсы на узлах кластера и подбирать размер под OLAP-нагрузку.
Определяющий фактор выбора политики — попадание в интервал cores; затем проверяются остальные поля политики.
spec:
sizingPolicies:
- cores:
min: 2
max: 4
memory:
min: 4Gi
max: 8Gi
step: 1Gi
coreFractions:
- "50%"
- "75%"
- "100%"
- cores:
min: 5
max: 8
memory:
min: 8Gi
max: 16Gi
step: 1Gi
coreFractions:
- "50%"
- "75%"
- "100%"
- cores:
min: 9
max: 16
memory:
min: 16Gi
max: 32Gi
step: 2Gi
coreFractions:
- "50%"
- "75%"
- "100%"Правила валидации
Для гибкой валидации используется CEL (Common Expression Language).
Предопределённые переменные для rule:
configuration.catalogTrashExpireSecond;configuration.streamingLoadMaxMb;instance.memory.size;instance.cpu.cores.
spec:
validations:
- message: "CPU cores must be between 2 and 16"
rule: "instance.cpu.cores >= 2 && instance.cpu.cores <= 16"
- message: "Memory size must be at least 4Gi"
rule: "instance.memory.size >= 4294967296"
- message: "catalogTrashExpireSecond must be between 600 and 604800 seconds"
rule: "configuration.catalogTrashExpireSecond >= 600 && configuration.catalogTrashExpireSecond <= 604800"Переопределяемая конфигурация
Белый список параметров конфигурации, которые пользователь может переопределить в ресурсе Starrocks.
Здесь допускаются только ключи с обновлением без перезапуска; CEL-правило в CRD отклоняет остальные.
Параметры только для администратора или с перезапуском пода указываются исключительно в spec.configuration.
Допустимо в overridableConfiguration |
Как применяется | Примечание |
|---|---|---|
catalogTrashExpireSecond |
FE: ADMIN SET FRONTEND CONFIG |
Обновление агентом без перезапуска |
streamingLoadMaxMb |
BE: POST /api/update_config |
Обновление агентом без перезапуска (ADMIN SET BACKEND не поддерживается) |
Нельзя включать в overridableConfiguration параметры enableUdf и loadProcessMaxMemoryLimitPercent (неизменяемый в рантайме BE): для них доступны только значения класса по умолчанию, а смена требует нового класса и перезапуска пода.
spec:
overridableConfiguration:
- catalogTrashExpireSecond
- streamingLoadMaxMbКонфигурация
Настройки StarRocks FE/BE по умолчанию для всех инстансов, связанных с этим классом.
Параметры из overridableConfiguration могут быть переопределены на уровне инстанса.
| Параметр | Конфиг StarRocks | Описание |
|---|---|---|
catalogTrashExpireSecond |
catalog_trash_expire_second |
Время хранения «мусора» каталога на FE перед очисткой (секунды) |
enableUdf |
enable_udf |
Включение пользовательских функций (UDF) |
loadProcessMaxMemoryLimitPercent |
load_process_max_memory_limit_percent |
Максимальная доля памяти BE для процессов загрузки |
streamingLoadMaxMb |
streaming_load_max_mb |
Максимальный размер Stream Load запроса (МБ) |
spec:
configuration:
catalogTrashExpireSecond: 3600
enableUdf: true
loadProcessMaxMemoryLimitPercent: 50
streamingLoadMaxMb: 204800Affinity (привязка к узлам)
Стандартный механизм Kubernetes для размещения подов StarRocks на выделенных узлах (например, с быстрым локальным диском или большим объёмом RAM).
spec:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: "node.deckhouse.io/group"
operator: "In"
values:
- "analytics"Tolerations (допуски)
spec:
tolerations:
- key: workload-type
operator: Equal
value: analytics
effect: NoScheduleСелектор узлов
spec:
nodeSelector:
"node.deckhouse.io/group": "analytics"Примеры использования
Базовое использование
apiVersion: managed-services.deckhouse.io/v1alpha1
kind: StarrocksClass
metadata:
labels:
app.kubernetes.io/name: managed-starrocks-operator
name: production
spec:
overridableConfiguration:
- catalogTrashExpireSecond
- streamingLoadMaxMb
configuration:
catalogTrashExpireSecond: 3600
enableUdf: true
loadProcessMaxMemoryLimitPercent: 50
streamingLoadMaxMb: 204800
validations:
- message: "CPU cores must be between 2 and 16"
rule: "instance.cpu.cores >= 2 && instance.cpu.cores <= 16"
- message: "Memory size must be between 4Gi and 32Gi"
rule: "instance.memory.size >= 4294967296 && instance.memory.size <= 34359738368"
sizingPolicies:
- cores:
min: 2
max: 4
memory:
min: 4Gi
max: 8Gi
step: 1Gi
coreFractions:
- "50%"
- "75%"
- "100%"
- cores:
min: 5
max: 8
memory:
min: 8Gi
max: 16Gi
step: 1Gi
coreFractions:
- "50%"
- "75%"
- "100%"
- cores:
min: 9
max: 16
memory:
min: 16Gi
max: 32Gi
step: 2Gi
coreFractions:
- "50%"
- "75%"
- "100%"