BLOG

Buscar
  • José Antonio Ces Franjo

Siete de Nueve

Actualizado: 16 de sep de 2018

Esta semana nos ha tocado entrar a fondo en Kubernetes, una tecnología que se ha convertido ya en el estándar de facto para la orquestación de contenedores. Me ha parecido un buen tema para el post de esta semana. Mucha gente lo equipara con Docker pero, aunque ambas tecnologías tienen que ver con lo mismo, son cosas bien distintas. Te lo cuento.


En 2015 Google anunció el lanzamiento de Kubernetes. Casi al mismo tiempo lo donaba a la CNCF (Cloud Native Computing Foundation) como una semilla tecnológica que ayudaría a la consolidación y el desarrollo de dicha fundación. La palabra Kubernetes procede del griego y significa timonel. De ahí su logo. El hecho de que el timón tenga siete radios tiene que ver con el nombre en clave del proyecto en Google: "project seven". Un nombre que derivaba, a su vez, del personaje Siete de Nueve de la serie "Star Trek: Voyager". Hay mucho friki suelto. Siete de Nueve es un Borg interpretado por la actriz Jeri Ryan que le debió molar a alguno del equipo que trabajaba en la evolución del producto original. Y es que existía un producto predecesor a Kubernetes en Google. Su nombre era Borg y de ahí toda esta historia. Pelín rocambolesco.

Kubernetes es un sistema "open-source" para la automatización de despliegues, el escalado y la gestión de aplicaciones "contenerizadas".

Pero dejémonos de historias y entremos en materia. Kubernetes es un sistema "open-source" (código libre) para la automatización de despliegues, el escalado y la gestión de aplicaciones "contenerizadas". Bueno. Veo que me estás mirando con cara rara. Quizás deba explicarte antes qué esto de los contenedores para que entiendas en qué mejora Kubernetes su funcionamiento. Así que empecemos revisando algunos conceptos que considero básicos.


¿Qué es un contenedor?

Como su propio nombre indica, un contenedor es "algo" que contiene. ¿El qué? Pues es sencillo. Estamos hablando de informática, así que contendrá aplicaciones. Programas software. ¿Para qué? ¿Por qué? Pues básicamente porque necesita garantizarse que el entorno de dicha aplicación es siempre el mismo para que funcione siempre igual y se pueda instalar en cualquier sitio.


Los contenedores, por lo tanto, son elementos que permiten aislar una aplicación y sus dependencias. La filosofía es idéntica a los contenedores que se utilizan en el transporte, que permiten que el transportista los trate todos por igual con independencia de su contenido. De esta forma, un contenedor de una o varias aplicaciones podrá ubicarse en cualquier infraestructura física e incluso en cualquier sistema operativo. Y esto facilita mucho las cosas a los equipos de operaciones, al tiempo que permite el tratamiento de las aplicaciones de manera aislada. Muy en la línea de los "microservicios" de los que prometo hablarte muy pronto en este blog.

La filosofía es idéntica a los contenedores que se utilizan en el transporte, que permiten que el transportista los trate todos por igual con independencia de su contenido.

Los contenedores tienen bastantes puntos en común con las máquinas virtuales. Y es que contenedores y máquinas virtuales eliminan la necesidad de un hardware físico dedicado, permitiendo un uso más eficiente de los recursos. Sin embargo, existe una importante diferencia entre ambos enfoques. Su arquitectura. En la siguiente figura te lo muestro.

Como puedes ver, las máquinas virtuales tienen asociado un sistema operativo propio. En su parte software son ordenadores completos que comparten infraestructura física con otros similares. Pero a efectos prácticos son ordenadores completos con lo que esto supone. Sin embargo los contenedores no precisan de esta "carga" que supone tener un sistema operativo propio. Son capaces de conseguir el aislamiento de la aplicación y su perfecto funcionamiento sin necesidad de ello. Y aquí reside su poder. Como puedes ver en la figura la capa "Docker engine" permite que varios contenedores compartan un mismo sistema operativo. Docker, por si no lo sabías, es el referente de toda esta tecnología y, aunque existen alternativas en el mercado, lo cierto es que su liderazgo es muy fuerte. Hablar de contenedores es hablar de Docker y viceversa. Cada día más.

Docker es el referente de la tecnología de contenedores y, aunque existen alternativas en el mercado, lo cierto es que su liderazgo es muy fuerte

