Análisis en profundidad

Kubernetes: cuándo y cómo utilizarlo

Desarrollado inicialmente por Google como una evolución de su sistema interno Borg, Kubernetes es ahora una plataforma de código abierto utilizada para el despliegue y gestión automática de contenedores. La amplia gama de funcionalidades, la portabilidad entre los principales proveedores de la nube y la alta fiabilidad la han convertido en poco tiempo en una de las herramientas más populares para los desarrolladores que quieren optimizar los recursos ofreciendo una infraestructura de alto rendimiento.

Publicado el 12 Nov 2021

kubernetes

En griego antiguo, Kubernetes significa “timonel” o “piloto”. Cuando en 2014 Google eligió este nombre para referirse a la plataforma de código abierto para el despliegue y gestión de contenedores, optó por un logotipo en el que un timón estilizado recordaba el origen del término. Al mismo tiempo, los siete radios del timón hacían referencia al proyecto Seven of Nine que estuvo en el origen de Kubernetes como una evolución de Borg, el gestor de clústeres utilizado internamente por los ingenieros de Mountain View. En este caso, la alusión semántica no era a la antigüedad clásica, sino al universo más reciente de Star Trek y al tipo de relación en la cadena de mando que una de las protagonistas (Siete de Nueve, precisamente) tenía con el colectivo de drones borg. En 2015 Google, tras una alianza con la Fundación Linux, decidió donar Kubernetes a la recién creada Fundación de Computación Nativa en la Nube (CNCF), a la que ahora se unen los gigantes de la nube pública del mundo junto con un centenar de startups.

Por qué nació Kubernetes

La génesis del proyecto ha sido relatada en varias ocasiones por Craig McLuckie, cofundador de Kubernetes junto a Joe Beda durante los años en que ambos trabajaron en Google Compute Engine, la infraestructura que está detrás de servicios online como Google Search, Gmail y YouTube. En una de esas ocasiones, McLuckie informa sobre una de las claves de las que partió el “open-sourcing Kubernetes”, a saber, la infrautilización de las CPU frente a las virtual machines (VM) por parte de los clientes, que tenían que asumir los costes asociados de todos modos. “Sabíamos que teníamos una solución interna para este problema”, escribe el actual vicepresidente de I+D de VMware. “Es más, sabíamos que los contenedores eran el futuro de la informática: son escalables, portátiles y más eficientes. El sistema de contenedores Docker ya estaba en marcha y nos pareció estupendo. Pero el truco, que conocimos a través de años de prueba y error dentro de Google, era un gran sistema de gestión de contenedores. Eso es lo que queríamos construir”.

Comparación entre contenedores y virtual machines (VM)

La ventaja de los contenedores sobre las virtual machines es que virtualizan las aplicaciones de software y no, como ocurre con las virtual machines, toda la infraestructura informática. Dado que los contenedores utilizan el sistema operativo del anfitrión en lugar del propio, requieren un mínimo de recursos de procesamiento y son más fáciles de instalar. Los desarrolladores, en esencia, no tienen que intervenir para modificar toda la infraestructura, sino en cada componente individual de la aplicación. De ahí la necesidad de un modelo que gobierne automáticamente la administración de contenedores desplegados en clusters y en múltiples servidores anfitriones. El resultado es un movimiento global que ve a Kubernetes (también abreviado como “K8s” o “Kube”) como una de las principales herramientas para ese fin, con una velocidad de adopción que, según el propio McLuckie, ni siquiera “los objetivos más descabellados” de sus fundadores habían previsto. En 2019, de hecho, podría contar con más de 2.300 colaboradores y una adopción generalizada entre las empresas más innovadoras del mundo en sectores económicos dispares.

Cómo funciona la arquitectura de Kubernetes

Para entender las razones de su éxito, analicemos primero la arquitectura y los elementos clave de Kubernetes, que son los siguientes: master, nodos, kubelet, pod.

Maestro

Es la máquina que controla los nodos y permite ejecutar un servicio de programación que puede automatizar el despliegue de contenedores en función de los requisitos establecidos por el desarrollador y la capacidad de computación disponible.

Nudos

