sql >> Base de Datos >  >> RDS >> Database

Cómo comenzar con Amazon ECS y Amazon Fargate

Docker se puede instalar en las plataformas de sistema operativo más utilizadas. CoreOS tiene Docker preinstalado y está diseñado específicamente para ejecutar contenedores Docker. Docker para AWS proporciona un modo de enjambre de Docker listo para usar en el que un grupo de nodos, denominado enjambre, proporciona una plataforma distribuida para ejecutar aplicaciones de contenedor de Docker.

Problema: Todas las plataformas de Docker antes mencionadas son solo diferentes tipos de instalaciones de Docker y requieren que los contenedores de Docker se ejecuten y se administren en la línea de comandos.

Solución: Amazon ECS (Servicio de Contenedores Elásticos ) es un servicio administrado para contenedores Docker con soporte integrado para escalado, equilibrio de carga, redes, almacenamiento, registro y otras tareas de administración de contenedores Docker. Amazon ECS admite dos tipos de lanzamiento:EC2 y Fargate.

Con el tipo de lanzamiento EC2, las instancias EC2 se inician para ejecutar contenedores Docker. El tipo de lanzamiento Fargate, que se introdujo recientemente (noviembre de 2017), alberga tareas que encapsulan contenedores Docker. El usuario puede acceder directamente a las tareas a través de una interfaz de red elástica (ENI ). Las instancias EC2 en las que se aprovisiona Fargate no están expuestas al usuario y no son accesibles directamente.

En este capítulo, aprenderemos sobre lo siguiente:Qué es Amazon Fargate

  • Beneficios de los objetos Fargate Amazon ECS
  • Recursos informáticos en Amazon ECS Fargate
  • ¿Qué hay de nuevo en el modo de tipo de lanzamiento de Amazon Fargate?

Qué es Amazon Fargate

Amazon Fargate es un nuevo tipo de lanzamiento para Amazon ECS y Amazon EKS (Servicio de Kubernetes elástico ) servicios de orquestación administrados para contenedores Docker en AWS. Con el tipo de lanzamiento Fargate, Fargate aprovisiona completamente la infraestructura. No tiene servidor y ninguna instancia EC2 está expuesta al usuario. Los contenedores de Docker se definen como definiciones de contenedor dentro de una definición de tarea. Un servicio implementa la definición de tarea para ejecutar una o más tareas. Cada tarea está asociada a un ENI. Si la asignación automática de la IP pública a nivel de tarea está habilitada, una IP pública en la que un cliente externo puede acceder a una tarea se asigna automáticamente a una tarea. Las tareas se comunican entre sí a través de una IP privada.

Beneficios de Fargate

Los beneficios en ECS son los siguientes:

  • Un servicio administrado para aplicaciones en contenedores que no requiere mucha intervención del usuario para ejecutar aplicaciones Docker
  • Microservicios que consisten en varias aplicaciones que se ejecutan en contenedores aislados Escala automáticamente las tareas en función de la carga de la aplicación
  • Se integra con otros servicios de AWS, incluidos IAM, CloudWatch Logs, Elastic Load Balancing, plantillas de CloudFormation, EBS Volumes, Batch, ECR y registros de CloudTrail
  • Una nube privada virtual (VPC ) sin recursos compartidos con otros usuarios Brinda soporte para ejecutar un CodePipeline con ECS como plataforma de implementación
  • Admite la última versión 17.0 de Docker

Fargate ofrece los siguientes beneficios adicionales:

  • Con un tipo de lanzamiento Fargate, un usuario no crea ni administra ninguna instancia EC2, ya que ninguna está expuesta en el clúster.
  • Las tareas se exponen directamente al usuario a través de un ENI.
  • Fargate proporciona la infraestructura subyacente. Las instancias EC2 no deben administrarse con el tipo de lanzamiento Fargate.
  • CodePipeline admite Fargate como plataforma de implementación.
  • Los microservicios basados ​​en definiciones de contenedor encapsuladas en una definición de tarea están explícitamente vinculados y no deben vincularse con ninguna opción adicional, como enlaces.
  • CloudWatch Logs puede configurarse automáticamente.

Objetos de Amazon ECS

Los objetos de Amazon ECS con Fargate son los mismos que para el tipo de lanzamiento de EC2. Un clúster de ECS es la encapsulación más externa y consta de uno o más servicios. Un clúster se puede distribuir en varias zonas de disponibilidad. Un servicio es una implementación de una definición de tarea y ejecuta una o más tareas. Una definición de tarea puede tener una o más revisiones de tareas. Una revisión de tarea es una definición de tarea distinta con un conjunto de tareas y un servicio asociado. Una instancia de Fargate está asociada con un conjunto de tareas en un servicio. Una definición de tarea consta de cero o más definiciones de contenedor. Normalmente, una definición de tarea estaría asociada con una o más definiciones de contenedor, y una definición de tarea que no consta de ninguna definición de contenedor no ejecutaría ningún contenedor de tarea. A continuación se muestra un diagrama de objetos ECS:

