Google había ejecutado contenedores Linux a escala durante una década antes de que los contenedores se pusieran de moda. Su sistema Borg gestionaba cientos de miles de trabajos en clústeres de hasta decenas de miles de máquinas, usando un lenguaje declarativo de especificación de trabajos, además de reinicio y reprogramación automáticos cuando una instancia moría.

Kubernetes, publicado como código abierto en 2014, llevó las lecciones de Borg fuera de Google: un almacén persistente compartido, una API REST específica de dominio con versionado y validación, y una estructura uniforme Spec/Status en cada objeto. El objetivo de diseño era hacer que los sistemas distribuidos complejos fueran fáciles de desplegar y gestionar, manteniendo al mismo tiempo las ganancias de utilización que permiten los contenedores.

Como los controladores solo comparan el estado deseado con el estado observado y actúan sobre la diferencia, la plataforma es inherentemente autorreparable y extensible: un autoescalador solo ajusta el número deseado de réplicas y nunca toca la maquinaria que lo reconcilia. Esa única abstracción se convirtió en el estándar por defecto de la industria.

Declarar el estado deseado; un bucle reconcilia la realidad

Las especificaciones declarativas hacen que el mismo YAML funcione en cualquier clúster conforme, eliminando el impuesto a la portabilidad

Una API de objetos uniforme permite que usuarios, componentes internos y automatización impulsen el mismo sistema

El bucle de control convierte los despliegues, las comprobaciones de estado y el escalado en características de un único mecanismo en lugar de código hecho a medida

Publicarlo como código abierto bajo la CNCF dio a cada proveedor un asiento igual, de modo que los gigantes de la nube compitieron por el servicio, no por el bloqueo

Ofrecer un contrato declarativo en lugar de scripts imperativos: los usuarios dicen qué quieren y la maquinaria se encarga del cómo. Ese contrato es lo que hizo de Kubernetes la abstracción que toda nube podía adoptar.

Kubernetes se convirtió en el estándar de facto de la orquestación de contenedores; todas las grandes nubes ofrecen una versión gestionada, y las encuestas de la CNCF lo sitúan entre las plataformas más utilizadas. Borg sigue siendo el sistema interno de Google, pero su descendiente público estandarizó cómo despliega software la industria.

CONSULTA LAS PRUEBAS

Las fuentes

  1. Large-scale cluster management at Google with Borg (abstract) Google Research / EuroSys 2015 · research.google
  2. Borg, Omega, and Kubernetes ACM Queue · queue.acm.org
  3. Kubernetes Overview Kubernetes Documentation · kubernetes.io