Distribuisci i pod sul cluster

Aug 20 2020

Utilizzo attuale della policy di scalabilità automatica di AWS per avviare i nodi di lavoro EKS (minimo+desiderato 10, massimo 15) a un orario fisso ogni giorno. Sono disponibili 120 pod e 30 distribuzioni.

Ovviamente, solo un nodo sarà attivo per primo. Quindi il secondo nodo. Dopo che l'ultimo nodo sarà attivo. Per questo motivo, Kubernetes aggiunge tutti i pod nei primi nodi. Esiste un modo per distribuire uniformemente i pod nello scenario?

Risposte

1 EduardoBaitello Oct 23 2020 at 21:30

Dai un'occhiata al Descheduler . Questo progetto viene eseguito come processo Kubernetes che mira a eliminare i pod quando ritiene che il cluster sia sbilanciato.

La LowNodeUtilizationstrategia sembra adattarsi al tuo caso:

Questa strategia trova i nodi sottoutilizzati ed elimina i pod, se possibile, da altri nodi nella speranza che la ricreazione dei pod eliminati venga pianificata su questi nodi sottoutilizzati.


Un'altra opzione consiste nell'applicare manualmente un po' di ingegneria del caos, forzando un aggiornamento continuo sulla distribuzione e, si spera, lo scheduler risolverà il problema di bilanciamento quando i pod verranno ricreati.

Puoi usare il kubectl rollout restart my-deployment. È molto meglio che eliminare semplicemente i pod con kubectl delete pod, poiché l'implementazione garantirà la disponibilità durante il "ribilanciamento" (sebbene l'eliminazione del tutto dei pod aumenti le possibilità di un migliore ribilanciamento).

2 joshk132 Aug 21 2020 at 09:19

Dovresti esaminare l'affinità e l'anti-affinità in quanto ciò ti consente di controllare quali pod vanno su quale nodo. Puoi averlo in modo che con l'anti-affinità ci sia solo 1 pod di ogni distribuzione su un nodo. Questo è un po 'eccessivo e non funzionerebbe esattamente per te anche se IIRC puoi avere più pod su un nodo solo con un limite.

https://kubernetes.io/docs/tasks/configure-pod-container/assign-pods-nodes-using-node-affinity/