Kubernetes: La revolución en el despliegue de aplicaciones empresariales

Kubernetes es una tecnología desarrollada por Google hace unos años para su uso dentro de la propia empresa. En 2014 fue liberada como código abierto y desde entonces ha pasado a ser un estándar en la industria tecnológica. Esta herramienta ha sido una revolución en la manera en la que las empresas despliegan y gestionan a gran escala sus aplicaciones, ya que proporciona una flexibilidad, escalabilidad y eficiencia mucho mayores a los métodos que se utilizaban anteriormente. Personalmente le tengo mucho cariño a esta tecnología, ya que hasta hace poco era muy desconocida y saber trabajar con ella me ha abierto muchas puertas. Mi objetivo en este artículo será compartir una pequeña introducción para que se entienda que es lo que hace y el motivo por el que ha representado un avance importante respecto a lo que se hacía hace unos años.

Diego Martín Seguir

Tiempo de lectura: 6 min

¿Qué es Kubernetes?

Kubernetes es una plataforma de código abierto (público y gratuito) para desplegar y gestionar aplicaciones que se han desplegado en contenedores.
Pero antes de nada ¿qué significa esto y que son los contenedores?

Para entenderlo de una forma más sencilla, vamos a imaginarlo como una ciudad en la cual tenemos dos tipos de viviendas: apartamentos y casas independientes.

  • Los apartamentos (contenedores) son edificios cuyos habitantes comparten recursos (agua, luz, gas…) y cada uno de los apartamentos utiliza solo lo que necesita y paga su parte, pero podría darse el caso de que todo el mundo esté usando la ducha y él no se pueda duchar por que no hay suficiente agua en el edificio.
  • Las casas independientes (máquinas virtuales), que imaginemos, tienen que pagar lo que van a utilizar por adelantado cada mes. La parte positiva es que los dueños saben que disponen de unos recursos reservados para ellos, pero el coste mes a mes es el mismo aun que estén fuera de casa.

Dependiendo del uso que tengas pensado hacer te puede convenir más un tipo de vivienda u otro, pero imaginemos que pudiéramos mezclar lo mejor de ambos casos, y que el agua, luz y gas que se utilizan en las viviendas se asignara automáticamente y cada uno solo pagara lo que quisia.
Eso es Kubernetes: Una plataforma para desplegar aplicaciones, y al mismo tiempo que las controla y gestiona.

Suena bien, ¿verdad?

Antes de adentrarnos más en cómo funciona, entendamos bien la diferencia entre un apartamento o una casa, siguiendo nuestro ejemplo:

Máquinas virtuales

Durante años, las empresas han utilizado máquinas virtuales para sus aplicaciones. En este enfoque, un servidor ejecuta varios «ordenadores virtuales», y cada uno cuenta con su propio sistema operativo, memoria asignada, cpu, etc. De esta forma, dentro de un mismo servidor se pueden segmentar aplicaciones.

Es como tener varios ordenadores independientes dentro de uno solo, cada uno con sus propios recursos asignados. Aunque esta técnica da buenos resultados, tiene algunas limitaciones:

  • Cada máquina virtual necesita un sistema operativo, lo que consume muchos recursos.
  • El arranque y la gestión suele ser bastante lento y pesado.
  • Mover máquinas virtuales entre servidores es muy lento debido a su tamaño.

La ventaja es que sabemos que cada aplicación que se ha montado en una máquina virtual tiene unos recursos específicos para ella, pero por otra parte surgen las siguientes preguntas:

  • ¿Y si tiene asignados más recursos de los que necesita?
  • ¿Y si esta aplicación solo funciona una hora al día para hacer cosas? El resto del tiempo está malgastando los recursos de la empresa

Como puedes ver, aunque este método puede funcionar, en algunos caos de uso no es lo más eficiente…

Contenedores

Los contenedores sin embargo toman un enfoque algo diferente. En lugar de crear un ordenador virtual completo, crea entornos aislados (los contenedores) que en este caso comparten el mismo sistema operativo y recursos del ordenador, pero que son independientes entre sí.

