viernes, 18 de septiembre de 2020

Orquestación de Contenedores

Con las Imágenes de Contenedor, limitamos el código de la aplicación, su tiempo de ejecución y todas sus dependencias en un formato predefinido. Y, con tiempos de ejecución de contenedores como runC, containerd o rkt, podemos usar esas imágenes preempaquetadas para crear uno o más Contenedores. 

Todos estos entornos de ejecución son buenos para ejecutar contenedores en un solo "host". Pero, en la práctica, nos gustaría tener una solución escalable y tolerante a fallas, que se puede lograr creando un solo controlador/unidad de administración, después de conectar varios nodos juntos. Este controlador/unidad de gestión se conoce generalmente como un Orquestador de Contenedores.

En esta entrega exploraremos por qué debemos usar Orquestadores de Contenedores, veremos diferentes implementaciones de estos y dónde implementarlos.

Los puntos a tratar son:
  • Definir el concepto de Orquestación de Contenedores.
  • Explicar las razones para realizar la Orquestación de Contenedores.
  • Analizar las diferentes opciones de Orquestación de Contenedores.
  • Analizar las diferentes opciones de implementación para Orquestación de Contenedores. 

¿Qué son Contenedores?

Antes de sumergirnos en la Orquestación de Contenedores, revisemos primero qué son.

Los Contenedores son métodos centrados en las aplicaciones para ofrecer aplicaciones escalables de alto rendimiento, en cualquier infraestructura que se elija. Los Contenedores son los más adecuados para ofrecer microservicios, al proporcionar entornos virtuales portátiles y aislados para que las aplicaciones se ejecuten sin interferencia de otras aplicaciones en ejecución.

Los Microservicios
son aplicaciones ligeras escritas utilizando varios lenguajes de programación modernos, con sus propias dependencias, bibliotecas y requisitos ambientales específicos. Para garantizar que una aplicación tenga todo lo que necesita para ejecutarse correctamente, se empaqueta junto con sus Dependencias.

Los Contenedores encapsulan Microservicios y sus Dependencias, pero no los ejecutan directamente. Los Contenedores ejecutan Imágenes de Contenedores.

Una Imagen de Contenedor agrupa la aplicación junto con su ambiente de ejecución y dependencias, implementándose entonces un Contenedor a partir de la Imagen de Contenedor, que a su vez ofrece un entorno ejecutable aislado para la aplicación. Los Contenedores se pueden implementar desde una imagen específica en muchas plataformas, como estaciones de trabajo, máquinas virtuales, nube pública, etc.

¿Qué es la Orquestación de Contenedores?

En entornos de desarrollo (Dev), la ejecución de Contenedores en un solo "host" para prueba y desarrollo de aplicaciones, puede ser una opción. Sin embargo, al migrar a entornos de control de calidad (QA) y producción (Prod), ya no es una opción viable porque las aplicaciones y los servicios deben cumplir requisitos específicos:
  • Tolerancia a fallos
  • Escalabilidad bajo demanda
  • Uso óptimo de recursos
  • Descubrimiento automático para comunicarse entre sí automáticamente
  • Accesibilidad desde el mundo exterior
  • Actualizaciones/reversiones sin interrupciones y/o tiempo de inactividad.
Los Orquestadores de Contenedores son herramientas que agrupan sistemas para formar Clústeres, en los que se habilita un ambiente para la automatización y la escalabilidad en la implementación y administración de Contenedores, para cumplir los requisitos mencionados anteriormente.

Orquestando Contenedores

Dado que las empresas ejecutan sus aplicaciones en Contenedores pudiendo trasladarlas a La Nube, existe una creciente demanda de soluciones de Orquestación de Contenedores. Si bien hay muchas soluciones disponibles, algunas son meras redistribuciones de herramientas de Orquestación de Contenedores bien establecidas, enriquecidas con características y, a veces, con ciertas limitaciones de flexibilidad.