Los clusters están formados por nodos, cada uno de los cuales representa un único host de computación, es decir, una máquina virtual o física. Los nodos realizan las tareas que se les asignan bajo la dirección del nodo maestro que los controla.

Kubelet

Es el agente de software que recibe y ejecuta las órdenes del nodo maestro, asegurándose de que los contenedores definidos se inicien y ejecuten.

Pod

Los pods son grupos de contenedores que comparten los mismos recursos informáticos y la red. También representan la unidad de escalabilidad de Kubernetes y, por lo tanto, si un contenedor en un pod recibe más tráfico del que puede manejar, Kubernetes replica el pod a otros nodos en el clúster.

Las ventajas de utilizar la plataforma K8s

El creciente aprecio de que goza Kubernetes entre la comunidad de desarrolladores se debe a su amplitud de funciones, a su vasto ecosistema de herramientas de apoyo de código abierto y a su portabilidad entre los principales proveedores de la nube, algunos de los cuales ofrecen servicios K8s de forma totalmente gestionada. Especialmente en los escenarios actuales dominados por los contenedores y la consiguiente necesidad de garantizar la seguridad, Kubernetes es capaz de integrar los distintos niveles de seguridad de la misma manera que administra las cargas de trabajo, las redes, el almacenamiento, etc., proporcionando una arquitectura de contenedores completa. Una ventaja que también se refleja en la reducción del riesgo de downtime, dado que la arquitectura redundante de la plataforma asegura niveles de continuidad del servicio con porcentajes cercanos al 100%. Por ello, Kubernetes se cuenta entre las soluciones de alta fiabilidad (HA) que contemplan el mayor rendimiento SLA (Service Level Agreement).

Algunos ejemplos prácticos de cómo ejecutar Kubernetes

Aunque Kubernetes nació para gestionar contenedores de Linux, también puede funcionar en Windows o macOS. Si eliges una VM, cualquiera puede servir para el propósito: desde Google Compute Engine hasta OpenStack, desde Azure Virtual Machines hasta EC2 de Amazon, etc. Además, hay más de 90 ofertas certificadas que acreditan el cumplimiento del software para que cada proveedor soporte las APIs requeridas y la interoperabilidad de una instalación de Kubernetes a otra. Algunas de estas ofertas, como Canonical, Red Hat OpenShift y Suse CaaS Platform, por nombrar las más conocidas, al proporcionar Kubernetes junto con una distribución de Linux, no requieren la descarga e instalación en un sistema operativo concreto, lo que alivia la carga de tener que configurar manualmente el sistema, ya que Kubernetes se ofrece como orquestador nativo. Incluso en la nube, por ejemplo en Google Cloud Platform, está disponible como función nativa. Sin embargo, si quieres ejecutar Kubernetes localmente como máquina de desarrollo, la herramienta Minikube es la más sugerida por los desarrolladores.

Federation v2 y el futuro de la orquestación de contenedores

El futuro de Kubernetes es la sincronización total de las aplicaciones en múltiples clústeres, múltiples regiones y en entornos multi-nube. Es una ambición que lleva adelante Federation, que ha alcanzado la versión 2 como el mayor subproyecto de código abierto a la sombra del timón. Entre sus objetivos, la Federación v2 persigue:

  • Distribución óptima de la carga de trabajo en todos los clústeres mediante la configuración automática de los servidores DNS y los equilibradores de carga;
  • la posibilidad de evitar el bloqueo del proveedor de la nube, simplificando la migración de aplicaciones entre clusters y promoviendo la nube híbrida;
  • baja latencia dividiendo los clusters en varias regiones para que estén lo más cerca posible de los usuarios;
  • la capacidad de aislar los fallos, facilitada, por ejemplo, por múltiples clusters pequeños en lugar de un único cluster grande.

El proyecto Federation v2 es relativamente nuevo y aborda los problemas mencionados anteriormente. Una vez resuelto, si Kubernetes es ya el principal sistema de orquestación automatizada de contenedores, se convertirá prácticamente en la plataforma sin rival en este ámbito.

¿Qué te ha parecido este artículo?

¡Su opinión es importante para nosotros!

G
Carmelo Greco

Artículos relacionados

Artículo 1 de 2