Los contenedores a diferencia de las máquinas virtuales son:

  • Mucho más ligeros al necesitar tener un “ordenador completo” y usar exclusivamente lo que necesitas
  • Arrancan muchísimo más rápido
  • Son fácilmente portables: pueden ejecutarse en cualquier entorno que soporte contenedores

Y aquí es donde entra Kubernetes: mientras que los contenedores por sí solos son útiles, Kubernetes añade una capa de gestión y orquestación (los crea y borra) que los hace realmente potentes en entornos empresariales.

Las ventajas de utilizar Kubernetes

Ahora que hemos entendido esto, podemos adentrarnos un poco más en entender las ventajas que supone usar esta plataforma, frente al uso de máquinas virtuales o contenedores por si mismos llevándolo un paso más adelante:

Mayor eficiencia en la asignación de recursos

Los contenedores comparten los recursos y utilizan solo los que necesitan, por lo que se optimiza el uso de los recursos del ordenador.
Sin embargo, si tenemos una aplicación que requiere de mucha potencia, podemos reservarle unos recursos mínimos. Es decir, tendrá un espacio de la CPU o memoria guardado solo para ella, aun que si necesitara algo más puede utilizar todo lo que quiera de lo que haya disponible.

Tantas aplicaciones como necesites

Dentro de Kubernetes puedes poner a funcionar tantos contenedores con aplicaciones como te hagan falta. Solo debes asegurarte de que los recursos sean suficientes para todos.

Monitorización de los contenedores

Kubernetes vigila continuamente todos los contenedores que tiene. Si en algún momento uno deja de funcionar, lo borra y vuelve a encenderlo configurándolo desde cero. Se evita así que tenga que haber alguien vigilando lo que está ocurriendo y arreglando cosas (que, por experiencia, muchas veces se arreglan apagando y encendiendo).

Escalabilidad automática

Una de las ventajas más notables de Kubernetes es su capacidad para escalar automáticamente las aplicaciones según la demanda. Si un servicio recibe un aumento repentino de tráfico, Kubernetes puede crear más instancias (más contenedores iguales) de ese servicio en cuestión de segundos para aguantar ese aumento.

Alta disponibilidad y tolerancia a fallos

El término de alta disponibilidad se utiliza cuando tienes varias máquinas con la misma aplicación, y puedes repartir la carga de trabajo entre ellas.
A veces esto es más interesante que tener una sola más potente ya que de esta forma, si una falla, el resto seguirán funcionando como si no hubiera pasado nada.

En Kubernetes se ponen a funcionar varios contenedores idénticos, y se reparte el trabajo entre ellos. Si uno deja de funcionar, se reparte el trabajo entre los restantes hasta que el que ha fallado se reinicie, haciéndolo así resistente a fallos

Fácilmente portable

Kubernetes puede desplegarse en cualquier ordenador y en los principales proveedores de cloud como Google, Azure, AWS… Es fácil encontrar un sitio donde utilizarlo.

Conclusión

En un mundo donde la inmediatez y la agilidad son factores tan competitivos, herramientas como Kubernete están acercando capacidades que antes solo eran susceptibles de ser utilizadas por gigantes tecnológicos como Google, permitiendo de esa manera que otras organizaciones, y entre ellas Telefónica, puedan operar con los mismos niveles de eficiencia y flexibilidad.

Si has llegado hasta aquí, ahora entiendes el origen, propósito y funcionamiento básico de una de mis tecnologías preferidas, y una también de las más demandadas.

Espero que este artículo te haya resultado interesante y útil para descubrir y comprender esta tecnología que está transformando la forma en la que funcionan las empresas.

Compártelo en tus redes sociales


Medios de comunicación

Contacta con nuestro departamento de comunicación o solicita material adicional.

Background formBackground form mobile

Suscríbete al blog de Telefónica

Por ejemplo, [email protected]

close-link