Geekflare recibe el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliación de los enlaces de compra en este sitio.
En DevOps Última actualización: 24 de septiembre de 2023
Compartir en:
Escáner de seguridad de aplicaciones web Invicti - la única solución que ofrece verificación automática de vulnerabilidades con Proof-Based Scanning™.

A los equipos de tecnología de la información (TI) se les presentan muchas opciones a la hora de ejecutar aplicaciones en contenedores, dirigidas a todos los niveles de conocimientos técnicos.

Puede resultar difícil seleccionar una, teniendo en cuenta que después de hacer su elección, probablemente no migrará a otra opción en un futuro próximo.

Este post contrasta dos opciones de peso: Amazon Elastic Container Service (ECS) y Kubernetes.

Ambas son plataformas capaces en los ámbitos de la orquestación de contenedores y la gestión de microservicios. Y antes de seguir avanzando, un repaso a los contenedores no viene mal. Los contenedores se han popularizado para facilitar el desarrollo, la promoción y el despliegue de código en muchos entornos. Son abstracciones en las capas de aplicación, que envuelven el código con las dependencias, bibliotecas y configuraciones de entorno necesarias en un paquete ejecutable.

Aunque el principal objetivo del uso de contenedores es simplificar el proceso de despliegue de código, la gestión de miles de ellos resulta cada vez más complicada. Se necesita otro mecanismo para implementar despliegues altamente fiables, escalar aplicaciones según la carga, intercambiar contenedores poco saludables por otros nuevos, equilibrar la carga y exponer puertos.

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

Esta pieza compara ECS y Kubernetes, destacando los beneficios de cada uno, y concluye con una dirección en la elección de la correcta en función de su proyecto.

¿Qué es Amazon ECS?

YouTube vídeo

AmazonECS es un servicio de orquestación de contenedores que agiliza el despliegue, la administración y el escalado de aplicaciones en contenedores. Básicamente, usted define su aplicación y los recursos que necesita. A continuación, Amazon ECS lanza, monitoriza y escala su aplicación a través de las opciones informáticas al tiempo que permite la integración de otros servicios de AWS necesarios. Por ejemplo, puede comprobar el estado y modificar sus clústeres mediante programación.

ECS le permite desplegar sus aplicaciones a través de un grupo de servidores, denominados clústeres, utilizando definiciones de tareas y llamadas a interfaces de programación de aplicaciones (API).

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

Ventajas de Amazon ECS

  1. ECStradicional - Esta versión se lanzó en 2015 y está impulsada por Amazon EC2 para ejecutar contenedores Dockers fácilmente en la nube. El ECS tradicional le ofrece un control subyacente sobre las opciones de EC2 que le permite ser flexible. Esto significa que usted elige los tipos de instancias que le gustaría ejecutar en su contenedor. El modelo le conecta además con otros servicios de AWS que puede utilizar para supervisar y registrar la actividad en las instancias EC2.
  2. FargateECS - Lanzado en 2017 para ejecutar contenedores sin necesidad de gestionar las opciones de cómputo EC2 subyacentes. Fargate adopta un enfoque diferente calculando la CPU y la memoria necesarias. Si desea poner en marcha cargas de trabajo rápidamente, esta podría ser su mejor opción, ya que no tendrá que preocuparse de las opciones de computación subyacentes.
  3. Arquitecturas de aplicaciones simplificadas - ECS es una buena opción para aplicaciones con pocos microservicios (aquellas con pocas dependencias externas o que tienen pocas partes móviles) que trabajan de forma independiente.
  4. Monitorización y registro sencillos los - Puede integrar ECS fácilmente con herramientas de registro y monitorización de AWS como CloudWatch. No tendrá que configurar la visibilidad de las cargas de trabajo de los contenedores, lo que le ahorrará tiempo.
  5. Curva de aprendizaje sencilla - ECS es fácil de aprender. Kubernetes alojado está ganando más popularidad que los modelos tradicionales como los sabores KOPS y Kubeadm.
  6. Infraestructura sin servidor - ECS le permite ejecutar contenedores sin necesidad de gestionar máquinas virtuales; despliega contenedores sin intervención humana.
  7. Seguridad incorporada - Por defecto, Amazon ECS está protegido y aplica las medidas de seguridad en cascada a través de un mecanismo de red de nube privada virtual aislada.