Aunque no es exhaustiva, la lista que compartimos a continuación incluye algunas herramientas y servicios de orquestación de contenedores diferentes, disponibles en la actualidad:

  • Amazon Elastic Container Service (ECS).- Es un servicio alojado proporcionado por Amazon Web Services (AWS) para ejecutar contenedores Docker a escala en su infraestructura.
  • Azure Container Instance (ACI).- Servicio básico de orquestación de contenedores proporcionado por Microsoft Azure.
  • Azure Service Fabric.- Orquestador de contenedores de código abierto proporcionado por Microsoft Azure.
  • Kubernetes.- Herramienta de orquestación de código abierto, iniciada por Google, parte del proyecto Cloud Native Computing Foundation (CNCF).
  • Maratón.- Marco (framework) para ejecutar contenedores a escala en Apache Mesos.
  • Nomad.- Orquestador de contenedores proporcionado por HashiCorp.
  • Docker Swarm.- Orquestador de contenedores proporcionado por Docker, Inc. Es parte de Docker Engine.
Por qué y para qué utilizar Orquestadores de Contenedores

Aunque podemos mantener manualmente un par de contenedores o escribir scripts para docenas de estos, los Orquestadores facilitan mucho las cosas a los operadores, especialmente cuando se trata de administrar cientos y/o miles de Contenedores que se ejecutan en una infraestructura global.

La mayoría de los Orquestadores de Contenedores pueden:
  • Agrupar "hosts" mientras se crea un clúster
  • Programe contenedores para que se ejecuten en "hosts" en el clúster según la disponibilidad de recursos
  • Permitir que los contenedores de un clúster se comuniquen entre sí independientemente del "host" en el que estén implementados en el clúster
  • Vincular contenedores y recursos de almacenamiento
  • Agrupar conjuntos de contenedores similares y vincularlos a construcciones de balanceo de carga, para simplificar el acceso a las aplicaciones en contenedores creando un nivel de abstracción entre los contenedores y el usuario
  • Gestionar y optimizar el uso de recursos
  • Permitir la implementación de políticas para proteger el acceso a las aplicaciones que se ejecutan dentro de los contenedores.
Con todas estas características configurables pero flexibles, los Orquestadores de Contenedores son una opción obvia cuando se trata de administrar aplicaciones basadas en Contenedores, a escala. Aquí en este Blog y en entradas posteriores exploraremos Kubernetes, una de las herramientas de orquestación de contenedores más demandadas disponibles en la actualidad.

A dónde aprovisionar o desplegar Orquestadores de Contenedores

La mayoría de los Orquestadores de Contenedores se pueden implementar en la infraestructura de nuestra elección: servidores físicos, máquinas virtuales, en nuestras instalaciones (On-premise), la Nube Privada o en La Nube Pública. Kubernetes, por ejemplo, se puede implementar en una estación de trabajo, con o sin un hipervisor local como VMware Workstation Player, Oracle VirtualBox, dentro del centro de datos de una empresa, en La Nube dentro de instancias de AWS Elastic Cloud Compute (EC2), máquinas virtuales de Google Compute Engine (GCE), Droplets de DigitalOcean, OpenStack, etc.

Existen soluciones "llave en mano" que permiten la instalación de clústeres de Kubernetes, con solo unos pocos comandos, sobre las infraestructuras como servicio de la nube, como GCE, AWS EC2, Docker Enterprise, IBM Cloud, Rancher, VMware, Pivotal y soluciones multinube a través de IBM Cloud Private y StackPointCloud.

Por último, pero no menos importante, está la Orquestación de Contenedores Administrada como Servicio (CaaS), más específicamente la solución administrada de Kubernetes como Servicio (KaaS), ofrecida y alojada por los principales proveedores de La Nube, como Google Kubernetes Engine (GKE), Amazon Elastic Container Servicices para Kubernetes (Amazon EKS), Azure Kubernetes Service (AKS), IBM Cloud Kubernetes Service, DigitalOcean Kubernetes, Oracle Container Engine para Kubernetes, etc. Estos se explorarán en una de las entradas posteriores.

Para nuestra siguiente entrada, hablaremos más a detalle de qué es Kubernetes y cuáles son sus componentes.

1 comentario:

  1. Congratulation for the great post. Those who come to read your Information will find lots of helpful and informative tips. DP-900: Microsoft Azure Data Fundamentals - Course DP-900

    ResponderEliminar

Todos los derechos reservados.
Copyright © 2025.