La guía nerd para la orquestación de contenedores

Hoy en día, incluso un pequeño dispositivo informático como el teléfono inteligente tiene una enorme capacidad de procesamiento que puede realizar miles de millones de cálculos por segundo. Desde 1960, la comunidad de TI ha estado preocupada por una pregunta creciente: ¿estos recursos informáticos asignados físicamente se utilizan 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 ámbito informático. La virtualización se puede definir como el proceso de creación de objetos de recursos lógicos a partir de recursos informáticos físicos al romper el vínculo inicial entre el software y el hardware y aislarlos del sistema central. Con la adopción de la virtualización en la informática, los investigadores de TI podrían crear LAN virtuales (VLAN) que funcionan sobre redes informáticas físicas para máquinas virtuales que funcionan sobre máquinas informáticas físicas al lograr elasticidad, mayor disponibilidad, movilidad y escalabilidad. , seguridad y, lo que es más importante, eficiencia.

¿Qué es la contenerizació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 que los clientes aprovisionen máquinas virtuales (VM) bajo demanda 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 para 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 consumen menos recursos para ejecutar la aplicación al superar los problemas de dependencia y las demoras causadas por la capa del sistema operativo. La diferencia entre una máquina virtual y un contenedor se puede presentar a continuación.

Máquina virtual Envase
La máquina virtual debe ejecutar los procesos del 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 máquina virtual tiene su propio sistema operativo Todos los contenedores comparten el mismo sistema operativo
Aislamiento completo del nivel del sistema operativo Aislamiento a nivel de procesos, pero seguro
Virtualización de hardware a través de un hipervisor Virtualización a nivel de SO a través de un orquestador de contenedores (Container Engine).
Requisito de memoria asignada Requisito de memoria comparativamente menor
Comparativamente menos rendimiento Mayor rendimiento nativo para aplicaciones
Máquina virtual frente a contenedor
Arquitectura de máquina virtual frente a contenedor
Arquitectura de máquina virtual frente a contenedor

Evolución de la contenedorización

El primer intento notable de virtualización 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 central que puede usar diferentes sistemas operativos por parte de múltiples usuarios además del sistema operativo VM/370 que actúa como sistema operativo host. Sin embargo, el concepto de virtualización moderno que utiliza un software de agente de virtualización especializado llamado Virtual Machine Monitor (VMM), actualmente conocido como hipervisor, fue presentado 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 nacida World Wide Web ejecuten la codificación web de una manera portátil y segura. A continuación, un proyecto de la Universidad de Stanford impulsó el inicio de una legendaria empresa de virtualización que llevó la virtualización a su siguiente fase llamada computación en la nube.

Cloud Computing se convirtió en un concepto muy innovador y muchas tecnologías nuevas 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 chrootun sistema operativo UNIX que es capaz de aislar (sandbox) espacio en disco para cada proceso introducido.
  • Derrick Woolworth desarrolló un sistema operativo llamado Cárceles de FreeBSD en 2000 que también puede aislar el sistema de archivos, la red y los usuarios para cada proceso informático.
  • Además, a las capacidades de FreeBSD, Servidor Linux V 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 se lanzó en 2004 y tiene la capacidad de realizar funciones de virtualización, creación de instantáneas y clonación basadas en zonas.
  • En 2005 Abierto Virtuzzo (Abierto 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.
  • Wadenuna 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 Déjame contener eso para ti (LMCTFY) lanzado al público en 2013.
  • La ballena azul de los 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 compatible con la nube en casi todos los proveedores de IaaS en la nube.

Beneficios de usar 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 relacionadas 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 elástico de recursos 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 se ejecuta en el contenedor con fines de copia de seguridad y prueba consume menos tiempo y recursos.
  • DevOps o el mantenimiento y la actualización de varias aplicaciones al mismo tiempo se pueden realizar en un único panel de control 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 de un 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 contenedores como CPU, RAM, espacio en disco.
  • Supervisión del estado del contenedor
  • Demostrar redundancia y disponibilidad para los contenedores.
  • Gestión de contenedores basada en API
  • Clonación y creación de instantáneas de contenedores
  • Equilibrio de carga entre contenedores.

Container Orchestration ha abordado muchos problemas candentes de la virtualización, como la rápida elasticidad de la escalabilidad del servidor. Sin embargo, el monitoreo eficiente de contenedores sigue siendo un desafío en la tecnología de orquestación de contenedores que debe abordarse en un futuro cercano.

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 las aplicaciones en la nube en contenedores. En otras palabras, estas herramientas también pueden denominarse sistemas operativos (SO) en los centros de datos. El investigador ha comparado tres herramientas de orquestación de contenedores que utilizan ampliamente en la siguiente tabla.

Logotipo de Kubernetes
Herramienta Kubernetes Estibador Amazon ECS
Tipo de programa Fuente abierta gratuito Proveedor bloqueado.
Desarrollador Google/Fundación de computación nativa en la nube estibador inc. Servicios web de Amazon
Año de lanzamiento 2014 2013 N / A
Escalabilidad Escalado automático Sin escalado automático Escalado automático
Instalación Fácil Requiere tiempo Fácil
Tolerancia a fallos Alto Bajo Alto
Balanceo de carga Automatizado (Interno) Servicio definido Automatizado (Interno)
Capacidades de la API API de cliente proporcionada Limitado Previsto
Soporte comunitario Activo y de rápido crecimiento Bueno Activo
Soporte de GCP Administrado y Nativo Se puede instalar De nada
Comparación de herramientas de orquestación de contenedoresnorte

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