Управление жизненным циклом Doris Operator
Doris Operator управляет кластерами Doris через цикл Reconcile. При изменении пользовательского ресурса Doris Operator обновляет соответствующие ресурсы Kubernetes в соответствии с новым желаемым состоянием и при необходимости выполняет операции с метаданными на уровне Doris.
В этом документе описано, как эти изменения выполняются на практике.
Создание кластера
При создании DorisCluster или DorisDisaggregatedCluster Operator создаёт соответствующие ресурсы Kubernetes согласно конфигурации компонентов, заданной в ресурсе.
В кластерах с совмещёнными вычислениями и хранением обычно сначала создаётся FE:

В кластерах с разделением вычислений и хранения сначала создаётся MetaService:

Если зависимости ещё не готовы, Operator продолжает ожидание и повторяет попытки в последующих циклах Reconcile.
Увеличение числа узлов
Для увеличения числа узлов обычно повышают значение поля replicas компонента. Например:
spec:
beSpec:
replicas: 5
Обнаружив изменение, Operator обновляет соответствующий StatefulSet. Kubernetes создаёт новые объекты Pod, а Operator продолжает проверять готовность и обновлять поле status ресурса CR.
В кластерах с разделением вычислений и хранения число узлов ComputeGroup увеличивается аналогичным образом:
spec:
computeGroups:
- uniqueId: adhoc-query
replicas: 5
Обратите внимание на следующее:
- Достаточно ли кластеру ресурсов CPU, памяти и хранилища.
- Можно ли разместить новые объекты Pod на узлах.
- Могут ли PVC быть привязаны к томам.
- Могут ли новые узлы зарегистрироваться в кластере Doris.
Уменьшение числа узлов
Риски при уменьшении числа узлов выше, чем при увеличении, поскольку это может повлиять на реплики данных, кворум метаданных, роли узлов или пропускную способность сервиса.
Перед уменьшением числа узлов в производственном кластере проверьте состояние реплик Doris, прикладную нагрузку и возможности отката.
Кластеры с совмещёнными вычислениями и хранением
Риски при уменьшении числа узлов зависят от компонента:
| Компонент | Основной риск |
|---|---|
| FE | Роли Follower и Observer могут влиять на кворум метаданных |
| BE | Необходимо учитывать перенос реплик и доступность данных |
| CN | Реплик данных нет, но уменьшение числа узлов влияет на вычислительные ресурсы и кэш |
| Broker | Проверьте, зависят ли от него ещё задачи доступа к внешним ресурсам |
Для FE число реплик не может быть меньше числа узлов, участвующих в выборах. При уменьшении числа узлов в этом режиме отдельно оцените топологию кластера и риски на уровне Doris.
Кластеры с разделением вычислений и хранения
При уменьшении числа узлов ComputeGroup могут потребоваться операции с метаданными на уровне Doris. Поведение зависит от enableDecommission:
| Конфигурация | Поведение |
|---|---|
enableDecommission: true | Выполнить decommission перед уменьшением числа узлов и дождаться возможности безопасного удаления |
enableDecommission: false | Сразу удалить соответствующий узел |

Перед уменьшением числа узлов проверьте текущее распределение данных и прикладную нагрузку.
Изменение конфигурации
Конфигурация запуска Doris обычно монтируется с помощью ConfigMap. Необходимость перезапуска после изменения зависит от типа конфигурации и настроек Operator.
Для кластеров с совмещёнными вычислениями и хранением:
spec:
enableRestartWhenConfigChange: true
Если этот параметр включён, изменения основных ConfigMap могут вызывать поэтапный перезапуск.
При изменении конфигурации проверьте следующее:
- Соответствуют ли ключи ConfigMap требованиям компонентов, например
fe.conf. - Совпадают ли заданные каталоги с путями монтирования PVC.
- Соответствуют ли порты, FQDN и настройки аутентификации сетевой модели Kubernetes.
- Вступает ли изменение в силу только после перезапуска компонента.
Поэтапное обновление
Изменение образов компонентов, некоторых полей шаблона Pod или хешей конфигурации может вызвать поэтапное обновление StatefulSet.
Рекомендуемые действия:
- Выполняйте обновление в часы низкой нагрузки.
- Сначала убедитесь, что в кластере нет неустранённых сбоев.
- Проверьте, как клиенты выполняют повторные попытки.
- Соблюдайте порядок обновления, указанный в документации по обновлению версий Doris.
Удаление кластера
После удаления пользовательского ресурса Doris Operator запускает процедуру очистки и удаляет ресурсы Kubernetes, которыми управляет.
Перед удалением проверьте:
- Нужно ли сохранять PVC.
- Являются ли объектное хранилище, FoundationDB или другие внешние зависимости общими ресурсами.
- Нужны ли резервные копии данных и метаданных.
- Есть ли ещё подключённые клиенты.
Удаление CR может привести к удалению соответствующих ресурсов Kubernetes. Перед продолжением уточните, какие ресурсы будут удалены, и определите стратегию резервного копирования.
Наблюдение за операциями жизненного цикла
О завершении операции жизненного цикла следует судить по совокупности данных: полю status ресурса CR, состоянию ресурсов Kubernetes и состоянию компонентов Doris.
kubectl get dcr -n ${namespace}
kubectl describe dcr ${cluster_name} -n ${namespace}
kubectl get ddc -n ${namespace}
kubectl describe ddc ${cluster_name} -n ${namespace}
kubectl get pod,sts,svc,pvc -n ${namespace}
Если желаемое состояние долго не достигается, изучите логи Operator и Kubernetes Events, чтобы определить, связана ли проблема с размещением на узлах, привязкой хранилища, монтированием конфигурации, регистрацией узлов или операциями с метаданными Doris.