Hoy, incluso un dispositivo informático pequeño como el teléfono inteligente tiene una capacidad de procesamiento masivo que puede realizar miles de millones de cálculos por segundo. Desde 1960, la comunidad de TI se ha preocupado por una pregunta cada vez mayor, si estos utilizan físicamente la potencia de computación de manera eficiente. Para resolver este problema causado por los recursos infrautilizados de los dispositivos informáticos, se introdujo la tecnología de virtualización en el campo de la informática. La virtualización se puede definir como el proceso de crear objetos de recursos lógicos a partir de recursos físicos de la computadora rompiendo el vínculo inicial entre el software y el hardware y aislándolos del sistema central. Con la adopción de la virtualización a la informática, los investigadores de TI podrían crear LAN virtuales (VLAN) que operan sobre redes informáticas físicas para máquinas virtuales que se ejecutan sobre máquinas informáticas físicas al lograr elasticidad, mayor disponibilidad, movilidad, escalabilidad , seguridad y, lo que es más importante, eficiencia.

¿Qué es la contenedorización?

Computación en la nube es una aplicación de tecnología de virtualización para crear un gran grupo de recursos informáticos virtualizados y permitir a los clientes aprovisionar máquinas virtuales (VM) a pedido de manera rentable. Pero las máquinas virtuales requieren ejecutar su propio sistema operativo invitado completo para actuar como un dispositivo informático y este proceso de arranque del sistema operativo requiere 1 minuto o, en algunos casos, más de 10 minutos. Este retraso en el tiempo de inicio fue un problema para los servicios de Cloud Computing como PaaS y SaaS. Para superar este problema, se introdujo un intento de virtualización llamado contenedorización a los proveedores de servicios en la nube.

Contenedores son similares a las máquinas virtuales, pero son entornos virtuales que consumen menos tiempo, son livianos, portátiles y requieren menos recursos para ejecutar la aplicación al superar los problemas de dependencia y los retrasos causados ​​por la capa del sistema operativo. La diferencia entre una VM y un contenedor se puede presentar a continuación.

Máquina virtual Envase
VM necesita ejecutar procesos de hipervisor y el inicio del sistema operativo (arranque) antes de ejecutar una aplicación. La aplicación se puede ejecutar directamente sin esperar ningún otro proceso.
Archivo de imagen virtualizado pesado Archivo de imagen virtualizado ligero
Cada VM tiene su propio sistema operativo Todos los contenedores comparten el mismo sistema operativo
Nivel del sistema operativo totalmente aislado Procesos de aislamiento de nivel, pero seguro
Virtualización de hardware a través de un hipervisor Virtualización a nivel del sistema operativo a través de un orquestador de contenedores (Motor de contenedores).
Requisito de memoria asignada Comparativamente menos requerimiento de memoria
Comparativamente menos rendimiento Mayor rendimiento nativo para aplicaciones
VM vs Contenedor
VM vs arquitectura de contenedores

Evolución de la contenedorización

El primer intento de virtualización notable en la historia de TI es Instalación de máquina virtual / 370 (VM / 370). En la década de 1960, los ingenieros de IBM implementaron la primera máquina virtual en una computadora mainframe que es capaz de usar diferentes sistemas operativos por múltiples usuarios además del sistema operativo VM / 370 que actúa como el sistema operativo host. Sin embargo, el concepto moderno de virtualización que utiliza un software de agente de virtualización especializado llamado Virtual Machine Monitor (VMM), actualmente conocido como hipervisor, fue introducido al mundo por Gerald J. Popek y Robert P. Goldberg a través de su artículo llamado «Requisitos formales para arquitecturas virtualizables de tercera generación» en 1974

En la década de 1980 se introdujo la virtualización basada en lenguajes de programación y el ejemplo más ideal para eso es Smalltalk-80 de Xerox PARC. Luego, en la década de 1990, Sun Microsystems lanzó su máquina virtual de Java al permitir que los desarrolladores web de la recién creada World Wide Web ejecuten la codificación web de una manera portátil y segura. Luego, un proyecto de la Universidad de Stanford lideró el inicio de una legendaria compañía de virtualización que dirigió la virtualización a su siguiente fase llamada computación en la nube.

