Degradation etcd sous un operator K8s custom

lbesson 15/10/2025
RÉSOLU
lbesson
Auteur
Avatar de lbesson
lbesson
Auteur

yo la team! on a un operator k8s custom qui gère des centaines de CRD et depuis qq temps etcd est à la ramasse. des requêtes take 500ms au lieu de 50. ça nous freeze tout le cluster on dirait que ça bloque le leader etcd pas de compaction alarm visible

kubectl exec -it etcd-0 -c etcd -- etcdctl metrics --endpoints=localhost:2379 |
  grep -e "etcd_mvcc_db_total_size_in_bytes|etcd_mvcc_delete_total_range_count"
15/10/2025 à 05:24

13 commentaires

claudine-moreau
Membre Actif
Avatar de claudine-moreau
claudine-moreau
Membre Actif

salut! 500ms c'est chaud t'as regardé les métriques latency p99 pour les writes sur etcd? souvent un operator mal écrit peut spammer etcd avec des updates trop fréquentes ou des payloads énormes

16/10/2025 à 01:47
lbesson
Auteur
Avatar de lbesson
lbesson
Auteur

ouais les p99 writes sont à 450ms. l'opérateur gère des CRD avec des configs genre 10-20KB par objet pas énorme. par contre il update un bon paquet d'objets toutes les 5-10s si y'a un changement dans l'infra

16/10/2025 à 22:48
qdelaunay
Membre
Avatar de qdelaunay
qdelaunay
Membre

10-20KB par objet c'est pas rien si tu en as des centaines. et 5-10s c'est une fréquence pas négligeable. t'as jeté un œil à mvcc_keys_total ou mvcc_compaction_pauses_total? ça peut donner une idée du garbage collection d'etcd

17/10/2025 à 18:38
lbesson
Auteur
Avatar de lbesson
lbesson
Auteur

mvcc_keys_total est stable mais mvcc_compaction_pauses_total on a des spikes réguliers et ça corréle avec les ralentissements. c'est ça le souci?

18/10/2025 à 13:22
claudine-moreau
Membre Actif
Avatar de claudine-moreau
claudine-moreau
Membre Actif

clairement les pauses de compaction sont un signal fort que etcd galère à nettoyer l'historique. ça veut dire que ton operator génère bcp de révisions. faut optimiser les writes ou réduire la rétention historique

19/10/2025 à 08:22
valerie79
Membre Actif
Avatar de valerie79
valerie79
Membre Actif

t'as essayé de réduire les events au lieu de faire des updates full state à chaque fois? ou de batcher les updates pour plusieurs crd en une seule transaction?

20/10/2025 à 03:52
lbesson
Auteur
Avatar de lbesson
lbesson
Auteur

batcher les updates c'est une bonne idée pour les CRD qui changent en même temps. mais pour la rétention etcd on est déjà au minimum pour nos besoins. faut que je revois comment l'operator écrit

21/10/2025 à 01:13
qdelaunay
Membre
Avatar de qdelaunay
qdelaunay
Membre

vérifie aussi si ton operator utilise des watch en continu sur trop de ressources ou s'il fait des list tous les X temps sur des gros objets. les lectures aussi peuvent impacter la perf du leader

21/10/2025 à 23:56
lbesson
Auteur
Avatar de lbesson
lbesson
Auteur

il fait des list pour des reconciliations complètes toutes les 30s. c'est peut-être ça le combo. grosses writes fréquentes et list globales en plus

22/10/2025 à 18:18
claudine-moreau
Membre Actif
Avatar de claudine-moreau
claudine-moreau
Membre Actif

le list global sur des crd volumineuses est un antipattern. essaie de te baser sur des événements plus ciblés. utilise des index si possible sur tes crd si tu as des champs récurrents pour tes requêtes

23/10/2025 à 14:48
lbesson
Auteur
Avatar de lbesson
lbesson
Auteur

ok je vais refactorer l'operator pour qu'il utilise des informers avec des filtres plus précis au lieu des list full. et je vais essayer de batcher les updates des CRD qui sont souvent modifiées ensemble

24/10/2025 à 09:59
valerie79
Membre Actif
Avatar de valerie79
valerie79
Membre Actif

pense aussi à l'impact du garbage collection du client-go lui-même si ton operator manipule bcp d'objets en mémoire. ça peut créer des pauses gc

25/10/2025 à 07:18
lbesson
Auteur
Avatar de lbesson
lbesson
Auteur

j'ai refactoré l'operator pour moins de list et plus de watch ciblés. j'ai aussi revu les updates pour batcher les petites modifications. le p99 est revenu sous les 30ms et plus de spikes de compaction pause. thx pour les pistes

26/10/2025 à 02:08

Laisser une réponse

Vous devez être connecté pour poster un message !

Rejoindre la communauté

Recevoir les derniers articles gratuitement en créant un compte !

S'inscrire