Что такое ClickHouse Operator
ClickHouse Operator — это оператор Kubernetes, который автоматизирует развертывание и управление кластерами ClickHouse в Kubernetes. Он построен на основе паттерна operator и расширяет API Kubernetes пользовательскими ресурсами, представляющими кластеры ClickHouse и их зависимости. Оператор выполняет следующие задачи:- Управление жизненным циклом кластера (создание, обновление, масштабирование, удаление)
- Координация кластера ClickHouse Keeper
- Автоматическая генерация конфигурации
- Синхронизация схемы базы данных
- Поэтапные обновления и обновления версий
- Подготовка хранилища
Пользовательские ресурсы
Оператор включает два основных CRD (определения пользовательских ресурсов):ClickHouseCluster
Описывает кластер баз данных ClickHouse с настраиваемыми репликами и сегментами.KeeperCluster
Представляет кластер ClickHouse Keeper для распределённой координации (заменяет ZooKeeper).Координация
ClickHouse Keeper обязателен
Для каждого ClickHouseCluster требуется кластер ClickHouse Keeper для распределенной координации. В спецификации ClickHouseCluster укажите ссылку на управляемый оператором KeeperCluster с помощьюkeeperClusterRef. По умолчанию оператор ищет его в пространстве имен ClickHouseCluster, но при необходимости можно также задать keeperClusterRef.namespace, чтобы указать на KeeperCluster в другом отслеживаемом пространстве имен.
Чтобы использовать ансамбль Keeper, который не управляется оператором, перечислите его серверы в externalKeeper. См. раздел Внешне управляемый Keeper.
Связь Keeper «один к одному»
По умолчанию каждому ClickHouseCluster нужен собственный выделенный KeeperCluster. Почему? Оператор автоматически создает уникальный ключ аутентификации для каждого ClickHouseCluster, чтобы он мог подключаться к своему Keeper. Этот ключ хранится в Secret. Последствия:- Несколько ClickHouseClusters не могут ссылаться на один и тот же KeeperCluster без настройки, описанной ниже
- При повторном создании ClickHouseCluster необходимо также повторно создать его KeeperCluster
zookeeper.root в settings.extraConfig
и создайте этот znode до запуска ClickHouse. См. Внешне управляемый Keeper.
Persistent Volumes не удаляются автоматически при удалении ресурсов ClickHouseCluster или KeeperCluster.
- Удалите ресурс ClickHouseCluster
- Удалите ресурс KeeperCluster
- Дождитесь завершения работы всех подов
- При необходимости удалите PersistentVolumeClaims, если хотите начать с чистого листа
- Повторно создайте KeeperCluster и ClickHouseCluster вместе
Репликация схемы
ClickHouse Operator автоматически реплицирует определения базы данных между всеми репликами кластера.Что реплицируется
Оператор синхронизирует:- определения баз данных Replicated
- движки баз данных для интеграции (PostgreSQL, MySQL и т. д.)
- базы данных без репликации (Atomic, Ordinary и т. д.)
- локальные таблицы в базах данных без репликации
- данные таблиц (это обрабатывается репликацией ClickHouse)
Рекомендуется: используйте движок базы данных Replicated
Преимущества:- Автоматическая репликация схемы между всеми узлами
- Упрощенное управление таблицами
- Оператор может синхронизироваться с новыми репликами
- Согласованная схема во всем кластере
Избегайте нереплицируемых движков
Нереплицируемые движки баз данных (Atomic, Lazy, SQLite, Ordinary) требуют ручного управления схемой:- Таблицы необходимо создавать отдельно на каждой реплике
- Между узлами возможны расхождения схемы
- Оператор не может автоматически синхронизировать новые реплики
Отключение репликации схемы
Чтобы отключить автоматическую репликацию схемы, установите дляspec.settings.enableDatabaseSync значение false в ресурсе ClickHouseCluster.
Управление хранилищем
Оператор управляет хранилищем с помощью объектов Kubernetes PersistentVolumeClaim (PVC).Настройка тома данных
Укажите требования к хранилищу вdataVolumeClaimSpec:
Жизненный цикл хранилища
- Создание: PVC создаются автоматически вместе с кластером
- Расширение: Поддерживается, если StorageClass допускает расширение томов
- Сохранение: PVC не удаляются автоматически при удалении кластера
- Повторное использование: Существующие PVC можно повторно использовать, если кластер создаётся заново с тем же именем
Основные особенности конфигурации по умолчанию
- Предварительно настроенный кластер: кластер с именем
default, включающий все узлы ClickHouse. - Макросы по умолчанию: некоторые полезные макросы уже определены:
{cluster}: имя кластера (default){shard}: номер сегмента{replica}: номер реплики
- Реплицируемое хранилище для сущностей RBAC
- Реплицируемое хранилище для пользовательских функций (UDF)
Следующие шаги
- Руководство по настройке - Подробное описание параметров настройки
- Справочник по API - Полная документация по API