etcd dérive de latence sur gros cluster K8s genre WTF

Posté par alice38 le 19/10/2025
RÉSOLU

alice38

Membre depuis le 21/07/2024

actif secouriste

yo la team j'ai un souci hyper chiant sur notre gros cluster K8s de prod. on a genre 500 nodes et les etcd commencent à prendre cher. des fois les écritures p99 montent à genre 300ms. l'api server galère et les pods sont lents à démarrer. on est en HA avec 5 membres mais ça aide pas.

# output de etcdctl check perf
etcdctl check perf
... (partial output)
WRITE: 500 ops/s, 10ms avg, 300ms p99
READ: 2000 ops/s, 2ms avg, 10ms p99

on a du NVMe sur les disques, réseau fibre, CPU ok. je sais pas trop par où prendre le truc. ptete un souci de tuning des OS ou un truc avec la compaction ?

Commentaires

michel-peron

Membre depuis le 21/05/2024

actif secouriste

hello pour etcd sur gros cluster c'est souvent la mort. 500 nodes c'est déjà pas mal. t'as quelle version d'etcd et de k8s déjà ? et c'est quel backend storage pour etcd là ?

alice38

Membre depuis le 21/07/2024

actif secouriste

k8s 1.25 et etcd 3.5.7. le backend c'est du gp3 aws provisioned iops à 16k iops et 250 mbps de throughput. on pensait que c'était large

michel-peron

Membre depuis le 21/05/2024

actif secouriste

gp3 c'est bien mais le p99 latency peut être trompeur. regarde plutôt les iops max que t'atteins et la queue depth. souvent c'est le disque même avec du nvme. et la taille de ta base etcd ? elle grossit vite ?

alice38

Membre depuis le 21/07/2024

actif secouriste

ouais la base est à genre 100gb. elle prend 10gb par semaine facile. on fait des snapshots réguliers mais la compaction prend aussi du temps

michel-peron

Membre depuis le 21/05/2024

actif secouriste

100gb c'est énorme. c'est là le souci. etcd c'est pas fait pour stocker des téraoctets. quelle est ta rétention ? et vous utilisez des custom resources qui ont des objets super lourds ?

alice38

Membre depuis le 21/07/2024

actif secouriste

on a 24h de rétention par défaut. pour les custom resources on a pas mal d'operators qui gèrent des objets avec des crd assez verbeuses. genre des istio virtualservices et gateways en masse

michel-peron

Membre depuis le 21/05/2024

actif secouriste

ok donc double peine. gros volume + forte churn sur des objets lourds. première chose à faire c'est revoir vos crd et leurs tailles. est-ce que tout doit être dans etcd ? genre une ressource avec 1000 lignes de yaml c'est pas fait pour etcd

alice38

Membre depuis le 21/07/2024

actif secouriste

on peut pas trop réduire les CRD là c'est des produits tiers. mais pour la rétention on pourrait la réduire à 12h ptete ? ça soulagerait un peu non ?

michel-peron

Membre depuis le 21/05/2024

actif secouriste

ouais ça aiderait un peu mais c'est pas la solution miracle. la fragmentation et le churn sont les vrais problèmes. tu as déjà check les métriques etcd_disk_wal_fsync_duration_seconds_bucket et etcd_mvcc_db_total_size_in_bytes ?

alice38

Membre depuis le 21/07/2024

actif secouriste

j'ai les métriques wal fsync oui et le p99 est un peu haut parfois 50ms mais c'est pas constant. la taille de la db on la monitore et c'est bien à 100gb

michel-peron

Membre depuis le 21/05/2024

actif secouriste

il faut aussi regarder la compaction si elle arrive à suivre. si etcd n'arrive pas à compacter assez vite les versions d'objets s'accumulent et la db grossit. la metric etcd_mvcc_delete_total et etcd_mvcc_put_total peuvent te donner une idée de la dynamique

alice38

Membre depuis le 21/07/2024

actif secouriste

on a beaucoup de puts et de deletes ouais. c'est la vie d'un gros cluster avec beaucoup de déploiements et de services qui changent. c'est notre CI/CD qui tourne à fond

michel-peron

Membre depuis le 21/05/2024

actif secouriste

si t'as plein de changements, la solution c'est pas d'avoir un etcd géant. c'est soit de segmenter le cluster k8s si possible ou alors revoir comment tes operators gèrent leurs states. est-ce qu'ils stockent pas des infos temporaires dans etcd qui pourraient aller ailleurs ?

alice38

Membre depuis le 21/07/2024

actif secouriste

hum c'est une piste. je vais voir avec les équipes infra s'ils peuvent auditer les operators les plus gourmands. et la rétention à 12h ça peut aider en attendant. thx pour les pistes c'est plus clair

alice38

Membre depuis le 21/07/2024

actif secouriste

bon on a réduit la rétention et audité un operator qui balançait trop de CRD inutiles. la base a déjà un peu dégonflé c'est pas encore parfait mais on est repassé sous les 100ms p99. on va continuer l'audit. merci pour les conseils !

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