L'opérateur enregistre des événements Kubernetes sur les objets ClickHouseCluster et
KeeperCluster qu'il gère. Ces événements retracent ce que l'opérateur a fait
pendant la réconciliation — à quel endroit les modifications de ressources ont échoué, quand un cluster est devenu
prêt, pourquoi la mise à l'échelle a été bloquée — et font remonter des échecs qui n'apparaissent jamais dans les journaux qu'un
utilisateur consulte habituellement. Ils complètent les métriques
en associant un historique lisible directement à la ressource personnalisée.
Le clickhouse-controller signale des événements sur les objets ClickHouseCluster et le
keeper-controller les signale sur les objets KeeperCluster. Les événements d'échec du cycle de vie des ressources
référencent également l'objet géré concerné (un
StatefulSet, Service, ConfigMap, Secret, PodDisruptionBudget,
PersistentVolumeClaim ou Job version-probe) ; les autres événements ne référencent que le
cluster lui-même.
Consulter les événements
Le moyen le plus rapide est d’exécuter kubectl describe sur la ressource personnalisée, ce qui affiche les événements
les plus récents en bas :
NS=<your-namespace>
kubectl -n $NS describe clickhousecluster <name>
kubectl -n $NS describe keepercluster <name>Pour lister directement les événements — par exemple pour les suivre en direct ou n’afficher que les échecs —
interrogez la ressource events et filtrez selon l’objet impliqué ou le type :
# 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 --watchLe contrôleur à l’origine du rapport apparaît dans la source de l’événement, ce qui vous permet de distinguer un
événement ClickHouseCluster (clickhouse-controller) d’un événement KeeperCluster
(keeper-controller).
Référence des raisons d’événement
L’opérateur émet un ensemble fixe de raisons, regroupées selon ce qu’elles décrivent. Les événements Normal
indiquent une progression attendue ; les événements Warning signalent une défaillance ou un état
nécessitant une intervention de l’utilisateur.
Cycle de vie des ressources
Émis pour ClickHouseCluster et KeeperCluster lorsque l'opérateur ne parvient pas à
appliquer une ressource dont il est propriétaire lors de la réconciliation.
| Raison | Type | Signification |
|---|---|---|
FailedCreate |
Warning | L'opérateur n'a pas pu créer une ressource dont il est propriétaire (par exemple, StatefulSet, Service, ConfigMap, Secret, PodDisruptionBudget ou Job). |
FailedUpdate |
Warning | L'opérateur n'a pas pu mettre à jour une ressource. |
FailedDelete |
Warning | L'opérateur n'a pas pu supprimer une ressource dont il est propriétaire lors de la réconciliation ou d'un scale-down. |
Disponibilité du cluster
Émis pour les deux types lorsque le cluster change d’état de disponibilité.
| Raison | Type | Signification |
|---|---|---|
ClusterReady |
Normal | Le cluster est devenu prêt : chaque segment ClickHouse dispose d’au moins une réplique prête, ou le quorum Keeper a un leader et suffisamment de followers (ou son unique réplique standalone est active). |
ClusterNotReady |
Warning | Le cluster a quitté l’état prêt : un segment ClickHouse n’a plus de réplique prête, ou le quorum Keeper a perdu son leader ou trop de followers. |
Mise à l’échelle
Émis pour KeeperCluster lorsque l’opérateur modifie le nombre de répliques.
| Raison | Type | Signification |
|---|---|---|
HorizontalScaleStarted |
Normal | L’opérateur a commencé à ajouter ou à supprimer des répliques. |
HorizontalScaleCompleted |
Normal | L’opération de mise à l’échelle est terminée. |
ReplicaCreated |
Normal | L’opérateur a ajouté une réplique au cluster. |
ReplicaDeleted |
Normal | L’opérateur a supprimé une réplique lors d’une réduction de capacité. |
HorizontalScaleBlocked |
Warning | L’opérateur a refusé la mise à l’échelle, car l’état actuel de Keeper ne permet pas encore de le faire en toute sécurité. |
Secret externe
Émis pour ClickHouseCluster lorsque le cluster fait référence à un Secret externe que
l’opérateur ne peut pas utiliser. Consultez la fonctionnalité External Secret dans le
guide de configuration.
| Raison | Type | Signification |
|---|---|---|
ExternalSecretNotFound |
Warning | Le Secret référencé n’existe pas dans l’espace de noms du cluster. |
ExternalSecretInvalid |
Warning | Le Secret existe, mais il manque des clés requises (signalé uniquement avec la stratégie Observe). |
Vérifications de version
Émis par les vérifications de version pour ClickHouseCluster et KeeperCluster.
VersionProbeFailed est spécifique au Job version-probe de ClickHouse.
| Raison | Type | Signification |
|---|---|---|
VersionProbeFailed |
Warning | Le Job version-probe n'a pas pu détecter la version de ClickHouse en cours d'exécution. |
VersionDiverge |
Warning | La version détectée d'une réplique diffère de la version que l'opérateur a détectée pour le cluster. Supprimé pendant les mises à jour progressives. |
VersionUpgradeAvailable |
Warning | Une version plus récente est disponible sur le canal de mise à niveau configuré, la version en cours d'exécution n'appartient pas à ce canal, ou elle n'est plus prise en charge. L'opérateur n'effectue jamais de mise à niveau de lui-même — cet événement est uniquement informatif. |
Avertissements du serveur ClickHouse
| Raison | Type | Signification |
|---|---|---|
ClickHouseWarning |
Warning | Un avertissement signalé par le serveur ClickHouse lui-même, republié depuis system.warnings. |
Cette dernière raison est particulière : elle ne décrit pas les actions de l’opérateur lui-même. Sur
chaque réplique en état Ready, l’opérateur interroge périodiquement la table
system.warnings du serveur et
republie chaque ligne sous forme d’événement Warning sur le cluster, préfixé par la
réplique dont elle provient. Cela transforme les avertissements natifs de configuration et d’exécution
de ClickHouse — paramètres obsolètes, limites trop basses, options non sûres — en événements visibles
avec kubectl, sans avoir à ouvrir une session clickhouse-client sur chaque réplique.
kubectl -n $NS get events \
--field-selector reason=ClickHouseWarning,involvedObject.name=<name>Événements, métriques et conditions
L'opérateur expose trois surfaces d'observabilité ; utilisez chacune selon ce qu'elle fait le mieux :
- Événements (ce guide) — récents, lisibles par des humains, rattachés à l'objet. À privilégier
pour « ce qui vient d'arriver à ce cluster » et le dépannage interactif avec
kubectl describe. Ils expirent. status.conditionssur la ressource personnalisée — l'état réel, actuel et persistant (prêt, secret externe valide, mise à l'échelle autorisée, version synchronisée). À privilégier pour les scripts et les contrôles d'état de santé GitOps. Consultez-les aveckubectl get clickhousecluster <name> -o jsonpath='{.status.conditions}'.- Métriques — pérennes et numériques. À privilégier pour les tableaux de bord et pour déclencher des alertes sur un taux soutenu d'erreurs de réconciliation.
Un événement Warning et une condition False décrivent souvent le même problème sous deux
angles : l'événement capture le moment et le message, la condition reflète l'état
jusqu'à sa résolution.
Dépannage avec les événements
Quelques signaux courants et ce qu’ils indiquent :
FailedCreate/FailedUpdaterépétés — l’opérateur ne peut pas appliquer une ressource. Le message de l’événement contient l’erreur d’API (rejet à l’admission, quota, spécification non valide). La réconciliation effectue de nouvelles tentatives, donc une cause transitoire se résout d’elle-même ; une cause persistante nécessite une correction de la spécification ou du cluster.ClusterNotReadysansClusterReadycorrespondant — le cluster ne se rétablit pas. Le message de l’événement indique les shards non prêts ou le problème de quorum ; vérifiez les pods concernés.HorizontalScaleBlocked— une mise à l’échelle prévue est bloquée par sécurité. Lisez le message pour connaître la contrainte exacte avant de forcer quoi que ce soit.ExternalSecretNotFound/ExternalSecretInvalid— corrigez le nom du Secret ou ses clés ; la conditionExternalSecretValidcorrespondante passe àTrueune fois que l’opérateur peut l’utiliser.ClickHouseWarning— le problème se situe dans ClickHouse, pas dans l’opérateur. Traitez le message comme vous le feriez pour une ligne desystem.warnings.
- Surveillance de l’opérateur — métriques et probes de santé, la contrepartie persistante des événements.
- Mise à l’échelle — ce que protège
HorizontalScaleBlockedet comment le quorum de Keeper limite la mise à l’échelle. - Configuration — la fonctionnalité External Secret qui sous-tend les événements
external-secret.