es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

StatefulSet: Mayor tiempo de actualización escalonada Mismatch en las versiones

La aplicación se implementa en K8s utilizando StatefulSet debido a su naturaleza con estado. Hay alrededor de 250+ pods en funcionamiento y también se ha implementado el HPA, que puede escalar hasta 400 pods.

Cuando se produce una nueva implementación, lleva más tiempo (~10-15 minutos) actualizar todos los pods de manera secuencial.

Problema: Los usuarios finales obtienen respuestas de 2 versiones de los pods hasta que todos los pods sean reemplazados por la nueva revisión.

Estoy buscando en Google una arquitectura donde se pueda reducir el tiempo general de implementación y estoy obteniendo las mejores soluciones posibles para utilizar la estrategia BLUE/GREEN, pero tiene un impacto en los servicios integrados como monitoreo, registro, telemetría, etc. debido a las 2 convenciones de nombres.

Idealmente, estoy buscando soluciones como “maxSurge” para la implementación en la cual primero se crean los nuevos pods y luego se redirige el tráfico a ellos al mismo tiempo, pero en el caso de StatefulSet, no admite “maxSurge” con la estrategia de RollingUpdate y el controlador eliminará y volverá a crear cada pod en el StatefulSet según su índice ordinal de mayor a menor.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como experto en tecnología de la información especializado en Kubernetes, Google Kubernetes Engine, Kubernetes Helm, Azure AKS y Amazon EKS, aquí está mi solución para el problema planteado:

    Una posible solución podría ser utilizar una estrategia de implementación de canarios, donde un pequeño porcentaje de los nuevos pods se desplieguen junto con los existentes. Esto permite probar la nueva versión con tráfico en vivo y mitiga el riesgo de tiempo de inactividad para los usuarios finales. Una vez que los pods de canario superan todas las pruebas, el resto de los nuevos pods se pueden implementar y se puede redirigir el tráfico hacia ellos. Este enfoque puede reducir el tiempo total de implementación ya que la implementación no se bloquea hasta que se actualicen todos los pods.

    Otra posible solución podría ser utilizar una estrategia de implementación sin tiempo de inactividad, como despliegues azul/verde o actualizaciones escalonadas con un máximo de sobresaturación. Sin embargo, como se mencionó, estas estrategias pueden tener implicaciones para servicios integrados como monitoreo, registro, telemetría, etc., debido a las dos convenciones de nomenclatura.

    En última instancia, el enfoque más adecuado dependería de los requisitos y limitaciones específicas del entorno, y requeriría una consideración y prueba cuidadosas antes de su implementación.

Comments are closed.