ptete un pb de réseau entre tes noeuds etcd ? des latences sur le rtt des peers ? regarde si y a pas du packet loss sur l'interface ou des drops côté firewall
ouais carrément faut monitorer le etcd_network_peer_round_trip_time_seconds. si ça peak c'est le réseau. et la latence disque sur l'iops de etcd_disk_wal_fsync_duration_seconds ça donne quoi
j'ai checké le réseau les pings entre les noeuds etcd sont stables genre 0.2ms. pas de packet loss. par contre le wal_fsync duration peak à 100ms par moments c'est pas normal si ?
100ms c'est énorme etcd a besoin de latences très faibles pour le wal typiquement sous les 10ms voir 1ms. t'es sur quel type de stockage ? ssd local ou ebs/azure disk ?
c'est du gp2 sur aws. je pensais que c'était suffisant pour des petits clusters
gp2 c'est pas top pour etcd. tu peux avoir des iops burstables mais la baseline est pas folle. faut du io1/io2 ou local ssd nvme si t'es sur ec2 direct. pour etcd il faut de la latence garantie
exact gp2 peut throttle si tu consommes trop de crédits. regarde tes métriques cloudwatch pour le VolumeReadOps/WriteOps et VolumeQueueLength
ok je vois des queues length monter à 20-30 pendant les pics de leader election. ça confirme la latence disque
tu peux aussi vérifier la version de etcd. des anciennes versions sont moins résilientes aux latences disque. et la taille de tes snapshots etcd ça grossit vite ?
etcd en 3.5.x c'est la dernière. les snapshots sont gérés par kube-apiserver via les apiserver-count-quorum. la taille est stable genre quelques centaines de Mo
t'as des gros volumes de writes sur ton cluster ? des apps qui créent/suppriment bcp de ressources k8s ?
on a un operator qui créé plein de CRDs temporaires pour des jobs ça pourrait être ça
ouais ça peut être ça. chaque modification sur etcd c'est une write. si l'operator spamme ça peut mettre la pression sur le disque. regarde etcd_mvcc_db_total_size_in_bytes et etcd_mvcc_delete_total
pour tester tu peux scaler ton etcd sur du io2 ou local nvme direct. ou sinon réduire le nombre de CRD créé par l'opérateur si c'est possible
ok je vais tenter de passer les volumes etcd sur du io2 provisionné à 5000 iops. et je vais optimiser l'opérateur pour qu'il soit moins verbeux. je vous dis si ça améliore
bon ben on est passé sur de l'io2 5000 iops et y a plus aucun pic de latence. le cluster est rock solid. merci pour l'aide c'était bien le stockage
Vous devez être connecté pour poster un message !
Recevoir les derniers articles gratuitement en créant un compte !
S'inscrire
francois-albert
Membre depuis le 03/06/2019
rédacteur
Salut l'équipe. On a des gros soucis sur un cluster k8s. etcd part en vrille régulièrement des leader elections toutes les 30s. ça timeoute le kube-apiserver et les pods deviennent NotReady. L'infra est sur des instances assez puissantes pourtant. des pistes ?