En este artículo hacemos una introducción a Kubernetes, el sistema de gestión de contenedores más usado a día de hoy. Conoceremos su origen, en qué consiste exactamente y qué podemos hacer con él. También veremos un ejemplo real que ilustra muy bien cómo Kubernetes puede ser clave para el éxito de un producto digital. ¡Vamos allá!
Qué vas as ver en esta entrada
¿Qué significa Kubernetes?
La palabra Kubernetes tiene su origen en el término griego “κυβερνήτης” y su significado podría ser algo similar a timonel o piloto. Si observamos su característico logo, podemos confirmar esta hipótesis.
En el icono de esta herramienta de orquestación de contenedores aparece un timón sobre un fondo azul, el cual representa la gestión o el manejo de contenedores.
Kubernetes también es conocido en la comunidad bajo su abreviatura “K8s”. Dicha abreviatura proviene de la inicial de la palabra junto a la cantidad correspondiente de reemplazar las ocho letras “ubernete” por su equivalente en número (8) y la letra final de su nombre (s).
Origen de Kubernetes
Hace muchos años (y, por tanto, antes de que herramientas como Docker o Kubernetes salieran al mercado), muchas empresas ya realizaban y ejecutaban la gran mayoría de los despliegues de sus aplicaciones y servicios con un sistema basado en una herramienta de contenedores acompañado de una herramienta de gestión de contenedores.
Un claro ejemplo de ello es Google. ¿Os imagináis el nivel de contenedores con los que puede trabajar una compañía de tal magnitud? Para gestionar tantos servicios como Google Drive, Gmail, el motor de búsqueda…
Así, K8s fue desarrollado por los ingenieros de Google en 2014. Y, aunque fue creado desde cero, se basa en los anteriores sistemas de gestión de contenedores con los que trabajaba la compañía: Borg (2003) y Omega (2013), también desarrollados por Google.
El principal motivo que ha provocado que Kubernetes sea el sistema de gestión de contenedores más usado actualmente es que, aunque inicialmente era propiedad de Google (como sus dos anteriores sistemas), en 2014 decidió liberarlo y donarlo a la fundación Cloud Native Computing Fundation (que a su vez forma parte de la Linux Foundation).
Algunas alternativas a Kubernetes son Docker Swarm, Nomad, Rancher, Apache Mesos, Cloudify, etc. En este artículo hacemos una comparativa entre tres de los orquestadores más comunes a día de hoy: Docker Swarm, Kubernetes y Apache Mesos.
¿Qué es un sistema distribuido?
Para entender la importancia de Kubernetes, debemos comprender en qué consiste un sistema distribuido. Un sistema distribuido no es nada más y nada menos que un conjunto de equipos independientes que actúan como si fueran un único equipo.
Por tanto, se podría traducir como un conjunto de distintos componentes que pese a estar separados se ejecutan como si fuera un único equipo. Normalmente, para ello, se utilizan diferentes plataformas que están conectadas a través de una red.
Una de las razones por las que K8s se ha hecho tan popular es que nos permite orquestar sistemas distribuidos en red.
¿Qué es Kubernetes y para qué sirve?
Administrar el ciclo de vida de un contenedor puede ser sencillo. Pero, en el caso de realizar la gestión manualmente, requiere una persona que se encargue de ellos. Además de mucha atención. Por ejemplo, no sabemos cuándo se puede caer un contenedor y dejar de dar servicio. Por si todo esto fuera poco, conforme la cantidad de contenedores va aumentando, su administración cada vez se vuelve más compleja.
La orquestación de contenedores con herramientas como Kubernetes resuelve este problema, automatizando la programación, implementación, escalabilidad, equilibrio de carga, disponibilidad y redes de contenedores. La orquestación de contenedores, por tanto, es la automatización y gestión del ciclo de vida de contenedores y servicios.
¿Qué se puede hacer con Kubernetes?
Kubernetes nace entre otras muchas cosas con la finalidad de eliminar o cuanto menos reducir al máximo las operaciones manuales que realizamos sobre los contenedores. Esto proporciona beneficios como:
- Automatizar tareas, es decir, operaciones de contenedores en los que alojamos nuestras aplicaciones de forma fácil, rápida y escalable. Reduciendo al máximo el mantenimiento de estos por parte de la persona encargada de su administración, como podría ser la recuperación automática de un contenedor si se produce una caída.
- Integración con diferentes plataformas y proveedores de Cloud (AWS, Azure…).
- Balancear cargas inteligentes entre distintos nodos.
- Hacer más sencilla la escalabilidad tanto horizontal como vertical.
- Ser independiente de la arquitectura de la aplicación, ya que soporta aplicaciones complejas sin importar el tipo de arquitectura utilizada.
Ejemplo de por qué usar Kubernetes: el caso Pokémon
Un claro ejemplo de las ventajas de utilizar Kubernetes fue el “PELOTAZO” que pegó Pokémon GO.
Inicialmente, la aplicación fue lanzada en el Norte de América, Australia y Nueva Zelanda. Pero unas semanas después se realizó el lanzamiento a nivel mundial, provocando un BOOM tan estratosférico que llegó a superar la cifra de 500 millones de descargas y la friolera de 20 millones de usuarios activos diarios.
En junio de 2021 las cifras son:
Para su lanzamiento, se realizó una estimación que buscaba calcular cuales serían las expectativas que se esperaban del tráfico de transacciones por segundos con el fin de calcular los costes de los servidores, etc.
Para ello, analizaron la cantidad de transacciones en el momento y multiplicaron por cinco dicha cantidad. Multiplicaron por cinco dicho tráfico “para curarse en salud”. Lo que nadie se esperaba era un escenario como el que finalmente se produjo, en el que el nivel de transacciones se elevó cincuenta veces.
Si Pokemon Go pudo soportar, en parte, tal aumento de peticiones, fue debido a que Niantic Labs (la empresa propietaria de la aplicación) realizó una de las mayores implementaciones en Kubernetes. Y, su fácil escalabilidad, permitió que la aplicación recibiera tantísimas peticiones sin que dejase de funcionar.
Conclusión
Esto es todo por hoy. Hemos hecho una introducción a Kubernetes, la herramienta de administración de contenedores más popular en la actualidad. Hemos repasado su origen, qué podemos hacer con él y qué beneficios aporta su utilización. Asimismo, hemos analizado el caso de Pokémon GO, como un claro ejemplo de las ventajas de este sistema.
Si quieres conocer más acerca de esta plataforma y otras alternativas, te recomendamos que le eches un vistazo a este post en el que analizamos Red Hat OpenShift y hacemos una exhaustiva comparativa con Kubernetes.
Espero que os haya gustado.Podéis conocer más acerca del mundo de los contenedores en nuestro canal de YouTube. ¡Suscríbete!