Limitaciones de ECS

  1. Almacenamiento limitado - El almacenamiento externo se limita exclusivamente a Amazonhasta Amazon EBS.
  2. Limitaciones devalidación - ECS es un producto basado en Amazon, por lo que no está disponible para implementaciones públicas fuera de Amazon.
  3. Fijación del proveedor - ECS es parcial; sólo puede gestionar sus contenedores creados.
  4. Indisponibilidad del código de ECS - Gran parte del código de 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?

YouTube vídeo

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

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

Además, las principales características de K8s, como el equilibrio de carga, el almacenamiento persistente, las reversiones automatizadas para aplicaciones en contenedores, los secretos, la autorreparación para clústeres Kubernetes y la gestión de la configuración.

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

Ventajas de Kubernetes

  1. Código abierto (sin dependencia del proveedor) - Tanto si se ejecuta en las instalaciones como en la nube, puede utilizar Kubernetes sin necesidad de volver a diseñar la estrategia de orquestación. A diferencia del software tradicional que incurre en algunos gastos de licencia, K8s es gratuito y de código abierto. Por si fuera poco, los clústeres K8s se ejecutan en nubes públicas y privadas proporcionando recursos de virtualización en ambas entidades.
  2. Flexibilidad de alta potencia - K8s es una gran solución si sus aplicaciones necesitan una alta disponibilidad a la vez que eficiencia y escalabilidad. Este rasgo es tácticamente útil en aplicaciones que generan altos ingresos. En pocas palabras, se trata de 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 bloques de proveedores como ECS.
  3. Alta disponibilidad - Como ya se ha mencionado, el diseño de K8s está orientado a proporcionar la disponibilidad de las aplicaciones y su infraestructura necesaria, lo que la convierte en una característica necesaria para los contenedores en producción. Dentro de la alta disponibilidad, existen unas cuantas técnicas:
    • Comprobaciones de estado y autocuración - Kubernetes protege sus aplicaciones de fallos mediante inspecciones regulares de los nodos. Si un pod o contenedor se estropea debido a un error, K8s dispone automáticamente de un sustituto.
    • Equilibrio de cargay enrutamiento del tráfico - En lo que respecta al enrutamiento del tráfico, K8s sólo enviará solicitudes a los contenedores adecuados. Y con el equilibrio de carga, K8s distribuye las cargas entre los pods, equilibrando sus recursos para varios casos como interrupciones, picos de tráfico incidental o procesamiento por lotes. De nuevo, también puede utilizar equilibradores de carga externos si lo desea.
  4. Escalabilidad de la carga de trabajo - Aunque ya se ha mencionado anteriormente, desglosémoslo un poco más. K8s utiliza sus recursos para proporcionar un escalado eficiente en los siguientes criterios.
    • Autoescalado - Esta característica le permite ajustar automáticamente el número de contenedores en ejecución según la utilización de la CPU y otras métricas de la CPU.
    • Escaladomanual - 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 de la interfaz.
    • Controlador de replicación - Esta herramienta le permite determinar el número de pods que coinciden con la especificación de su cluster; si hay pocos, inicia nuevos, y si hay demasiados, los elimina.
  5. Diseñado para el despliegue - 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:
    • Rollbacks y rollouts automatizados - Es posible que desee desplegar algunas configuraciones nuevas o actualizaciones de la aplicación durante el desarrollo. K8s le permite promulgar el proceso sin tiempo de inactividad de la aplicación. En caso de fallo, K8s retrocede robóticamente a la versión anterior.
    • Despliegues canarios - Puede aprovechar esta función probando nuevos despliegues en producción en paralelo a la versión anterior; K8s le permite escalar hacia abajo la aplicación de la última versión mientras escala simultáneamente hacia arriba la versión más reciente.
    • Compatibilidad diversa con lengu ajes y marcos de programación - Tanto si procede del lenguaje de programación Go, Java o .Net, Kubernetes es compatible con muchos lenguajes y marcos de desarrollo. Si una aplicación puede ejecutarse en un contenedor, se ejecuta en K8s.
  6. Descubrimiento de servicios - Todo desarrollador desea que todos los servicios proporcionados tengan una forma de comunicarse entre sí. Sin embargo, el modelo de funcionamiento de K8s implica crear y destruir contenedores continuamente, lo que hace que algunos servicios no existan en determinados lugares. En el desarrollo tradicional, se adaptaría un registro de servicios para rastrear las ubicaciones de estos servicios. K8s resuelve este problema mediante un concepto de servicio nativo para agrupar pods y descubrir servicios sin problemas. Así, K8s proporciona direcciones IP para todos los pods, asigna nombres DNS para cada conjunto de pods y, a continuación, 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.
  7. Comunidad vibrante - K8s está respaldado por una comunidad vibrante con miles de desarrolladores que aprovechan sus servicios. En el momento de escribir estas líneas, más de 100 millones de desarrolladores utilizan K 8s para descubrir, contribuyendo con 330 millones de proyectos. La comunidad no muestra signos de desaceleración y fomenta la colaboración entre desarrolladores.

