ClickHouseCluster и
KeeperCluster, которыми он управляет. Эти события показывают, что оператор делал
во время реконсиляции: где не удалось применить изменения ресурсов, когда кластер стал
готов, почему было заблокировано масштабирование, — а также помогают выявить сбои, которые обычно не попадают в журналы, которые просматривает пользователь. Они дополняют метрики,
добавляя человекочитаемую историю непосредственно в пользовательский ресурс.
clickhouse-controller сообщает о событиях для объектов ClickHouseCluster, а
keeper-controller — для объектов KeeperCluster. События, связанные со сбоями
жизненного цикла ресурсов, также содержат ссылку на соответствующий управляемый объект
(StatefulSet, Service, ConfigMap, Secret, PodDisruptionBudget,
PersistentVolumeClaim или задачу version-probe); остальные события относятся только к
самому кластеру.
API-сервер Kubernetes удаляет события по истечении TTL — по умолчанию
через один час (
--event-ttl). Поэтому события — это краткоживущий сигнал о недавней активности,
а не постоянный журнал аудита.Просмотр событий
kubectl describe для пользовательского ресурса: внизу будет список
последних событий:
events и отфильтруйте результаты по связанному объекту или по типу:
ClickHouseCluster (clickhouse-controller) от события KeeperCluster
(keeper-controller).
Справочник по причинам событий
Normal
обозначают штатный ход выполнения; события Warning сообщают о сбое или состоянии,
требующем вмешательства пользователя.
Жизненный цикл ресурсов
ClickHouseCluster, так и для KeeperCluster, когда оператору не удаётся
применить принадлежащий ему ресурс в ходе реконсиляции.
Готовность кластера
Масштабирование
KeeperCluster, когда оператор изменяет количество реплик.
HorizontalScaleBlocked — это событие, за которым стоит следить, если запрос на масштабирование Keeper, как кажется,
ничего не даёт: оператор намеренно откладывает изменение и сохраняет текущий
кворум, чтобы избежать split. В сообщении события указано ограничение,
которое заблокировало изменение.External secret
ClickHouseCluster, когда кластер ссылается на внешний Secret,
который оператор не может использовать. См. описание возможности External Secret в
руководстве по настройке.
Проверки версий
ClickHouseCluster и KeeperCluster.
VersionProbeFailed относится только к задаче version-probe для ClickHouse.
Предупреждения сервера ClickHouse
Эта последняя причина отличается: она не описывает действия самого оператора. На
каждой готовой реплике оператор периодически запрашивает таблицу
system.warnings на сервере и
повторно публикует каждую строку как событие Warning в кластере, добавляя префикс
с именем реплики, из которой она получена. Так собственные предупреждения ClickHouse
о конфигурации и среде выполнения — устаревшие настройки, слишком низкие лимиты, небезопасные параметры — превращаются в события, которые можно увидеть
с помощью kubectl, не открывая сеанс clickhouse-client для каждой реплики.
События, метрики и состояния
- События (это руководство) — недавние, человекочитаемые, привязанные к объекту. Лучше всего
подходят для ответа на вопрос «что только что произошло с этим кластером» и для интерактивного поиска неисправностей с помощью
kubectl describe. Со временем они удаляются. status.conditionsв пользовательском ресурсе — актуальное, сохраняемое состояние (готовность, валидность External Secret, допустимость масштабирования, синхронизация версий). Лучше всего подходят для скриптов и проверок работоспособности в GitOps. Читайте их с помощьюkubectl get clickhousecluster <name> -o jsonpath='{.status.conditions}'.- Метрики — долговечные и числовые. Лучше всего подходят для панелей мониторинга и для оповещений при устойчивом уровне ошибок reconcile.
Warning и условие False часто описывают одну и ту же проблему с двух
сторон: событие фиксирует момент и сообщение, а условие отражает
состояние, пока проблема не будет устранена.
Устранение неполадок по событиям
FailedCreate/FailedUpdateповторяются — оператор не может применить ресурс. В сообщении события приводится ошибка API (отклонение на этапе допуска, квота, недопустимая спецификация). Реконсиляция выполняет повторные попытки, поэтому временная причина устранится сама; если проблема сохраняется, нужно исправить спецификацию или кластер.ClusterNotReadyбез соответствующегоClusterReady— кластер не восстанавливается. В сообщении события указаны неготовые сегменты или проблема с кворумом; проверьте соответствующие поды.HorizontalScaleBlocked— запланированное масштабирование приостановлено из соображений безопасности. Прочитайте сообщение, чтобы понять точное ограничение, прежде чем что-либо форсировать.ExternalSecretNotFound/ExternalSecretInvalid— исправьте имя Secret или его ключи; соответствующее условиеExternalSecretValidпримет значениеTrue, как только оператор сможет его использовать.ClickHouseWarning— проблема внутри ClickHouse, а не в операторе. Относитесь к этому сообщению так же, как к строке изsystem.warnings.
- Мониторинг оператора — метрики и проверки состояния, более устойчивый аналог событий.
- Масштабирование — что защищает
HorizontalScaleBlockedи как кворум Keeper ограничивает масштабирование. - Конфигурация — возможность External Secret, стоящая за событиями external-secret.