— 3 min de lectura
Tenemos esta línea de artículos ... para humanos, porque al igual que en nuestro eslogan, Tecnología para humanos, nos gusta acercar la tecnología a las personas. Al final pasa muchas veces como cuando uno va al médico o te lees un documento oficial de abogados o notarios, que parece que todo está escrito y contado para que no se entienda, pero que explicado de otra manera tampoco hay para tanto. Pues eso intentamos con esta línea de artículos. Si crees que lo logramos o crees que no, que es muy mejorable, déjanos un comentario por las redes sociales o escríbenos a hola@softspring.es, por favor.
Antes de seguir, si no tienes muy claro lo que es Docker, te recomiendo que te leas nuestro artículo Docker para humanos.
Como vimos anteriormente, la forma más rápida de trabajar con entornos diferentes, tanto en local como en servidor, es la utilización de contenedores. Cada contenedor tendrá todo lo necesario para ejecutar su proyecto/aplicación y nos permite olvidarnos de temas de versiones de librerías, versiones de sistemas operativos, en local hay esta versión y en producción esta otra, etc.
Normalmente en local tendremos pocos contenedores. Depende mucho de lo que estemos haciendo, pero por ejemplo en el mundo web, lo normal será tener uno para la aplicación y otro para la base de datos, en caso de necesitarla, por ejemplo.
Por otro lado, hay muchas situaciones en las que nos va a interesar poder tener un número variable de contenedores en la misma máquina o máquinas. Una es en Producción, especialmente en entornos de carga de trabajo variable (picos en los que tu web o aplicación tiene mucho más tráfico de lo normal), estás vendiendo entradas para un concierto por ejemplo. Otra menos evidente es, si en un equipo de trabajo de desarrollo, en el que cada persona prueba sus cosas en su ordenador local, luego quieren probar distintas ramas de desarrollo en un entorno común.
Las dos cosas no es que sean nuevas, gente trabajando junta y teniendo que probar cosas en común y entornos de producción con carga variable llevan muchos años existiendo, pero justamente por esto han proliferado tanto la tecnología para gestión y trabajo con contenedores como Kubernetes, que es una plataforma para gestionar cargas de trabajo y servicios, para poder hacerlo viable.
Esta gestión que comentamos, tener múltiples contenedores en una o varias máquinas, sería una locura hacerla de forma manual, tener que andar montando más máquinas (ya fuera físicas o virtuales) y manejando manualmente cuántos contenedores poner en cada una. Ya no por la primera vez, que ya sería una paliza, si no con cualquier modificación que hubiera que hacer, o incrementos por picos, etc. Para eso está Kubernetes. Como decíamos, Kubernetes es una plataforma para gestionar cargas de trabajo y servicios.
Con Kubernetes podemos crear grupos de máquinas (cluster) que crecen dinámicamente, en los que establecemos el número mínimo y máximo de nodos (máquinas), y qué tener en cuenta para decidir si crecer o reducir (por ejemplo, podemos establecer como objetivo tener las cpu's al 60% y que Kubernetes se encargue de añadir o quitar nodos para cumplirlo). A su vez, cuando añadimos una aplicación a un grupo de máquinas de Kubernetes, podemos poner unos parámetros similares, de cantidad de contenedores mínima, máxima, etc. A su vez, fijaremos una forma de saber si el contenedor está funcionando como debería y, así, Kubernetes podrá de manera automática quitar y poner los que dejen de funcionar, moverlos de sitio (de máquina), etc, sin perder servicio.
Obviamente, luego la cosa se puede complicar todo lo que uno quiera, podemos hacer que nuestras máquinas estén repartidas por el mundo y que cuando lanzamos una aplicación se distribuya por las distintas zonas, por ejemplo, pero la idea general es que Kubernetes es una plataforma para ayudarnos en la gestión de todo esto.
Si quieres aprender un poco más, en la web de Kubernetes tienes el tutorial Kubernetes Basics, y una serie de enlaces a cursos online para profundizar, como este de Udacity, creado por Google, gratuito y que te llevará un mes, aproximadamente.