El orquestador de contenedores

   En una entrada anterior se ha hablado del soporte lógico Kubernetes, que es, esencialmente un orquestador de contenedores; no obstante, no es el único programa informático de este tipo.
  Un orquestador de contenedores se ocupa del proceso de automatizar las redes y la administración de contenedores para que pueda implementar aplicaciones a escala. La contenerización agrupa el código de una aplicación con todos los ficheros y bibliotecas que necesita para ejecutarse en cualquier infraestructura. Las arquitecturas de microservicios pueden tener cientos, o incluso miles, de contenedores a medida que las aplicaciones crecen y se vuelven más complejas. Por lo tanto, una herramienta de orquestación de contenedores tiene como objetivo simplificar la administración de la infraestructura de contenedores mediante la automatización de todo su ciclo de vida, desde el aprovisionamiento y la programación hasta el despliegue y la eliminación. Las organizaciones pueden beneficiarse de la contenerización a escala sin incurrir en gastos de mantenimiento adicionales.
  Puesto que los contenedores se han convertido en la unidad de computación estándar para las aplicaciones nativas en la nube, los proveedores de nube ofrecen instancias de servidores virtuales para ejecutar todo tipo de cargas de trabajo de computación y son perfectos para las cargas de trabajo basadas en contenedores. El único requisito para poder ejecutar contenedores es que el propio servidor ejecute un servicio de contenerización (Docker, por ejemplo).
  El orquestador de contenedores es necesario si:
  •   Se administran y escalan los contenedores en varias instancias.
  •   Se ejecutan muchas aplicaciones en contenedores diferentes.
  •   Se ejecutan diferentes versiones de aplicaciones a la vez.
  •   Se garantiza la continuidad del servicio de aplicaciones en caso de que se produzca un error en el servidor mediante la ejecución de varias instancias duplicadas (réplicas) de un contenedor.
  •   Se ejecutan varias instancias de una aplicación en varias regiones geográficas diferentes.
  •   Se maximiza el uso de varias instancias de servidor con fines presupuestarios.
  •   Se ejecutan aplicaciones en contenedores de gran tamaño compuestas por miles de microservicios diferentes.

 De este modo, mediante un orquestador de contenedores se puede administrar la creación, la configuración, la programación, el despliegue y la eliminación de contenedores. También es posible:

  •   El equilibrio de carga de aplicaciones y la administración del tráfico.
  •   La continuidad del servicio de aplicaciones en todos los contenedores.
  •    La seguridad en la contenerización.
  •    La supervisión del estado de los contenedores.
  •   Los contenedores de recursos a partir de recursos de instancias o servidores subyacentes.
  •   La resiliencia incorporada: Los soportes lógicos de orquestación de contenedores pueden garantizar que los contenedores se reinicien automáticamente o que haya más de una versión en ejecución en todo momento en caso de que falle la máquina.
  •   Un rendimiento mejorado: Se automatiza la escalabilidad, la disponibilidad y el rendimiento de las aplicaciones en contenedores. Es posible configurar el orquestador de contenedores para que escalen en función de la demanda, la disponibilidad de la red y las restricciones de infraestructura. Este soporte lógico puede supervisar el rendimiento en toda la red de contenedores y reconfigurar automáticamente los contenedores para lograr un rendimiento óptimo.
  •   La optimización de recursos: Un orquestador de contenedores permite a las organizaciones maximizar el uso de cada instancia disponible, así como crear instancias bajo demanda si se agotan los recursos, lo que genera un ahorro de costos en infraestructura.


FUNCIONAMIENTO

    A pesar de que existen diferencias en las metodologías y capacidades en todas las herramientas, la orquestación de contenedores es, esencialmente, un proceso de tres pasos [o ciclo, cuando forma parte de una tubería ("pipeline", en inglés) ágil iterativo o Desarrollo y operaciones ].
  La mayoría de los orquestadores de contenedores son compatibles con un modelo de configuración declarativo: Se escribe un archivo de configuración (en YAML o JSON según la herramienta) que define el estado de configuración deseado. El soporte lógico que ejecuta el archivo utiliza su propia inteligencia para lograr ese estado. El fichero de configuración, normalmente, define qué imágenes de contenedor componen la aplicación y dónde se encuentran (en qué registro), suministra los contenedores con almacenamiento y otros recursos, define y protege las conexiones de red entre contenedores, y especifica el control de versiones (para implementaciones escalonadas).
  El orquestador de contenedores programa la implementación de los contenedores (y réplicas de los contenedores, para la resiliencia) en un nodo. Elige el mejor nodo en función de la capacidad de UCP disponible, la memoria u otros requisitos o restricciones especificados en el archivo de configuración.
  Una vez implementados los contenedores, este soporte lógico gestiona el ciclo de vida de la aplicación contenerizada en función del archivo de definición del contenedor (archivo de Docker, generalmente). Esto incluye:
  •   Gestión de la escalabilidad (hacia arriba y hacia abajo), el equilibrio de carga y la asignación de recursos entre los contenedores.
  •   Garantía de disponibilidad y rendimiento trasladando los contenedores a otro nodo en caso de interrupción o escasez de recursos del sistema.
  •   Recopilación y almacenamiento de datos de registro y otra telemetría que se utilizan para monitorizar la salud y el rendimiento de la aplicación.

