Latence etcd délirante avec du gros churn K8s et CSI

Posté par madeleine-mahe le 23/12/2025
RÉSOLU

madeleine-mahe

Membre depuis le 01/03/2019

actif

salut les pros ! notre cluster k8s a des problèmes de latence etcd monstrueux ça entraîne des leader elections à répétition et les apiserver sont lents à répondre. on a bcp de churn de pods surtout des jobs qui créent/détruisent des pvcs et on a un driver csi custom pour du stockage un peu exotique

kubectl get --raw /metrics | grep etcd_server_has_leader
etcd_server_has_leader{instance="etcd-0",job="etcd"} 1
etcd_server_has_leader{instance="etcd-1",job="etcd"} 1
etcd_server_has_leader{instance="etcd-2",job="etcd"} 1

Commentaires

brun-thibault

Membre depuis le 12/01/2025

actif secouriste

ouais classique les leader elections ça pue. t'as des métriques sur `etcd_server_proposals_failed_total` ou `etcd_server_leader_changes_total` et le `etcd_mvcc_db_total_size_in_bytes` il grossit de ouf

madeleine-mahe

Membre depuis le 01/03/2019

actif

les `proposals_failed` sont à quelques milliers par jour et les `leader_changes` genre 5-10 par heure. le `db_total_size` est à 20GB alors que ça devrait être moins de 10GB. ça semble s'accumuler même avec la compaction par défaut

menard-adele

Membre depuis le 26/12/2024

20GB c'est déjà gros t'as une idée de ce qui prend de la place genre bcp de CRDs ou des objects persistents pour tes PVCs qui sont pas nettoyés correctement

madeleine-mahe

Membre depuis le 01/03/2019

actif

on a pas mal de crds pour le csi driver mais c'est surtout les `pv` et `pvc` objets qui churnent. chaque job crée un nouveau pvc temporaire

brun-thibault

Membre depuis le 12/01/2025

actif secouriste

ok si c'est les objets PV/PVC en churn regarde ta politique de `reclaimPolicy` sur tes `StorageClass` c'est ptete `Retain` au lieu de `Delete` ce qui laisse des PVs orphelins et ça fait gonfler etcd

madeleine-mahe

Membre depuis le 01/03/2019

actif

non on est bien en `delete` pour nos classes de stockage. les `pv` sont bien delete après les jobs mais l'historique dans etcd semble persister ou la compaction galère

brun-thibault

Membre depuis le 12/01/2025

actif secouriste

la compaction c'est tous les combien chez toi par défaut c'est 5 minutes. et le `etcd_mvcc_blobs_total_bytes` il est aussi en hausse

madeleine-mahe

Membre depuis le 01/03/2019

actif

compaction est par défaut ouais. `blobs_total_bytes` est aussi en hausse. j'ai l'impression que le disque I/O est pas top non plus pour etcd pourtant c'est des NVMe dédiés

brun-thibault

Membre depuis le 12/01/2025

actif secouriste

I/O disk c'est super critique pour etcd. fais un `fio` sur le volume etcd avec des petits blocs et du `fsync` pour voir les vraies latences en écriture synchrone. et tu peux augmenter `etcd_max_txn_ops` si t'as bcp de transactions simultanées

madeleine-mahe

Membre depuis le 01/03/2019

actif

j'ai lancé un `fio` sur le volume etcd les latences en écriture synchrone sont à 20-30ms ce qui est affreux pour du NVMe. ça devrait être sous la milliseconde

menard-adele

Membre depuis le 26/12/2024

20-30ms c'est la mort pour etcd. c'est quoi ton CSI driver et ton backend de stockage. y'a ptete un bug dans le driver ou une config réseau / raid qui limite les perfs

madeleine-mahe

Membre depuis le 01/03/2019

actif

le driver CSI est custom comme j'ai dit c'est pour du stockage hyperconvergé et le support nous dit que c'est ok. mais je suspecte le driver ou l'intégration k8s avec le driver

brun-thibault

Membre depuis le 12/01/2025

actif secouriste

si le `fio` est pourri c'est une piste solide. ton CSI driver il utilise des volumes block direct ou des filesystems montés sur les workers et si c'est des FS comment ils sont montés `noatime` `nodiratime` `barrier=0` ça peut aider

madeleine-mahe

Membre depuis le 01/03/2019

actif

c'est des volumes block formatés en XFS montés avec `noatime`. on avait pas touché à `barrier`. je vais voir si le CSI driver a des options pour optimiser la latence de ses volumes

brun-thibault

Membre depuis le 12/01/2025

actif secouriste

demande au support du CSI s'ils ont des options genre `fsGroupChangePolicy: Always` ou `ReadOnlyMany` pour alléger les opérations sur etcd. parfois les drivers font des opérations de validation en background qui tapent fort sur le control plane

madeleine-mahe

Membre depuis le 01/03/2019

actif

j'ai contacté le support du CSI driver et ils m'ont confirmé une option `optimizeStorageIO: true` pour les volumes etcd qu'on avait pas activé. après l'avoir mis en place et recréé les volumes les latences `fio` sont tombées à 0.5ms. etcd respire enfin et plus de leader elections. c'était bien le stockage bas niveau via le CSI. merci pour les pistes encore

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