Cloud Computing se convirtió en un concepto muy innovador y muchas nuevas tecnologías comenzaron a desarrollarse desde sus raíces. Los contenedores también son una tecnología que intercepta la historia de Linux. La historia de la contenedorización se puede señalar a continuación,

  • En 1979 chroot, un sistema operativo UNIX que puede aislar (sandbox) el espacio en disco para cada proceso introducido.
  • Derrick Woolworth desarrolló un sistema operativo llamado Cárceles de FreeBSD en 2000 que puede aislar el sistema de archivos, la red y los usuarios para cada proceso informático también.
  • Además, a las capacidades de FreeBSD, LinuX VServer que se introdujo en 2001 pudo dedicar la potencia de la CPU y la memoria de la computadora para la virtualización a nivel de proceso.
  • Contenedores Solaris fue lanzado en 2004, que tiene la capacidad de realizar funciones de virtualización, captura de imágenes y clonación basadas en zonas.
  • En 2005 Abrir Virtuzzo (Abrir VZ), se introdujo una metodología de virtualización a nivel de sistema operativo para Linux.
  • Para controlar y aislar CPU, E / S de disco, red de memoria para un grupo de procesos, Google desarrolló Contenedores de proceso en 2006.
  • El primer administrador de contenedores, Contenedores Linux (LXC) fue introducido en 2008.
  • Waden, una plataforma de administración de contenedores que permite administrar contenedores a través de API, fue desarrollada y lanzada en 2011 por CloudFoundry.
  • La versión de código abierto de la herramienta de administración de contenedores de Google llamada Let-Me-Contain-That-For-You (LMCTFY) lanzado al público en 2013.
  • La ballena azul de contenedores, Estibador llegó a la industria de la nube en 2013 con su propio ecosistema libcontainer.
  • En 2016 Kubernetes que fue desarrollado originalmente por Google fue entregado a Cloud Native Computing Foundation (CNCF). Desde entonces, esta herramienta de orquestación en la nube de código abierto permitió una orquestación de contenedores amigable con la nube en casi todos los proveedores de IaaS en la nube.

Beneficios del uso de contenedores

Los siguientes hechos se pueden enumerar como los beneficios de usar instancias de aplicaciones virtualizadas basadas en contenedores.

  • La aplicación está totalmente aislada del sistema operativo host y no tiene otras aplicaciones no relativas que se ejecuten simultáneamente en el entorno del contenedor.
  • Mediante el uso de herramientas de orquestación de contenedores, los contenedores se pueden configurar para realizar escalado de recursos elástico en función de la demanda.
  • Los contenedores son imágenes virtualizadas livianas y el rendimiento es mejor que una máquina virtual tradicional.
  • La replicación o clonación de la aplicación idéntica que se ejecuta en el contenedor con fines de respaldo y prueba consume menos tiempo y recursos.
  • DevOps o el mantenimiento y la actualización de varias aplicaciones al mismo tiempo se pueden llevar a cabo en un único panel de orquestación en la nube.
  • Puede proporcionar una mayor disponibilidad a la aplicación, al proporcionar una arquitectura de contenedor redundante a través del orquestador de contenedores.

¿Qué es la orquestación de contenedores?

Container Orchestration es el método de gestión y control de contenedores y su ciclo de vida con automatización al proporcionar las siguientes características.

  • Despliegue y aprovisionamiento de contenedores en un entorno virtualizado.
  • Proporciona escalado elástico para recursos de contenedor como CPU, RAM, espacio en disco.
  • Contenedor de vigilancia de la salud
  • Prueba de redundancia y disponibilidad para contenedores
  • Gestión de contenedores basada en API
  • Contenedores de clonación e instantáneas
  • Equilibrio de carga entre contenedores.

La Orquestación de contenedores ha abordado muchos problemas candentes de virtualización, como la rápida elasticidad de la escalabilidad del servidor. Sin embargo, la monitorización eficiente de contenedores sigue siendo un desafío en la tecnología de orquestación de contenedores que debería abordarse en un futuro próximo.

Herramientas de orquestación de contenedores

El sistema de orquestación de contenedores es una plataforma basada en la nube que automatiza el aprovisionamiento, el mantenimiento y el depósito del servidor o aplicaciones en la nube en contenedores. En otras palabras, estas herramientas también se pueden llamar como los sistemas operativos (SO) en los centros de datos. El investigador ha comparado tres ampliamente utilizando herramientas de orquestación de contenedores en la siguiente tabla.

Herramienta Kubernetes Estibador Amazon ECS
Tipo de software Fuente abierta Freemium Vendedor bloqueado.
Desarrollador Fundación de computación nativa de Google / Cloud Docker Inc. Servicios web de Amazon
Año de lanzamiento 2014 2013 N / A
Escalabilidad Auto Scaling Sin escala automática Auto Scaling
Instalación Fácil Requiere tiempo Fácil
Tolerancia a fallos Alto Bajo Alto
Balanceo de carga Automatizado (interno) Servicio definido Automatizado (interno)
Capacidades API API de cliente proporcionada Limitado Previsto
Soporte comunitario Crecimiento activo y rápido Bueno Activo
Soporte de GCP Gestionado y nativo Se puede instalar De ningún modo
Comparativa de herramientas de orquestación de contenedoresnorte

Entre esas herramientas, Kubernetes es el héroe actual de orquestación de contenedores. La nube popular IaaS como AWS, GCP, Digital Ocean proporciona su servicio Kubernetes administrado y en GCP, se llama Motores Kubernetes de Google (GKE).