mes clusters eks me coutent une blinde quand ils sont idle les auto-scalers marchent mal

Posté par mallet-philippe le 17/08/2024
RÉSOLU

mallet-philippe

Membre depuis le 17/03/2019

bonsoir les finops warriors j'ai un gros coup de mou. nos clusters eks bouffent un max de thunes même quand y'a quasi rien qui tourne dessus. on a l'autoscaler de cluster (cluster autoscaler) mais j'ai l'impression qu'il est aveugle. les noeuds restent up pendant des plombes alors qu'ils sont vides. comment vous gérez ça pour vraiment couper les coûts sur de l'eks à vide ?


# exemple de node non scaledown
kubectl get nodes
NAME                                           STATUS   ROLES    AGE     VERSION
ip-10-0-0-1.eu-west-3.compute.internal         Ready       3d22h   v1.27.7-eks-81b49f7
ip-10-0-0-2.eu-west-3.compute.internal         Ready       3d22h   v1.27.7-eks-81b49f7
ip-10-0-0-3.eu-west-3.compute.internal         Ready       3d22h   v1.27.7-eks-81b49f7

Commentaires

ccamus

Membre depuis le 05/08/2024

check les logs du cluster autoscaler. il devrait te dire pourquoi il ne scale pas down un nœud. souvent c'est à cause de pods système non déplaçables (kube-system) ou des `pod disruption budgets` (pdb) mal configurés qui bloquent l'éviction

ksimon

Membre depuis le 14/03/2019

y'a aussi karpenter qui est bien plus agressif que le cluster autoscaler pour le scale down. ça peut virer des noeuds plus vite et de manière plus optimale. ça vaut le coup de regarder. ou sinon des managed node groups avec un min de 0 et des scale-in protection désactivées

thierry75

Membre depuis le 27/05/2024

un truc con mais tu n'aurais pas de pods qui demandent des ressources fixes (cpu/mem `requests`) mais qui en utilisent très peu ? le ca voit le request et pas l'usage réel donc ça peut garder des noeuds si les requests sont hautes même si le pod est idle

andre52

Membre depuis le 08/05/2024

check les affinités/anti-affinités de tes pods. si t'as des contraintes trop strictes ça peut forcer des noeuds à rester pour satisfaire une affinité inter-pod même s'il y a peu de pods. et des `node local storage` si tes pods utilisent des `emptyDir` ou `hostPath`

mallet-philippe

Membre depuis le 17/03/2019

ok pour les logs du ca je vais fouiller. les pdb c'est une piste aussi je les ai ptete laissés trop permissifs pour certains services. karpenter j'y ai pensé mais c'est un gros chantier de migration pour l'instant je voudrais optimiser l'existant. mes requests/limits sont plutôt bien réglés je pense. affinités j'en ai peu. storage pas de hostpath. je pense vraiment aux pdb là ou aux pods système

ccamus

Membre depuis le 05/08/2024

focus sur les pdb et les pods système. souvent un seul pod comme le `kube-proxy` ou un `aws-node` ou un `metrics-server` mal configuré peut empêcher un noeud de partir s'il a une tolérance à la défaillance `NoExecute` et qu'il n'y a pas d'autre nœud disponible pour lui

ksimon

Membre depuis le 14/03/2019

et n'oublie pas le `pod anti-affinity` aussi. si tu dis "ne mets jamais deux replicas de mon service sur le même nœud" et que tu n'as que 2 nœuds et 2 replicas, si tu veux en virer un, l'autre réplica n'a plus où aller si le cluster autoscaler ne peut pas en créer un troisième

mallet-philippe

Membre depuis le 17/03/2019

bingo ! j'ai trouvé un pdb sur un service critique qui avait un `minAvailable: 1` et comme y'avait que 2 replicas et 2 noeuds... bah impossible de virer le noeud sans violer le pdb. j'ai ajusté le pdb et réduit le `minAvailable` à 0 pendant le scale down. et j'ai vu des logs du ca qui disaient "not ready for deletion, pod disruption budget prevents deletion". clair comme de l'eau de roche une fois qu'on sait où chercher.

ccamus

Membre depuis le 05/08/2024

ah top ! les pdb sont souvent les coupables silencieux des non-scale-down. bien joué d'avoir trouvé. ça va faire du bien au porte-monnaie

mallet-philippe

Membre depuis le 17/03/2019

ouais carrément ! merci pour toutes les pistes j'aurais jamais pensé aux pdb direct. ça va nous faire économiser un paquet. thx !

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