En resumen, mediante el uso de contenedores, los recursos pueden ser aislados, los servicios restringidos, y se otorga a los procesos la capacidad de tener una visión casi completamente privada del sistema operativo. Con su propio identificador de proceso, su propia estructura de archivos, y sus propias interfaces de red. De esta forma, varios contenedores compartirán un mismo núcleo, pero cada uno de ellos utilizará sólo una cantidad definida de recursos como CPU, memoria, dispositivos de entrada/salida, etcétera. Algo mucho más moderno y más eficiente que las tecnologías anteriores de virtualización. Consecuentemente, poco a poco, los contenedores se van extendiendo por todos los centros de datos.


Kubernetes

Hemos visto que los contenedores son una forma poderosa y flexible para implementar de manera segura y confiable aplicaciones y "microservicios". Los contenedores, al igual que la virtualización, son piezas software. Y como tales son elementos bastante modulables. Capas de abstracción que pueden ser modificadas en función de la necesidad. De esta forma, una máquina virtual se "configurará" con una capacidad de procesamiento y una memoria RAM acorde a lo que exige la aplicación o aplicaciones que vayamos a cargar en ella. Exactamente igual sucede en los contenedores. Y es precisamente aquí donde Kubernetes se complementa perfectamente con ellos y adquiere un valor indiscutible. Pero... ¿qué hace entonces Kubernetes? ¿Para qué sirve y cómo complementa este tipo de arquitecturas software?

Kubernetes es un orquestador que permite organizar distintos contenedores

Tanto en el mundo de la virtualización como en el de los contenedores hay una figura que es crítica en lo que respeta al despliegue, mantenimiento y gestión de toda esta infraestructura virtual. Se trata de los orquestadores. Kubernetes es un orquestador que permite organizar distintos contenedores. Como si de un director de orquesta o un guardia de tráfico se tratase, Kubernetes se encarga de que una aplicación funcione correctamente proporcionándole más recursos si los que tiene asignados son escasos. O de repartir tareas entre distintos contenedores si éstos están configurados de manera que la carga se debe repartir entre ellos. También permite aplicar nuevas configuraciones y guardar de forma segura las passwords y las claves SSH. Y alguna cosa más.


Estándar de facto

Aunque este tipo de tareas puede realizarse con las aplicaciones de gestión que facilitan los proveedores de los contenedores, Kubernetes es mucho más versátil y potente que cualquier de ellos. Y es que permite el despliegue de "clusters" de contenedores mucho más grandes y que pueden ser de distintos fabricantes. Por lo tanto, cuando la necesidad crece más allá de una implementación estándar o cuando se necesita administrar múltiples aplicaciones en contenedores desde diferentes sistemas, es cuando Kubernetes adquiere valor. Y como el mundo es por definición heterogéneo y complejo, nuestro objeto de estudio cobra un alto interés. Esto ha hecho que Kubernetes se haya convertido en un estándar de facto como orquestador de contenedores. De todos los fabricantes. Prácticamente nadie utiliza otro software que no sea éste para realizar esta gestión de sus contenedores.

Con Kubernetes, los contenedores pueden provenir de un número de proveedores muy amplio lo que hace que sea increíblemente flexible y muy útil en nuestro momento actual y futuro

En definitiva, Kubernetes está llamado a ser uno de los pilares de las nuevas arquitecturas de computación. Una referencia muy seria y de largo recorrido. Cada día la vemos en más sitios como elemento fundamental de los sistemas. En el estudio que estamos llevando a cabo actualmente nos los hemos encontrado sirviendo como habilitadores de la "hibridación" de la computación tradicional con las nuevas tendencias emergentes de computación espacial (ver post "El fin de la Ley de Moore"). Un elemento básico para compaginar dos mundos que deberán trabajar juntos los próximos años hasta su consolidación.


Más allá de este ejemplo, que no es más que uno entre cientos, Kubernetes es un invento que será fundamental en el desarrollo de la computación futura y que se irá incorporando de manera progresiva a todas las infraestructuras de las empresas y los organismos públicos de todo el mundo. Con esa relevancia presente y futura, lo curioso es que hoy constituye el centro del portfolio de una fundación. A mi no deja de parecerme una paradoja ;)


Anyway... ¡gracias, Google!

65 vistas
  • LinkedIn - Círculo Negro
  • Twitter - Círculo Negro
  • Facebook - Círculo Negro

Room714 © 2019

Madrid | Spain