El operador registra eventos de Kubernetes en los objetos ClickHouseCluster y
KeeperCluster que administra. Estos eventos muestran lo que hizo el operador
durante la reconciliación — dónde fallaron los cambios en los recursos, cuándo un clúster pasó a estar
listo, por qué se bloqueó el escalado — y sacan a la luz fallos que nunca llegan a un log que
un usuario leería normalmente. Complementan las métricas
al adjuntar un historial legible para humanos directamente al recurso personalizado.
clickhouse-controller informa eventos en los objetos ClickHouseCluster y
keeper-controller los informa en los objetos KeeperCluster. Los eventos de fallo del ciclo de vida del recurso también hacen referencia al objeto dependiente correspondiente (un
StatefulSet, Service, ConfigMap, Secret, PodDisruptionBudget,
PersistentVolumeClaim o Job de comprobación de versión); otros eventos hacen referencia solo al
clúster en sí.
Ver eventos
La forma más rápida de verlos es con kubectl describe en el recurso personalizado, que muestra los
eventos más recientes al final:
NS=<your-namespace>
kubectl -n $NS describe clickhousecluster <name>
kubectl -n $NS describe keepercluster <name>Para ver los eventos directamente —por ejemplo, para observarlos en tiempo real o filtrarlos para ver solo los fallos—
consulta el recurso events y filtra por el objeto implicado o por el tipo:
# All events for one cluster, newest last
kubectl -n $NS get events \
--field-selector involvedObject.name=<name> \
--sort-by=.lastTimestamp
# Only warnings across the namespace
kubectl -n $NS get events --field-selector type=Warning
# Follow events as they arrive
kubectl -n $NS get events --watchEl controlador que lo reporta aparece en el origen del evento, por lo que puedes distinguir un
evento de ClickHouseCluster (clickhouse-controller) de un evento de KeeperCluster
(keeper-controller).
Referencia de razones de eventos
El operador emite un conjunto fijo de razones, agrupadas según lo que describen. Los eventos Normal
indican el progreso esperado; los eventos Warning indican un fallo o un estado sobre el que
el usuario debe actuar.
Ciclo de vida del recurso
Se emite tanto en ClickHouseCluster como en KeeperCluster cuando el operador no puede
aplicar un recurso gestionado por él durante la reconciliación.
| Motivo | Tipo | Significado |
|---|---|---|
FailedCreate |
Warning | El operador no pudo crear un recurso gestionado por él (p. ej., StatefulSet, Service, ConfigMap, Secret, PodDisruptionBudget o Job). |
FailedUpdate |
Warning | El operador no pudo actualizar un recurso. |
FailedDelete |
Warning | El operador no pudo eliminar un recurso gestionado por él durante la reconciliación o la reducción de escala. |
Disponibilidad del clúster
Se emite en ambos tipos cuando el clúster cambia de estado de disponibilidad.
| Motivo | Tipo | Significado |
|---|---|---|
ClusterReady |
Normal | El clúster pasó a estar listo: cada segmento de ClickHouse tiene al menos una réplica lista, o el cuórum de Keeper tiene un líder y suficientes seguidores (o su única réplica independiente está en funcionamiento). |
ClusterNotReady |
Warning | El clúster dejó de estar listo: un segmento de ClickHouse se quedó sin réplicas listas, o el cuórum de Keeper perdió a su líder o a demasiados seguidores. |
Escalado
Se emite en KeeperCluster cuando el operador cambia la cantidad de réplicas.
| Motivo | Tipo | Significado |
|---|---|---|
HorizontalScaleStarted |
Normal | El operador comenzó a añadir o eliminar réplicas. |
HorizontalScaleCompleted |
Normal | La operación de escalado finalizó. |
ReplicaCreated |
Normal | El operador añadió una réplica al clúster. |
ReplicaDeleted |
Normal | El operador eliminó una réplica durante la reducción de escala. |
HorizontalScaleBlocked |
Warning | El operador se negó a escalar porque el estado actual de Keeper aún no es seguro para hacerlo. |
External Secret
Se emite en ClickHouseCluster cuando el clúster hace referencia a un Secret externo que
el operador no puede usar. Consulta la función External Secret en la
guía de configuración.
| Motivo | Tipo | Significado |
|---|---|---|
ExternalSecretNotFound |
Warning | El Secret referenciado no existe en el espacio de nombres del clúster. |
ExternalSecretInvalid |
Warning | El Secret existe, pero no contiene las claves requeridas (solo se informa con la policy Observe). |
Comprobaciones de versión
Emitidas por las comprobaciones de versión de ClickHouseCluster y KeeperCluster.
VersionProbeFailed es específico del Job de sondeo de versión de ClickHouse, version-probe.
| Motivo | Tipo | Significado |
|---|---|---|
VersionProbeFailed |
Warning | El Job version-probe no pudo detectar la versión de ClickHouse en ejecución. |
VersionDiverge |
Warning | La versión detectada de una réplica difiere de la versión que el operador detectó para el clúster. Se suprime durante las actualizaciones progresivas. |
VersionUpgradeAvailable |
Warning | Hay una versión más reciente disponible en el canal de actualización configurado, la versión en ejecución no está en ese canal o ha quedado fuera de soporte. El operador nunca se actualiza por sí solo; este evento solo informa. |
Advertencias del servidor ClickHouse
| Motivo | Tipo | Significado |
|---|---|---|
ClickHouseWarning |
Warning | Una advertencia reportada por el propio servidor ClickHouse, republicada desde system.warnings. |
Esta última razón es distinta: no describe las acciones del propio operador. En
cada réplica lista, el operador consulta periódicamente la
tabla system.warnings del servidor y
republica cada fila como un evento Warning en el clúster, con el prefijo de la
réplica de la que procede. Esto convierte las propias advertencias de configuración y de ejecución de ClickHouse
—ajustes obsoletos, límites bajos, opciones inseguras— en eventos que puedes ver
con kubectl sin abrir una sesión de clickhouse-client en cada réplica.
kubectl -n $NS get events \
--field-selector reason=ClickHouseWarning,involvedObject.name=<name>Eventos, métricas y condiciones
El operador expone tres superficies de observabilidad; usa cada una para lo que mejor sabe hacer:
- Eventos (esta guía) — recientes, legibles para humanos, asociados al objeto. Ideales
para "qué acaba de pasarle a este clúster" y para la resolución interactiva de problemas con
kubectl describe. Caducan. status.conditionsen el recurso personalizado — la verdad actual y persistente (Ready, External Secret válido, escalado permitido, versión sincronizada). Lo mejor para scripts y compuertas de estado de GitOps. Léalas conkubectl get clickhousecluster <name> -o jsonpath='{.status.conditions}'.- Métricas — duraderas y numéricas. Ideales para dashboards y para generar alertas ante una tasa sostenida de errores de reconciliación.
Un evento Warning y una condición False a menudo describen el mismo problema desde dos
ángulos: el evento captura el momento y el mensaje; la condición refleja el
estado hasta que se despeja.
Solución de problemas con eventos
Algunas señales habituales y lo que suelen indicar:
FailedCreate/FailedUpdaterepetidos — el operador no puede aplicar un recurso. El mensaje del evento incluye el error de la API (rechazo en admisión, cuota, spec no válida). La reconciliación vuelve a intentarlo, así que una causa transitoria se resuelve sola; una persistente requiere corregir la spec o el clúster.ClusterNotReadysin unClusterReadycorrespondiente — el clúster no se está recuperando. El mensaje del evento indica qué segmentos no están listos o cuál es el problema de cuórum; compruebe los pods que hay detrás de ellos.HorizontalScaleBlocked— un escalado previsto se está reteniendo por seguridad. Lea el mensaje para conocer la restricción exacta antes de forzar nada.ExternalSecretNotFound/ExternalSecretInvalid— corrija el nombre del Secret o sus claves; la condiciónExternalSecretValidcorrespondiente cambia aTrueuna vez que el operador puede usarlo.ClickHouseWarning— el problema está dentro de ClickHouse, no en el operador. Trate el mensaje como trataría una fila desystem.warnings.
- Monitoreo del operador — métricas y sondas de estado, la contraparte persistente de los eventos.
- Escalado — qué protege
HorizontalScaleBlockedy cómo el quórum de Keeper limita el escalado. - Configuración — la funcionalidad External Secret detrás de los eventos de external-secret.