Saltar al contenido

SpainClouds |

Portada » Blogs » Desbordando con virtual kubelet

Desbordando con virtual kubelet

Escalado rápido y puntual de tus pods con Virtual Kubelet

Existen diferentes escenarios donde puedes necesitar de un escalado rápido de tu clúster de manera puntual que hace que el despliegue de nuevos nodos pueda no resultar todo lo ágil que demandas. Es por ello que Microsoft anunció hace un tiempo una implementación llamada Virtual Kubelet, la cual permite “hacerse pasar por nodos” a otras tecnologías, como si de uno más se tratara, pero que pueden ser mucho más rápidos y ágiles a la hora de escalar. En este artículo quiero mostrarte cómo funciona Virtual Kubelet usando Azure Container Instances.

Crear un clúster de prueba

Para este ejemplo voy a crear un clúster de un solo nodo, para que nos sea fácil quedarnos sin recursos rápidamente:

Una vez creado y asignado el contexto a kubectl puedes comprobar que tienes un único nodo:

Desplegar aplicación de prueba

Para ver la utilidad de esto con un ejemplo práctico, voy a lanzar en mi nuevo clúster el siguiente despliegue:

Como ves, en él he establecido por un lado los recursos que necesitan los pods para poder funcionar, un poco altos :D, y por otro los taints que tolera. Para el caso de Virtual Kubelet es necesario que tolere la clave virtual-kubelet.io/provider, como verás más adelante.

Si una vez desplegado recuperas los pods comprobarás que algunos se han quedado pendientes de desplegar porque no tienes más espacio en tu clúster de un solo nodo:

Como necesito ubicarlos de manera rápida y puntual aquí es donde entra en juego Virtual Kubelet.

Desplegar Virtual Kubelet con el conector para Azure Container Instances

Antes de instalar el conector necesitas tener instalado Helm 2 en el clúster.

Una vez desplegado, a través de este comando puedes instalar el conector de manera sencilla:

En realidad aks install-connector lo que hace por debajo es desplegar un chart de Helm, de ahí que lo tengas que tener instalado.

Este proceso también se puede hacer durante la creación del clúster:

Instalar Virtual Kubelet durante la creación del clúster

Pero quería que vieras primero la necesidad y luego implantarla

Si ahora recuperas los nodos verás que tienes dos:

Además, como ya te adelante en el apartado anterior, este nuevo nodo tiene un taint asociado, que mis pods ya toleran:

El funcionamiento de Virtual Kubelet es sencillo: todos los pods que se han quedado pendiente de desplegar y que toleran este taint serán gestionados por este nodo virtual que, a su vez, utilizará Azure Container Instances para desplegarlos. Si vuelves a recuperar los pods desplegados, comprobarás que los que estaban pendientes ahora están “ejecutándose” en tu nuevo nodo virtual:

De hecho, si accedes al grupo de recursos que AKS crea para desplegar sus recursos, comprobarás que tienes dos del tipo Container Instances que se corresponden con el despliegue nginx-deployment:

Si escalas el deployment hacia arriba o hacia abajo verás que el número de container instances irá acorde a tus necesidades, mucho más rápido que si tuvieras que añadir nuevos nodos que solo necesitas de manera puntual.

¡Saludos!