Kubernetes: 3 años orquestando contenedores

El sistema Kubernetes, basado en código abierto, cumple su tercer aniversario con un futuro prometedor por delante. Es el gran protagonista de la nube híbrida y el que está acelerando su adopción de forma vertiginosa.

Más allá de su naturaleza, de su funcionalidad, Kubernetes es una de las muestras más recientes del potencial que alberga el código abierto. Este sistema de orquestación de aplicaciones en contenedores fue inicialmente propiedad de Google allá por 2014, cuando aún se conocía como Borg. Lo estuvo utilizando de forma interna para gran parte de sus servicios en la nube, pero en ese momento descubrió que tenía un enorme potencial y que necesitaba de la ayuda de la comunidad Open Source para poder explotarlo.

Así, la primera versión de Kubernetes vio la luz en julio de 2015, algo que ocurrió de forma paralela a la creación de la Cloud Native Computing Foundation (CNFC), con Red Hat como miembro fundador (y segundo  mayor contribuidor del proyecto) junto con Google y otras compañías. Fue el momento en que el gigante de las búsquedas lo cedió a la comunidad para que todos tuvieran la oportunidad de trabajar en su desarrollo y nuevas funcionalidades.

En tan solo tres años, este sistema se ha convertido en un estándar de facto en la industria cloud, siendo clave en la adopción masiva de entornos multicloud e híbridos. No habría sido así de no ser por ese movimiento hacia el mundo del software libre, el mismo que en 25 años ha sido capaz de desarrollar el Kernel de Linux o crear plataformas como OpenStack.

No entraremos en detalles técnicos que puedan alargar este artículo (Brendan Burns, uno de sus creadores, lo explica  mucho mejor en este vídeo), pero básicamente Kubernetes es un sistema que permite desacoplar las aplicaciones del hardware y de otros componentes de software necesarios para su correcta ejecución.  Es capaz de distribuir de forma automatizada esos componentes y abstraerlos del lugar donde estén albergados, orquestándolos para que su despliegue, gestión, ejecución y escalado sean procesos mucho más simples, rápidos y eficientes para los administradores.

No hay más que ver la larga lista de miembros que trabajan en el desarrollo de este proyecto como parte de la CNFC. Es destacable la presencia de todos los grandes proveedores de servicios en la nube a nivel mundial: Alibaba, AWS, Azure, Google Cloud, IBM Cloud, Huawei Cloud, Oracle… y un largo etcétera de socios interesados en el desarrollo de arquitecturas multicloud. Todos ellos no solamente lo usan de forma interna, sino que también proporcionan servicios a terceras empresas, a clientes finales.

A continuación, las principales mejoras que Kubernetes ha experimentado a lo largo de sus tres años de vida:

  • Septiembre de 2015: el uso de Kubernetes de la Container Network Interface (CNI) ha permitido un rico ecosistema de opciones de red desde los primeros días de Kubernetes.
  • Diciembre de 2016: la adición de Container Runtime Interface (CRI), la forma en que los contenedores arrancan y se detienen, fue un importante paso adelante del Kubernetes 1.5 y versiones posteriores, y ayudó a avanzar hacia contenedores y herramientas que cumplan con OCI.
  • Enero de 2017: etcd v3, la columna vertebral de los sistemas distribuidos a gran escala creados por CoreOS y mantenidos en Red Hat, entró en producción en Kubernetes 1.6.
  • Junio ​​de 2017: las Definiciones de Recursos Personalizados (Custom Resource Definitions – CRD) se introdujeron para permitir la extensión API por parte de aquellos que están fuera de la plataforma central.
  • Octubre de 2017: la estabilidad del control de acceso basado en roles (RBAC), que permite a los administradores controlar el acceso a la API de Kubernetes, ha hecho que Kubernetes sea aún más fiable con esta característica de seguridad que es valorada por las empresas. Alcanzó la estabilidad en Kubernetes 1.8 pero había sido ampliamente utilizado en la plataforma desde la versión 1.3.
  • Marzo de 2018: la forma de proporcionar y consumir el almacenamiento ha avanzado en tres años con la disponibilidad de volúmenes locales persistentes (PV) y PV provisionados dinámicamente. A partir de este momento, la Interfaz de Almacenamiento de Contenedores (Container Storage Interface – CSI), que hace que el plugin layer de volúmenes de Kubernetes sea más extensible, se convirtió en beta este año en Kubernetes 1.10.
  • Junio ​​de 2018: La versión de Definición de Recursos Personalizados (CRD) se introdujo como beta en Kubernetes 1.11 y es un paso hacia la reducción de barreras y facilita la creación de operadores.