Opciones de auto escalado de microservicios con Kubernetes.
NOTICIA
12 ene 2018
Commentarios 0

En el ámbito de los microservicios, gracias a la separación en pequeños silos funcionales de los grandes sistemas, la necesidad de escalar servicios de forma global ya no es necesaria, siendo lo más adecuado que los recursos se puedan gestionar según la demanda.

El uso de contenedores y de orquestadores como Kubernetes permite automatizar el despliegue, escalado y gestión de las aplicaciones que se ejecutan dentro de dichos contenedores. Este tipo de escalado se beneficia, por tanto, del uso de contenedores y se basa en los sistemas de orquestación, donde existe un nodo maestro que realiza la monitorización del sistema, permitiendo escalar la plataforma según unos parámetros predefinidos, como pueden ser el uso de recursos (CPU, memoria), el número de peticiones, etc.

Es responsabilidad del nodo maestro mantener también la coherencia del clúster, actualizando el registro de servicios y/o el balanceador con el nuevo despliegue.

Según nuestra experiencia proponemos dos opciones de implementación de autoescalado de microservicios con contenedores y Kubernetes: 

Opción 1: Horizontal Pod Autoscaling (HPA)

Horizontal Pod Autoscaling escala el número de instancias de un contenedor en el clúster. Este escalado se hace por uso de CPU, aunque en futuras versiones Kubernetes llegará a soportar otras métricas adicionales.

El HPA se integra a los deployment de Kubernetes, es decir, cuando se crea un nuevo servicio se activan también las métricas de escalado del servicio.

El algoritmo de escalado de los servicios toma en cuenta el promedio de las métricas de todas las instancias del servicio para determinar si hay que desplegar nuevas instancias para estar dentro del umbral.

También cuando el umbral baja, Kubernetes se encarga de eliminar las réplicas que se fueron creando y que ya no son necesarias.

Opción 2: Monitorización y escalado por script

Otra manera de escalar el número de instancias de un servicio es consultar las métricas del servicio y escalarlo por medios externos a Kubernetes.

Para ello se tiene que crear un proceso que consulte las métricas de la herramienta de monitorización centralizada de microservicios empleada, y cuando detecte que se ha rebasado el umbral de la métrica o métricas que se están monitorizando, llame al API de Kubernetes para crear nuevas replicas.

Esta opción se considera la más adecuada en el caso de que los requerimientos de la plataforma de ejecución para hacer el escalado estén dictados por métricas diferentes a consumos de CPU y de memoria, como, por ejemplo, número de peticiones por segundo.

La consecuencia de ello es la necesidad de crear un servicio que sea el encargado de realizar el escalado y evolucionarlo conforme avancen las características de escalado del entorno de ejecución.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.