Стадия жизненного цикла модуля: Preview
У модуля есть требования для установки
StarrocksClass
Cluster-wide ресурс StarrocksClass задаёт политики для инстансов аналитической СУБД StarRocks: допустимые размеры ресурсов, дефолтную конфигурацию FE/BE и правила валидации.
Каждый ресурс Starrocks обязательно должен быть связан с существующим StarrocksClass.
Перед развёртыванием сервиса вся конфигурация проверяется по соответствующему классу.
StarrocksClass неизменяем — для смены политик создайте новый класс.
Sizing Policies
Структура определяет допустимые диапазоны 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%"Validation Rules
Для гибкой валидации используется 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"Overridable Configuration
Белый список параметров конфигурации, которые пользователь может переопределить в ресурсе Starrocks.
Здесь допускаются только hot-reloadable ключи; enum в CRD отклоняет остальные.
Параметры только для администратора / с рестартом пода указываются исключительно в spec.configuration.
Допустимо в overridableConfiguration |
Как применяется | Примечание |
|---|---|---|
catalogTrashExpireSecond |
FE: ADMIN SET FRONTEND CONFIG |
Live-обновление агентом |
streamingLoadMaxMb |
BE: POST /api/update_config |
Live-обновление агентом (ADMIN SET BACKEND не поддерживается) |
Нельзя включать в overridableConfiguration (только дефолты класса; смена — новый класс и рестарт пода):
enableUdfloadProcessMaxMemoryLimitPercent(immutable в runtime BE)
spec:
overridableConfiguration:
- catalogTrashExpireSecond
- streamingLoadMaxMbConfiguration
Дефолтные настройки 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: NoScheduleNode Selector
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%"