ORQUESTADORES DE CONTENEDORES

  Aunque Kubernetes es el orquestador de contenedores más popular, existen otras alternativas que permiten realizar las mismas tareas (y alguna que otra diferente) con contenedores.

Amazon ECS
 Amazon Elastic Container Service (Amazon ECS) es un servicio de orquestación de contenedores completamente administrado que facilita la implementación, la administración y el escalado de aplicaciones en contenedores. Como servicio totalmente administrado, Amazon ECS incluye configuración y prácticas recomendadas operativas integradas de AWS (Amazon Web Services). Se integra con AWS y con herramientas de terceros, como Amazon Elastic Container Registry y Docker. Esta integración facilita a los equipos centrarse en crear las aplicaciones, no en el entorno. Puede ejecutar y escalar las cargas de trabajo de contenedores en todas las Regiones de AWS en la nube y en las instalaciones, sin la complejidad de administrar un plano de control.

Azure Service Fabric
  Se trata del orquestador de contenedores de Microsoft para implementar y administrar microservicios en un clúster de máquinas, que aprovecha las lecciones aprendidas durante la ejecución de servicios de Microsoft a gran escala. Service Fabric puede implementar aplicaciones en cuestión de segundos, con una alta densidad de cientos o miles de aplicaciones o contenedores por máquina. Con Service Fabric, es posible mezclar los servicios en procesos y los servicios en contenedores en la misma aplicación. No fue inicialmente un orquestador de contenedores, pero se le ha agregado esta capacidad.

Docker Swarm
  Este soporte lógico es una herramienta que permite ejecutar los contenedores en una granja de nodos, esto implica uno o varios balanceadores de carga implementados en uno o varios nodos maestros y los nodos que prestan el servicio, implementados en nodos trabajadores. Los contenedores que se ejecutan en modo Swarm se les denomina en ocasiones como modo enjambre.
  La gran ventaja que tiene Swarm es que es un producto de la propia Docker. Eso significa que la integración de Swarm con todos los productos de Docker es muy alta. No obstante se usa muy poco en la actualidad.
 
Mesosphere DC/OS 
  Se trata de un sistema operativo distribuido y de código abierto que permite administrar distintas máquinas virtuales, servidores y aplicaciones en la nube desde una misma interfaz. Dicho de otra forma, DC/OS es una plataforma de orquestación de contenedores y administración de clústeres que permite gestionar de forma sencilla y eficaz todo tipo de contenedores, microservicios distribuidos, aplicaciones heredadas, enlaces de red y cualquier otro elemento que forme parte de una aplicación de nube moderna.
 Este sistema operativo permite "ver" distintas máquinas distribuidas como si fueran una sola.
  Al estar unido al orquestador de contenedores Marathon, a menudo es considerado un mismo soporte lógico.
 
Red Hat Openshift
  Este orquestador de contenedores es una plataforma de aplicaciones de nube híbrida impulsada por Kubernetes que combina servicios probados y confiables para reducir los problemas a la hora de desarrollar, modernizar, implementar, ejecutar y gestionar las aplicaciones. OpenShift ofrece una experiencia uniforme en toda la arquitectura local, del extremo de la red y de la nube pública e híbrida.
  Permite al usuario elegir la solución autogestionada o la totalmente gestionada por un tercero. Independientemente del modo en que se ejecute, OpenShift permite que los equipos se concentren en el trabajo importante.

  Aguardo que la presente entrada haya sido interesante para el lector. Si es así, espero que éste la comente y/o la comparta, por favor.

No hay comentarios:

Publicar un comentario

Deje aquí su comentario, si no puede comentar, pruebe a hacerlo desde otro navegador de red u otro equipo.