¿Qué orquestación de contenedores es mejor para usted?

Se presentan muchas opciones a los equipos de tecnología de la información (TI) cuando ejecutan aplicaciones en contenedores, abordando todos los niveles de experiencia técnica.

Puede ser difícil seleccionar uno, considerando que después de hacer su elección, probablemente no migrará a otra opción en el corto plazo.

Esta publicación contrasta dos opciones importantes: Amazon Elastic Container Service (ECS) y Kubernetes.

Ambas son plataformas capaces en los dominios de administración de microservicios y orquestación de contenedores. Y justo antes de continuar, un repaso sobre los contenedores no hace daño. Los contenedores se han popularizado para facilitar el desarrollo, la promoción y la implementación de código en muchos entornos. Son abstracciones en las capas de la aplicación, que envuelven el código con las dependencias necesarias, las bibliotecas y la configuración del entorno en un paquete ejecutable.

Si bien el principal objetivo del uso de contenedores es simplificar el proceso de implementación de código, administrar miles de ellos se vuelve cada vez más desafiante. Se necesita otro mecanismo para implementar implementaciones altamente confiables, escalar aplicaciones según la carga, intercambiar contenedores en mal estado por otros nuevos, equilibrar la carga y exponer puertos.

Ahí es donde entra en juego la orquestación de contenedores. Aparte de eso, existe la necesidad de los medios para ejecutar contenedores y administrar su infraestructura general. Hay muchas herramientas disponibles para resolver este problema, pero limitemos el enfoque a unas pocas.

Este artículo compara ECS y Kubernetes, destaca los beneficios de cada uno y concluye con una guía para elegir el correcto según su proyecto.

¿Qué es Amazon ECS?

Amazon ECS es un servicio de orquestación de contenedores que agiliza la implementación, la administración y el escalado de aplicaciones en contenedores. Básicamente, usted define su aplicación y los recursos necesarios. Luego, Amazon ECS lanza, monitorea y escala su aplicación a través de las opciones de cómputo mientras permite la integración de otros servicios de AWS necesarios. Por ejemplo, puede verificar el estado y modificar sus clústeres mediante programación.

ECS le permite implementar sus aplicaciones a través de un grupo de servidores, llamados clústeres, mediante definiciones de tareas y llamadas de interfaces de programas de aplicaciones (API).

Lea también: ¿Qué instancias de AWS EC2 debe usar?