Limitaciones de Kubernetes

  1. Curva de aprendizaje pronunciada - Para empezar a utilizar Kubernetes, tendrá que comprender su panorama. Además, ofrecer una solución integral requiere la inclusión de diversas tecnologías y servicios. Y como las tecnologías complementarias variarían significativamente (en ocasiones, algunas soluciones se remontan a la época dominada por UNIX, mientras que otras son tecnologías nuevas con una baja adopción), averiguar cuáles incluir puede resultar agitado. También tendría que averiguar cómo encajan todos los componentes para ofrecer una solución más completa a problemas concretos. La documentación está disponible, pero tendrá que entender cómo prestar y gestionar estos servicios.
  2. Diferenciar características y proyectos - Comprender las diferencias entre proyectos y características puede ser todo un reto. Aunque puede adquirir fácilmente asesoramiento sobre la gestión de proyectos, es posible que no obtenga una distinción clara entre características y proyectos comunitarios.
  3. Conocimientos más allá de Kubernetes - Kubernetes es una plataforma sofisticada. Con toda esta complejidad a la hora de ofrecer soluciones, es probable que se encuentre con cierta confusión, especialmente si es nuevo en ella. Aún así, las organizaciones siguen queriendo ofrecer soluciones (como almacenes de datos como servicio), lo que amplía la curva de aprendizaje. Si utiliza este tipo de servicios en su producto, deberá ampliar sus conocimientos más allá de Kubernetes.
  4. Lala gestión de Kubernetes es difícil - Llegar a la producción con K8s es una cosa. Tendrá que suministrar todos los recursos necesarios para que sus aplicaciones puedan gestionarlo. También tendrá que gestionar toda la seguridad e integrarlo con su infraestructura. Además, necesitará conocimientos de alto nivel para procesar y manejar sus herramientas con eficacia. Tendrá que adquirir conocimientos profundos para gestionar los clústeres de Kubernetes, supervisar y solucionar los problemas de los clústeres y darles soporte a escala.

Comparación entre ECS y Kubernetes

He aquí una comparación lado a lado que muestra las diferencias:

