Para comprender Kubernetes y lo que es, comencemos hablando brevemente sobre Docker. Docker es la herramienta estándar para implementar una aplicación utilizando contenedores. En otras palabras, Docker se basa en el formato más popular para empaquetar una aplicación y es el motor de contenedores más utilizado.
La gran ventaja de un contenedor es encapsular todas las dependencias necesarias para ejecutarlo, como bibliotecas, el tiempo de ejecución y el código de la aplicación. Todo esto en un solo paquete llamado imagen, que se puede versionar y distribuir fácilmente.
Docker ha revolucionado la forma de distribuir y ejecutar aplicaciones. Sin embargo, una vez que se tiene un contenedor en ejecución, todavía hay otras cuestiones por resolver. Por ejemplo, si un contenedor falla durante la ejecución, ¿cómo garantizar que se reinicie automáticamente (alta disponibilidad)? Y si necesitamos 4 contenedores, ¿cómo automatizar y asegurar que siempre haya 4 en ejecución (escalabilidad)? Además, si queremos algo elástico, como tener al menos 1 contenedor pero con la posibilidad de crecer hasta 5 en ejecución, ¿cómo hacerlo? Estas son solo algunas de las preguntas planteadas; hay muchas otras (red, volúmenes, monitoreo, actualizaciones, etc.) que Docker por sí solo no resuelve...
La preocupación aumenta aún más si consideramos una arquitectura basada en Microservicios. Es decir, la aplicación que antes estaba contenida en un solo contenedor ahora se divide en varios que deben interactuar de manera confiable pasando por varios hosts. Y, por supuesto, garantizando alta disponibilidad y escalabilidad. La complejidad solo aumenta...
Observen aquí la necesidad de tener un "gestor de contenedores", alguien que esté "al tanto" de los contenedores en ejecución, asegurando que el sistema en su conjunto continúe funcionando según lo planeado. Teniendo esto en cuenta, ¿no existe una herramienta que asuma esas responsabilidades? ¿Acaso Google no tiene algo para ayudar? Quizás un proyecto de código abierto, muy popular y que también funcione en los principales proveedores de la nube.
Bueno, el nombre del artículo ya dio una pista, pero lo que estamos buscando se llama Kubernetes, creado por Google con grandes contribuciones de Red Hat y hoy en día es uno de los proyectos de código abierto más populares en Github. El nombre Kubernetes suena un poco extraño, ya que es una palabra griega que significa "timonel" o "piloto" (el barco de carga pilotado por Kubernetes).
Kubernetes viene con una gran experiencia de Google y no deja de crecer en funcionalidades y usuarios. Es él quien gestiona los contenedores en ejecución, por lo que también se le llama Orquestador de Contenedores. A través de él, podemos definir el estado de un sistema completo, por ejemplo, basado en Microservicios, siguiendo las mejores prácticas de infraestructura como código, permitiendo el equilibrio de carga, alta disponibilidad, actualizaciones por lotes, rollbacks y mucho más.
Hoy en día, los principales proveedores de la nube como Azure, AWS, IBM, Red Hat o Google brindan soporte a Kubernetes. Además, existe una implementación local llamada Minikube que simula un clúster Kubernetes, ideal para pruebas y estudios. Lo más interesante es que las configuraciones locales, que definen el estado de la aplicación, también se ejecutan en Kubernetes en la nube. Es decir, podemos probar el orquestador localmente usando Minikube y luego publicar el sistema en AWS o Azure con solo algunas modificaciones.
Finalmente, es importante destacar que Kubernetes no es el único orquestador de contenedores en el mercado. Hay una solución de la propia empresa Docker llamada Docker Swarm con el mismo propósito, gestionar y cuidar los contenedores en ejecución (la segunda imagen es el logotipo de Docker Swarm). Cuál de los dos orquestadores es mejor o más fácil de usar es otra discusión, pero el mercado parece adoptar más a Kubernetes que a Docker Swarm.
Este articulo fue adecuado para Alura Latam por: Adriana Oliveira
Cursos de Programación, Front End, Data Science, Innovación y Gestión.
Luri es nuestra inteligencia artificial que resuelve dudas, da ejemplos prácticos y ayuda a profundizar aún más durante las clases. Puedes conversar con Luri hasta 100 mensajes por semana
Paga en moneda local en los siguientes países
Cursos de Programación, Front End, Data Science, Innovación y Gestión.
Luri es nuestra inteligencia artificial que resuelve dudas, da ejemplos prácticos y ayuda a profundizar aún más durante las clases. Puedes conversar con Luri hasta 100 mensajes por semana
Paga en moneda local en los siguientes países
Puedes realizar el pago de tus planes en moneda local en los siguientes países:
País | |||||||
---|---|---|---|---|---|---|---|
Plan Semestral |
487.37
BOB |
69289.36
CLP |
307472.10
COP |
65.90
USD |
264.35
PEN |
1435.53
MXN |
2978.57
UYU |
Plan Anual |
738.82
BOB |
105038.04
CLP |
466107.17
COP |
99.90
USD |
400.74
PEN |
2176.17
MXN |
4515.32
UYU |
Acceso a todos
los cursos
Estudia las 24 horas,
dónde y cuándo quieras
Nuevos cursos
cada semana