Distribuya los pods sobre el clúster

Aug 20 2020

Uso actual de la política de escalado automático de AWS para iniciar los nodos de trabajo de EKS (mín. + 10 deseados, máx. 15) a una hora fija todos los días. Hay 120 pods y 30 implementaciones.

Obviamente, solo un nodo estará activo en primer lugar. Luego el segundo nodo. Después de ese último nodo estará activo. Por ese motivo, Kubernetes agrega todos los pods en los primeros nodos. ¿Hay alguna forma de que los pods se distribuyan uniformemente en el escenario?

Respuestas

1 EduardoBaitello Oct 23 2020 at 21:30

Eche un vistazo al Desprogramador . Este proyecto se ejecuta como un trabajo de Kubernetes que tiene como objetivo eliminar los pods cuando cree que el clúster está desequilibrado.

La LowNodeUtilizationestrategia parece ajustarse a su caso:

Esta estrategia encuentra nodos que están infrautilizados y expulsa los pods, si es posible, de otros nodos con la esperanza de que la recreación de los pods desalojados se programe en estos nodos infrautilizados.


Otra opción es aplicar un poco de ingeniería del caos manualmente, forzando una actualización continua en su implementación y, con suerte, el programador solucionará el problema de equilibrio cuando se vuelvan a crear los pods.

Puedes usar el kubectl rollout restart my-deployment. Es mucho mejor que simplemente eliminar los pods con kubectl delete pod, ya que la implementación garantizará la disponibilidad durante el "reequilibrio" (aunque eliminar los pods por completo aumenta las posibilidades de un mejor reequilibrio).

2 joshk132 Aug 21 2020 at 09:19

Debe analizar la afinidad y la antiafinidad, ya que eso le permite controlar qué pods van en qué nodo. Puede tenerlo para que con la antiafinidad solo haya 1 pod de cada implementación en un nodo. Esto es un poco exagerado y no funcionaría para usted exactamente, aunque IIRC puede tener múltiples pods en un nodo solo con un límite.

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