Entre los servicios que ha experimentado un mayor crecimiento en los últimos años se encuentra…
Kubernetes, seguro que es una de las palabras que más se está buscando ahora mismo en el mundo de IT. Pero ¿cuánta gente sabe realmente qué es y cómo funciona? Y lo más importante ¿cuándo hay que recurrir a ella?
Apúntate al webinar gratis sobre Kubernetes gestionado
Kubernetes es un sistema de gestión o de orquestación de contenedores. Suena fácil, ¿no? Mira este esquema si no te queda claro:
¿A que ahora sí que lo entiendes? 😅
A mi me costó entenderlo un tiempo debido a la gran cantidad de información que hay sobre ello y de que muchas empresas están intentando adaptarlo a su negocio y meten la definición que les encaja en su producto.
¿Qué significa que sea un «sistema de orquestación»? Básicamente Kubernetes (o k8s como también se le denomina) lo que hace es encargarse de las tareas de descargar y hacer accesibles desde Internet los distintos contenedores que queremos desplegar en un sistema, que, aunque hice que pareciese sencillo en el anterior post sobre Docker, una vez que tengas un volumen «interesante» de servicios a desplegar es una tarea cuanto menos tediosa.
Si bien Docker tiene herramientas adicionales como Docker Composer que nos ayudan en el despliegue de varios contenedores, se queda corto en el sentido de «vale, ya tengo esto en contenedores, ahora quiero además xxx«, lo cual puede suponer desplegarlo en varios servidores, además de meter varios scripts caseros de por medio, multiplicando el trabajo que ello conlleva. Además igual queremos otras cosas como:
Son cosas realmente básicas; algo habitual en el día a día de sistemas. ¿Y cómo hace Kubernetes todo eso? Abstrayéndose de todo y con una curva de aprendizaje muy… interesante.
Si bien hasta ahora muchos proveedores de servicios en el Cloud ya habían comercializado en mayor o menor medida sistemas para desplegar nuestra aplicación de forma «containerizada», el problema era ese: si aprendías a usar un sistema te atabas a ese proveedor. Lo que ha hecho Kubernetes es ofrecer un sistema de forma que en cualquier proveedor de Cloud el despliegue es similar, y te da lo mismo estar con el proveedor A, G, M o S ya que todos ellos dan su propio «sabor» de Kubernetes (GKE, EKS, AKS…).
Es más, es posible llegar a hacer mezclas de distintos proveedores Cloud, con equipos dedicados físicos, etc. ya que además Kubernetes es software Open Source y podemos instalarlo tanto en un clúster de varios miles de euros de «hierro» como en una Raspberry PI o en un portátil para hacer pruebas.
Esto se traduce en que a nivel de usuario tenemos lo que siempre hemos querido y es no atarnos a un único proveedor. No solo a nivel «político» de «tenemos contrato con este proveedor» si no que podríamos llegar a tener un sistema de alta disponibilidad corriendo en distintos proveedores.
A nosotros como proveedor de servicios en la nube esto nos supone el poder entrar en el juego de los grandes y poder hacer una oferta atractiva al usuario final, que no tiene que aprender un nuevo sistema de gestión de paquetes/contenedores. Todo el mundo gana.
Apúntate al webinar gratis sobre Kubernetes gestionado
Al igual que muchas otras herramientas, Kubernetes se empieza a formar en Google. La forma de trabajar y la inmensidad de la infraestructura de Google hace que cualquier servidor de sus data centers tenga que poder albergar cualquier servicio (y en Google no son pocos). Para ello construyeron un software que gestionaba sus contenedores. A este software la llamaron Borg. En el universo de Star Trek, el Colectivo Borg es una «raza» de seres con una mente de tipo colmena, en que todos trabajan para el mismo fin y cada individuo es reemplazable.
Años después y partiendo de esta base apareció Kubernetes, en el que han participado varios ingenieros que anteriormente trabajaron en Borg.
La forma que tiene kubernetes de hacer que funcione en cualquier tipo de proveedor Cloud es la de abstraer la infraestructura del proveedor, generando la suya propia. Además, excepto en entornos de desarrollo, siempre que hablamos de Kubernetes hablamos de un clúster de Kubernetes.
Y aquí es donde se empieza a complicar todo, ya que tenemos:
La forma y flujo de trabajo en que interactuamos con un clúster es mediante archivos YAML, olvídate de ventanas, formularios y pantallas.
En nuestros archivos YAML definimos nuestra arquitectura y luego mediante una herramienta tipo kubectl (por lo general en línea de comandos), le decimos al clúster que aplique la configuración que queremos. Una vez enviada esta configuración a Kubernetes, éste se encargará de estar continuamente revisando que se cumpla lo que hemos mandado.
Haciendo un símil con la imagen que adorna la cabecera, podríamos decir que estos archivos YAML son nuestra partitura que se la pasamos a Kubernetes (el director de la orquesta) y éste la hace sonar, independientemente de si el primer violín hoy es el mismo que ayer o si está en la ópera de Sidney o en la de Londres y si está tocando la banda sonora de una película Christopher Nolan, una ópera del sigo XIX o el Requiem de Mozart.
Ya que el despliegue de ciertas aplicaciones se puede complicar mucho, tenemos distintas herramientas como los operadores o las charts de Helm que nos ayudan en el despliegue de software ya preestablecido, como si fuese una especie de gestor de paquetes.
Podéis ver un ejemplo de un WordPress desplegado en Kubernetes en este repositorio de Github de IBM, con un esquema del mismo, un poco más complicado de lo habitual para un «simple» WordPress ¿no? Lo cual nos lleva a la siguiente pregunta…
Es la pregunta del millón de dólares. ¿Es Kubernetes para mí? Kubernetes es un sistema muy complicado, en el que hacer debug es muy muy complejo debido a todas las capas de abstracción que tiene (el hacer «sencilla» la infraestructura a tan alto nivel tiene un coste). Hay que tener muy claro el problema que tenemos antes de intentar lanzarle tecnologías para ver si se soluciona.
Además para la integración en nuestro sistema o aplicación hay que tener un gran conocimiento interno de cómo funciona, sus dependencias, etc. así como además de tenerlo o ser capaz de tenerlo funcionando en contenedores, que no siempre es posible.
Pero al igual que complica ciertas cosas, hace más sencillas otras. ¿Quieres desplegar un clúster de ElasticSearch? Con un comando es suficiente. ¿Lo que necesitas es un PostgreSQL replicado y con copias de seguridad automáticas? Más sencillo que nunca.
Inscríbete ahora al webinar gratis sobre Kubernetes gestionado
Estamos observando una revolución silenciosa pero impactante, propiciada por el Internet de las Cosas (IoT).…
En un mercado inundado de opciones de servicio Cloud, las empresas deben decidir cuidadosamente cuál…
La Inteligencia Artificial (IA) uno de los temas más discutidos y fascinantes de nuestro tiempo.…
En un panorama empresarial marcado por una digitalización acelerada, la gestión de la información se…
Desde nuestros inicios hace 30 años, hemos observado de cerca la transformación de Internet, de…
Que vivimos una verdadera epidemia de ciberataques no es ningún secreto. La situación de hecho…