Punto de diferenciaKubernetesAmazon ECS
Definición de aplicacionesLas aplicaciones se despliegan combinando pods, nodos y servicios.El despliegue de aplicaciones adopta la forma de tareas. Las tareas son instancias de contenedores, por ejemplo, contenedores Docker que se ejecutan en instancias ECS.
DespliegueComplejo, ya que hay que desplegar y configurar los clústeres manualmente.Despliegue sencillo a través de la consola de AWS.
Soporte de nodos (número de máquinas)5000 Nodos por clúster.1000 Nodos por clúster.
ContenedoresHasta 300.000 contenedores por clúster.Limitado por la capacidad de la infraestructura utilizada.
Equilibrio de cargaLos pods se exponen a través de servicios utilizados como equilibradores de carga detrás de los controladores de entrada.Dos equilibradores de carga disponibles; ELB-Aplicación o Red.
PreciosGratuito.ECS es gratuito, pero hay que pagar por los recursos EC2.
OptimizaciónBien optimizado para un cluster grande.Preconfigurado con los requisitos de los contenedores.
AutoescaladoUsted define los parámetros de autoescalado cuando construye los despliegues.Utiliza servicios de monitorización como CloudWatch para el autoescalado basado en CPU, memoria y parámetros personalizados.
Comprobación de estadoDispone de dos comprobaciones de salud: readiness y liveness.Se consiguen a través de servicios de monitorización como CloudWatch.
Descubrimiento de serviciosRealizado a través de variables de entorno o DNS.Conseguido a través de servicios de monitorización - CloudWatch.
Bloqueo de proveedoresNo.Sí.

Casos de uso de ECS y Kubernetes

He aquí cómo la tecnología de contenerización ECS y Kubernetes está revolucionando las industrias:

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

En el ámbito del IoT, tenemos dispositivos domésticos inteligentes. Si trasladamos la atención a la industria automovilística, tenemos coches eléctricos inteligentes con una experiencia de conducción mejorada y medidas de seguridad perfeccionadas, como los sistemas de frenado asistido.

Hasta aquí, esto es la punta del iceberg; puede consultar más aplicaciones de ECS que no se limitan a la tecnología inalámbrica, los dispositivos vestibles y los casos de uso industrial.

En el otro extremo, Kubernetes tiene su parte 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 del streaming de música, aprovecha la tecnología de Kubernetes para facilitar operaciones fluidas, de hasta 10 millones de solicitudes por segundo. Aunque estos son casos de uso en el mundo real, K8s sirve para más funcionalidades en arquitectura de microservicios, funciones de red nativas de la nube, aprendizaje automático y pivotaje del ciclo de vida de desarrollo de software.

Palabras finales

Después de haber recorrido esta guía, tiene una visión sólida de los méritos y deméritos de optar por ECS o K8s. La clave para elegir la opción correcta se basa en unos cuantos argumentos. Tendrá que sopesar entre el coste, las limitaciones del servicio y los costes de talento.

Si desea utilizar un servicio gratuito, K8s será su opción número uno. Sin embargo, necesitará talento o habilidades sólidas para manejar la complejidad que conlleva. Aunque K8s no tiene limitaciones de bloqueo de proveedor, requerirá un conocimiento profundo del funcionamiento de la plataforma. ECS, por otro lado, tiene configuraciones rápidas.

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

  • John Walter
    Autor
    John Walter es un ingeniero eléctrico y electrónico apasionado por el desarrollo de software y la tecnología blockchain. Le encanta aprender nuevas tecnologías y educar a la comunidad en línea sobre ellas. También es organista clásico.
  • Rashmi Sharma
    Editor

    Rashmi es una gestora de contenidos, especialista en SEO y analista de datos con más de 7 años de experiencia. Tiene una sólida formación académica en aplicaciones informáticas y un gran interés por el análisis de datos.


    Rashmi es... Seguir leyendo

Gracias a nuestros patrocinadores
Más lecturas sobre DevOps
Potencia tu negocio
Algunas de las herramientas y servicios que le ayudarán a hacer crecer su negocio.
  • Invicti utiliza el Proof-Based Scanning™ para verificar automáticamente las vulnerabilidades identificadas y generar resultados procesables en tan solo unas horas.
    Pruebe Invicti
  • Web scraping, proxy residencial, gestor de proxy, desbloqueador web, rastreador de motores de búsqueda, y todo lo que necesita para recopilar datos web.
    Pruebe Brightdata
  • Monday.com es un sistema operativo de trabajo todo en uno que te ayuda a gestionar proyectos, tareas, trabajo, ventas, CRM, operaciones, flujos de trabajo y mucho más.
    Prueba Monday
  • Intruder es un escáner de vulnerabilidades en línea que encuentra puntos débiles de ciberseguridad en su infraestructura, para evitar costosas violaciones de datos.
    Prueba Intruder