Saltar al contenido

SpainClouds |

Portada » Blogs » Escalado vertical de tus pods en Kubernetes con VerticalPodAutoscaler

Escalado vertical de tus pods en Kubernetes con VerticalPodAutoscaler

Escalado vertical de tus pods en Kubernetes con VerticalPodAutoscaler

Ya te he contado en varios artículos cómo puedes hacer para que tus aplicaciones crezcan de un modo u otro, utilizandoautoescalar tus aplicaciones en kubernetes ,keda odesbordando con virtual kubernet. Una de las opciones que me quedaba por explorar era cómo autoescalar los pods verticalmente gracias al recurso VerticalPodAutoscaler.

En el artículo “administrar los recursos para tus contenedores en kubernetes” te contaba que es buena práctica especificar por cada contenedor cuántos son los recursos que este va a necesitar. El problema es que normalmente no es un dato fácil de estimar, ya que normalmente solo es posible conseguirlo a base de monitorizar tu aplicación a lo largo del tiempo. Aquí es donde entra en juego VPA, quien hace este trabajo por ti.

Instalación de VPA en tu clúster

A día de hoy este recurso no está por defecto instalado en los clústeres de Kubernetes. Para este ejemplo voy a utilizarAzure kubernetes service, aunque se pueden seguir estos mismos pasos para cualquier otro.

En el código anterior, específicamente para Azure, inicio sesión en la plataforma y recupero las credenciales del clúster donde quiero instalar VPA. Clono el proyecto kubernetes/autoscaler, donde está incluido el script vpa-up.sh, que da de alta todos los recursos necesarios para dejar mi clúster listo.

¿Cómo pruebo el escalado vertical?

Ahora que ya tienes todo preparado, lo siguiente es entender cómo funciona este recurso. Para ello, voy a crear un despliegue tan sencillo como el que sigue:

En este ejemplo he puesto el modo automático, el cual no solo nos mostrará las recomendaciones para nuestros contenedores sino que además aplicará las mismas:

En este ejemplo he puesto el modo automático, el cual no solo nos mostrará las recomendaciones para nuestros contenedores sino que además aplicará las mismas:

Hay que tener cuidado con esto ya que cada vez que VPA intente hacer un ajuste recreará los contenedores del pod. También es importante que sepas que, sino pones ningún máximo en tu VPA, este modo puede hacer que algunos pods se queden en estado pendiente por no tener suficiente espacio.

Para que esto no ocurra, puedes modificar su definición, añadiendo el apartado containerPolicies > maxAllowed:

En este caso he puesto un asterisco para que estos máximos apliquen a todos los contenedores, pero podría especificarlos de forma individual si fuera necesario.

También es posible recibir únicamente las recomendaciones, sin que estas se apliquen, poniendo a updateMode el valor Off y aplicar estas de manera manual.

Otra de las cosas que te pueden interesar es excluir del autoajuste a alguno de los contenedores de tu pod. Podría añadir un segundo contenedor a mi despliegue:

Y en el VPA indicar que el contenedor cache queda deshabilitado para el ajuste:

¡Saludos!