Ventajas de Amazon ECS

  • ECS tradicional: esta versión se lanzó en 2015 y cuenta con la tecnología de Amazon EC2 para ejecutar contenedores Dockers fácilmente en la nube. El ECS tradicional le brinda control subyacente sobre las opciones de EC2, lo que permite flexibilidad. Significa que elige los tipos de instancias que le gustaría ejecutar en su contenedor. El modelo lo vincula aún más con otros servicios de AWS que puede usar para monitorear y registrar la actividad en las instancias de EC2.
  • Fargate ECS: lanzado en 2017 para ejecutar contenedores sin la necesidad de administrar las opciones informáticas subyacentes de EC2. Fargate adopta un enfoque diferente al calcular la CPU y la memoria requeridas. Si desea que las cargas de trabajo funcionen rápidamente, esta podría ser su mejor opción, ya que no tendrá que preocuparse por las opciones informáticas subyacentes.
  • Arquitecturas de aplicaciones simplificadas: ECS es una buena opción para aplicaciones con pocos microservicios (aquellas con pocas dependencias externas o algunas partes móviles) que funcionan de forma independiente.
  • Supervisión y registro sencillos: puede integrar fácilmente ECS con las herramientas de registro y supervisión de AWS, como CloudWatch. No tiene que configurar la visibilidad de las cargas de trabajo de los contenedores, lo que le ahorra tiempo.
  • Curva de aprendizaje sencilla: ECS es fácil de aprender. Kubernetes alojado está ganando más popularidad que los modelos tradicionales como los sabores de KOPS y Kubeadm.
  • Infraestructura sin servidor: ECS le permite ejecutar contenedores sin necesidad de administrar máquinas virtuales; despliega contenedores sin intervención humana.
  • Seguridad integrada: de forma predeterminada, Amazon ECS está protegido y aplica en cascada las medidas de seguridad a través de un mecanismo de red de nube privada virtual aislado.
  • Limitaciones de ECS

  • Almacenamiento limitado: el almacenamiento externo se limita exclusivamente a Amazon, hasta Amazon EBS.
  • Limitaciones de validación: ECS es un producto basado en Amazon, por lo que no está disponible para implementaciones públicas fuera de Amazon.
  • Bloqueo de proveedores: ECS está sesgado; solo puede administrar sus contenedores creados.
  • Falta de disponibilidad del código ECS: gran parte del código ECS no está disponible públicamente. Herramientas como AWS Blox (un marco para crear programadores personalizados) tienen una sección muy pequeña de sus bases de código de código abierto.
  • ¿Qué es Kubernetes?

    Kubernetes, comúnmente llamado K8s, es un software de código abierto para automatizar la implementación, el escalado y la administración de aplicaciones en contenedores.

    Aprovechando 15 años de experiencia ejecutando cargas de trabajo de producción de Google (combinando las mejores ideas y prácticas de la comunidad), K8s agrupa los contenedores de su aplicación en unidades lógicas que puede descubrir y administrar fácilmente.

    Además, las funciones principales de K8, como equilibrio de carga, almacenamiento persistente, reversiones automáticas para aplicaciones en contenedores, secretos, recuperación automática para clústeres de Kubernetes y administración de configuración.

    Lea también: Primeros pasos con Kubernetes: una introducción para principiantes

    Ventajas de Kubernetes

  • Código abierto (sin bloqueo de proveedor): ya sea que se ejecute en las instalaciones o en la nube, puede usar Kubernetes sin rediseñar la estrategia de orquestación. A diferencia del software tradicional que incurre en algunas tarifas de licencia, K8s es gratuito y de código abierto. Como si eso no fuera suficiente, los clústeres de K8 se ejecutan en nubes públicas y privadas que proporcionan recursos de virtualización en ambas entidades.
  • Flexibilidad de alta potencia: K8s es una excelente solución si sus aplicaciones necesitan alta disponibilidad al mismo tiempo que respaldan la eficiencia y la escalabilidad. Este rasgo es tácticamente útil en aplicaciones que generan altos ingresos. En pocas palabras, es un control granular sobre sus cargas de trabajo. En los casos en los que desee cambiar sus aplicaciones a plataformas más potentes, K8s no se limita a los bloqueos de proveedores como ECS.
  • Alta disponibilidad: como se mencionó anteriormente, el diseño de K8 está orientado a proporcionar la disponibilidad de las aplicaciones y su infraestructura necesaria, lo que lo convierte en una característica necesaria para los contenedores en producción. Bajo alta disponibilidad, existen algunas técnicas:
    • Comprobaciones de estado y autorreparación: Kubernetes protege sus aplicaciones de fallos mediante inspecciones periódicas de los nodos. Si una vaina o contenedor se aplasta debido a un error, K8s utiliza automáticamente un reemplazo.
    • Equilibrio de carga y enrutamiento de tráfico: con respecto al enrutamiento de tráfico, los K8 solo enviarán solicitudes a los contenedores apropiados. Y con el equilibrio de carga, K8s distribuye las cargas entre los pods, equilibrando sus recursos para varias instancias, como interrupciones, picos de tráfico incidentales o procesamiento por lotes. Nuevamente, también puede usar balanceadores de carga externos si lo desea.
  • Escalabilidad de la carga de trabajo: si bien se mencionó anteriormente, analicemos un poco más. K8s utiliza sus recursos para proporcionar un escalado eficiente en los siguientes criterios.
    • Escalado automático: esta función le permite ajustar automáticamente la cantidad de contenedores en ejecución de acuerdo con la utilización de la CPU y otras métricas de la CPU.
    • Escalado manual: con la ayuda de esta función, puede escalar el recuento de contenedores en ejecución a través de la línea de comandos o la interfaz.
    • Controlador de replicación: esta herramienta le permite determinar la cantidad de pods que coinciden con la especificación de su clúster; si son pocos, comienza de nuevo, y si son demasiados, los termina.
  • Diseñado para la implementación: K8s está especialmente diseñado para acelerar el proceso de creación, prueba y envío de software. Estas son algunas de las características que ofrece:
    • Reversiones e implementaciones automatizadas: es posible que desee implementar algunas configuraciones nuevas o actualizaciones de aplicaciones durante el desarrollo. K8s le permite promulgar el proceso sin tiempo de inactividad de la aplicación. En caso de falla, los K8 retroceden robóticamente a la versión anterior.
    • Implementaciones canarias: puede aprovechar esta función probando nuevas implementaciones en producción paralelas a la versión anterior; K8s le permite reducir la aplicación de la última versión y, al mismo tiempo, ampliar la versión más reciente.
    • Soporte diverso para marcos y lenguajes de programación: ya sea que venga del lenguaje de programación Go, Java o .Net, Kubernetes es compatible con muchos marcos y lenguajes de desarrollo. Si una aplicación se puede ejecutar en un contenedor, se ejecuta en K8.
  • Descubrimiento de servicios: todos los desarrolladores desean que todos los servicios provistos tengan una forma de comunicarse entre sí. Sin embargo, el modelo de operación de K8 implica crear y destruir contenedores continuamente, lo que hace que algunos servicios no existan en ubicaciones particulares. En el desarrollo tradicional, se adaptaría un registro de servicios para rastrear las ubicaciones de estos servicios. K8s resuelve este problema a través de un concepto de servicio nativo para agrupar pods y descubrir servicios sin problemas. Por lo tanto, K8s proporciona direcciones IP para todos los pods, asigna nombres DNS para cada conjunto de pods y luego equilibra el tráfico de carga en cada conjunto de pods. Esta arquitectura genera un entorno en el que el descubrimiento de servicios se abstrae de cada contenedor.
  • Comunidad vibrante: K8s está respaldado por una comunidad vibrante con miles de desarrolladores que aprovechan sus servicios. Al momento de escribir este artículo, más de 100 millones de desarrolladores usan K8 para descubrir, contribuyendo con 330 millones de proyectos. La comunidad no muestra signos de desaceleración y fomenta la colaboración entre los desarrolladores.
  • Limitaciones de Kubernetes

  • Curva de aprendizaje pronunciada: para comenzar con Kubernetes, deberá comprender su panorama. Además, la entrega de una solución de extremo a extremo requiere la inclusión de una variedad de tecnologías y servicios. Y con las tecnologías complementarias que varían significativamente (a veces, algunas soluciones se remontan a UNIX dominadas, mientras que otras son tecnologías nuevas con una baja adopción), determinar cuáles incluir puede ser ajetreado. También necesitaría averiguar cómo encajan todos los componentes para proporcionar una solución más completa para problemas particulares. La documentación está disponible, pero deberá comprender cómo brindar y administrar estos servicios.
  • Diferenciación de funciones y proyectos: comprender las diferencias entre proyectos y funciones puede ser un desafío. Si bien puede obtener fácilmente consejos sobre la gestión de proyectos, es posible que no obtenga una distinción clara entre funciones y proyectos comunitarios.
  • Conocimiento más allá de Kubernetes: Kubernetes es una plataforma sofisticada. Con toda esta complejidad en la entrega de soluciones, es probable que encuentre cierta confusión, especialmente si es nuevo en esto. Sin embargo, las organizaciones aún desean brindar soluciones (como almacenes de datos como servicio), lo que amplía la curva de aprendizaje. Si utiliza dichos servicios en su producto, debe ampliar su conocimiento más allá de Kubernetes.
  • Administrar Kubernetes es difícil: llegar a producción con K8 es una cosa. Deberá proporcionar todos los recursos necesarios para que sus aplicaciones lo administren. También deberá manejar toda la seguridad e integrarla con su infraestructura. Además, necesitará experiencia de alto nivel para procesar y operar sus herramientas de manera efectiva. Deberá obtener un conocimiento profundo para administrar clústeres de Kubernetes, monitorear y solucionar problemas de clústeres, y brindarles soporte a escala.
  • Comparando ECS y Kubernetes

    Aquí hay una comparación lado a lado que muestra las diferencias:

    Punto de diferenciaKubernetesAmazon ECSAdefinición de la aplicaciónLas aplicaciones se implementan mediante la combinación de pods, nodos y servicios.La implementación de la aplicación toma la forma de tareas. Las tareas son instancias de contenedores, por ejemplo, contenedores de Docker que se ejecutan en instancias de ECS. Implementación compleja, ya que debe implementar y configurar clústeres manualmente. Implementación fácil a través de la consola de AWS. Compatibilidad con nodos (cantidad de máquinas) 5000 nodos por clúster. .ContenedoresHasta 300 000 contenedores por clúster.Limitado por la capacidad de infraestructura utilizada.Los pods de balanceo de carga se exponen a través de servicios que se utilizan como balanceadores de carga detrás de los controladores de entrada.Dos balanceadores de carga disponibles; ELB-Application o Network.PricingFree.ECS es gratuito, pero tiene que pagar por los recursos de EC2.OptimizaciónBien optimizado para un solo clúster grande.Preconfigurado con requisitos y requisitos de contenedor.AutoescaladoUsted define parámetros de escalado automático al crear implementaciones.Usa servicios de monitoreo como CloudWatch para escalar automáticamente en función de la CPU, la memoria y los parámetros personalizados. Comprobación de estado Hay dos comprobaciones de estado disponibles: preparación y actividad. Logrado mediante servicios de supervisión como CloudWatch. Descubrimiento de servicios Promulgado mediante variables de entorno o DNS. Obtenido mediante servicios de supervisión: CloudWatch. enNo.Sí.

    Casos de uso de ECS y Kubernetes

    Así es como la tecnología de contenedorización de ECS y Kubernetes está revolucionando las industrias:

    ECS INC International destaca numerosos casos de uso en los que se ha implementado la tecnología ECS. En los dispositivos médicos modernos, encontrará métodos revolucionarios para tratar pacientes y técnicas de administración de medicamentos. Existen muchas herramientas, como inhaladores electrónicos, autoinyectores médicos y bombas de infusión.

    En el dominio de IoT, tenemos dispositivos domésticos inteligentes. Si cambia la atención a la industria automotriz, tenemos autos eléctricos inteligentes con una experiencia de manejo mejorada y medidas de seguridad mejoradas como sistemas de frenado asistido.

    Hasta ahora, esa es la punta del iceberg; puede ver más aplicaciones de ECS que no se limitan a tecnología inalámbrica, dispositivos portátiles y casos de uso industrial.

    Por otro lado, Kubernetes tiene su cuota de aplicaciones prácticas. En primer lugar, la nube de IBM ofrece funcionalidades privadas, públicas e híbridas en una amplia gama de tiempos de ejecución.

    Spotify, un gigante en el campo de la transmisión de música, aprovecha la tecnología de Kubernetes para facilitar operaciones sin problemas, hasta 10 millones de solicitudes por segundo. Si bien estos son casos de uso del mundo real, K8s brinda más funcionalidades en la arquitectura de microservicios, funciones de red nativas de la nube, aprendizaje automático y pivote del ciclo de vida de desarrollo de software.

    Ultimas palabras

    Después de leer esta guía, tiene una visión general sólida de las ventajas y desventajas de optar por ECS o K8. La clave para elegir la opción correcta se basa en algunos argumentos. Tendrá que sopesar entre el costo, las limitaciones del servicio y los costos de talento.

    Si desea utilizar un servicio gratuito, los K8 serán su opción número uno. Sin embargo, necesitará talento o habilidades sólidas para manejar la complejidad que conlleva. Si bien K8s no tiene limitaciones de bloqueo de proveedores, requerirá una comprensión profunda de cómo funciona la plataforma. ECS, por otro lado, obtuvo configuraciones rápidas.

    A continuación, consulte la guía detallada sobre Kubernetes frente a Docker.