Cómo dejar de pagar de más por la nube y empezar a vivir con Kubernetes Autoscaler
Imagina esto: has lanzado una campaña publicitaria, hay un pico de tráfico, y tus pods en Kubernetes empiezan a "ahogarse" bajo la carga. O lo contrario: cae la noche, los usuarios duermen, pero docenas de instancias costosas siguen girando en la nube, quemando el presupuesto de tu empresa. ¿Te suena familiar?
Por lo general, en momentos como estos, la gente recuerda el autoescalado. En el ecosistema de Kubernetes, esto se maneja con el repositorio kubernetes/autoscaler. No es solo una utilidad única, sino un conjunto completo de herramientas que ayudan al clúster a "respirar" con la carga. Decidí investigar qué hay dentro y por qué es imprescindible para cualquier entorno de producción.
Qué hay bajo el capó
El repositorio alberga tres componentes principales. Cada uno resuelve su propia tarea específica, y a menudo se confunden entre sí.
Cluster Autoscaler: Cuando no hay suficiente "hierro"
Esta es probablemente la herramienta más popular del conjunto. Su trabajo es simple: si aparecen pods en el clúster que no pueden iniciarse por falta de recursos (estado Pending), Cluster Autoscaler va al proveedor de la nube y pide agregar un nuevo nodo.
También funciona al revés. Si algún nodo ha estado medio vacío durante mucho tiempo y sus pods pueden moverse de forma segura a otros nodos, el autoscaler eliminará el hardware extra. Esto es un ahorro directo de costos, especialmente si estás en AWS, GCP o Azure.
Vertical Pod Autoscaler (VPA): La magia del ajuste de recursos
Si Cluster Autoscaler cambia el número de nodos, entonces VPA cambia el "tamaño" de los pods mismos. A menudo los desarrolladores establecen requests y limits a ojo. El resultado es que la aplicación falla con OutOfMemory, o reservamos 2 GB de RAM donde solo se necesitan 200 MB.
VPA monitorea el consumo real de recursos y ajusta automáticamente los límites. El proyecto actualmente está en estado beta, pero ya hace algo realmente genial: el modo recomendación. Puedes simplemente observar qué recursos sugiere establecer, sin confiar en que reinicie los pods automáticamente.
Addon Resizer: Microgestión para servicios del sistema
Esta es una versión simplificada del autoscaler vertical. Es necesaria para servicios cuyo consumo de recursos escala linealmente con el tamaño del clúster. Por ejemplo, el metrics server necesita más memoria si tienes 100 nodos en lugar de 10. Addon Resizer monitorea el número de nodos y escala estos componentes auxiliares en consecuencia.
Cómo funciona en la práctica
Supongamos que estás usando Go. Para empezar a trabajar con el código del proyecto localmente, necesitas seguir la estructura de rutas a la que está acostumbrado Kubernetes. El código debe vivir en k8s.io, no en github.com.
Punto interesante: Cluster Autoscaler soporta docenas de proveedores. No solo hay gigantes como AWS, sino también soluciones específicas para clústeres bare-metal o locales. Si estás construyendo tu propio servicio en la nube, necesitarás implementar la interfaz CloudProvider, y tu clúster también aprenderá a escalar.
Por qué esto es importante para los desarrolladores
Muchos piensan que el autoescalado es trabajo del ingeniero DevOps. En realidad, entender cómo funciona vertical-pod-autoscaler hace la vida mucho más fácil a los desarrolladores backend.
- Puedes olvidarte de adivinar al configurar recursos.
- Las aplicaciones se vuelven más resilientes a picos de tráfico repentinos.
- Veas el perfil real de consumo de memoria y CPU de tu código.
Por cierto, el repositorio contiene charts oficiales de Helm para una instalación rápida. Eso es mucho más conveniente que intentar implementar manifiestos manualmente.
¿Deberías adoptarlo ahora mismo?
Si estás trabajando en la nube y tus facturas de infraestructura están creciendo, entonces Cluster Autoscaler es la base. Recupera el tiempo de configuración dentro del primer mes de operación.
La situación con Vertical Pod Autoscaler es más complicada. Dado que reinicia los pods para cambiar los recursos (hasta que K8s tenga actualizaciones de recursos en su lugar), debe usarse con cuidado. Yo sugeriría comenzar con el modo Recommender. Obtendrás una lista de consejos de optimización de recursos, pero VPA no tocará nada.
El proyecto está vivo y bien, respaldado por una enorme comunidad (casi 9,000 estrellas y miles de forks). Si tienes preguntas, la gente está activa en el canal de Kubernetes Slack #sig-autoscaling.
Así que si tu clúster todavía es estático, échale un vistazo a este repositorio. Es hora de hacer que la nube trabaje para ti, no contra ti.
Proyectos relacionados