Una definición de tarea es una plantilla de aplicación y describe uno o más contenedores. Si bien algunos atributos o configuraciones se configuran a nivel de tarea, la mayoría de ellos se configuran a nivel de contenedor. Se pueden asociar varias revisiones con una definición de tarea.

Un Servicio implementa una definición de tarea y define un recuento deseado de tareas para ejecutar para una definición de tarea. Las funciones opcionales, como el escalado automático y el equilibrio de carga, se configuran en el servicio.

Un clúster en un servicio ECS es una agrupación de uno o más servicios de contenedor. Un nombre de clúster debe ser único dentro de una cuenta. Un clúster llamado predeterminado se aprovisiona de forma predeterminada.

Recursos informáticos en Amazon ECS Fargate

Tamaño de la tarea consta de memoria de tareas (GB) y CPU de tareas (vCPU) . Si bien es opcional en el tipo de lanzamiento de EC2, se requiere el tamaño de la tarea con el tipo de lanzamiento de Fargate. La memoria de nivel de contenedor Docker y la configuración de la CPU se pueden definir opcionalmente, pero se anulan por la configuración del nivel de definición de tareas. Solo se admiten combinaciones específicas de memoria de tareas y CPU de tareas, y el asistente de ECS indica con un mensaje el valor admitido (o rango de valores) para un valor seleccionado. Como ejemplo, el rango de CPU válido para 1 GB de memoria es de 0,25 vCPU a 0,5 vCPU. Los recursos totales (memoria o CPU) configurados en el nivel del contenedor no deben exceder la configuración de recursos del nivel de la tarea. Por ejemplo, si una definición de tarea consta de dos contenedores (MySQL y WordPress) con un límite de memoria de 128 MB para cada contenedor, la memoria del nivel de tarea debe ser de al menos 256 MB. Además, el total de memoria a nivel de contenedor no debe exceder los 256 MB. Del mismo modo para la CPU. Se pueden definir dos límites de memoria a nivel de contenedor:Límite flexible y límite estricto . El límite suave corresponde a la memoryReservation atributo en el nivel de tarea, y el límite duro corresponde a la memoria atributo a nivel de tarea. La suma de las reservas de memoria del contenedor (límites suaves) no debe exceder la memoria de la tarea. El límite duro para cada contenedor no debe exceder la memoria configurada en el nivel de tarea. Se debe especificar un mínimo de 4 GB de forma predeterminada para un contenedor.

En la siguiente captura de pantalla se muestra un tamaño de tarea de ejemplo, en el que la memoria de tareas (memoria atributo) se establece en 0,5 GB (512 GB) y la CPU de tareas está configurado en 0.25 vCPU . A nivel de contenedor, tal como está configurado en las dos definiciones de contenedor, la reserva de memoria es de 128 MB para cada contenedor, lo que hace que la reserva de memoria total sea de 256 MB. bien dentro de los 512 GB asignado a nivel de tarea. El tamaño de la tarea se asigna a una tarea, se use o no. Del mismo modo, el número de unidades de CPU configurado para cada contenedor es 10 , lo que hace que las unidades de CPU totales sean 20 para contenedores dentro de las unidades de CPU, 25 se asignan en el nivel de tarea. Consulte la siguiente captura de pantalla:

Configuración y asignación de tamaño de tareas para contenedores

¿Qué hay de nuevo en el modo de tipo de lanzamiento de Amazon Fargate?

Además de los beneficios de Fargate discutidos anteriormente y concomitantes con ellos, Fargate admite las siguientes características nuevas:

  • Modo de red, awsvpc , es el único modo admitido
  • Las asignaciones de puertos de host no son válidas con el modo de red de tipo de lanzamiento de Fargate (awsvpc ), y los puertos de host en los que se expone una aplicación son los mismos que los puertos del contenedor
  • ecsTaskExecutionRole se agrega para el tipo de lanzamiento de Fargate para permitir extraer imágenes de Docker y enviar registros a CloudWatch Logs
  • Solo los awslogs configuración de registros y awslogs el controlador de registro es compatible con CloudWatch Logs
  • La ubicación de tareas no es compatible, ya que no se aprovisionan instancias de ECS para definir restricciones de ubicación para
  • Solo se admiten las imágenes de Docker en Docker Hub y Amazon ECR. Los contenedores privilegiados de Windows no son compatibles con el tipo de lanzamiento de Fargate. Los dispositivos host no se pueden exponer a un contenedor.
  • El anfitrión y origenRuta los parámetros para volúmenes no son compatibles con el tipo de lanzamiento de Fargate

Resumen

En este capítulo introductorio, discutimos los beneficios de usar el tipo de lanzamiento Fargate, cómo se distribuyen y configuran los recursos informáticos con el tipo de lanzamiento Fargate, cómo los objetos ECS con Fargate son los mismos que para el tipo de lanzamiento EC2 y las nuevas funciones en Fargate. En el próximo capítulo, hablaremos sobre las redes tal como se usan con Fargate.

El material anterior es un extracto de la Guía de inicio rápido de Amazon Fargate , por Deepak Vohra, publicado por Pact Publishing.

Este artículo fue una contribución. ©Desarrollador.com. Todos los derechos reservados