Hablemos de algunas de las herramientas populares de orquestación de contenedores disponibles en el mercado.
Tabla de contenido
¿Qué es una orquestación de contenedores?
Las plataformas de contenedores como Docker son muy populares en estos días para empaquetar aplicaciones basadas en una arquitectura de microservicios. Los contenedores se pueden hacer altamente escalables, que se pueden crear a pedido. Si bien esto es bueno para algunos contenedores, imagine que tiene cientos de ellos.
Se vuelve extremadamente difícil gestionar el ciclo de vida de los contenedores y su gestión cuando los números aumentan dinámicamente con la demanda.
La orquestación de contenedores resuelve el problema al automatizar la programación, la implementación, la escalabilidad, el equilibrio de carga, la disponibilidad y la conexión en red de los contenedores. La orquestación de contenedores es la automatización y gestión del ciclo de vida de contenedores y servicios.
Es un proceso de gestión y organización de múltiples contenedores y arquitectura de microservicios a escala.
Afortunadamente, hay muchas herramientas de orquestación de contenedores disponibles en el mercado.
¡Explorémoslos!
Kubernetes
Lo has adivinado, ¿no?
Kubernetes es una plataforma de código abierto diseñada originalmente por Google y ahora mantenida por Cloud Native Computing Foundation. Kubernetes admite tanto la configuración declarativa como la automatización. Puede ayudar a automatizar la implementación, el escalado y la gestión de cargas de trabajo y servicios en contenedores.
Imagen de Kubernetes.io
La API de Kubernetes ayuda a establecer la comunicación entre los usuarios, los componentes del clúster y los componentes externos de terceros. El plano de control y los nodos de Kubernetes se ejecutan en un grupo de nodos que juntos forman el clúster. La carga de trabajo de la aplicación consta de uno o más pods que se ejecutan en los nodos de trabajo. El plano de control administra los pods y los nodos de trabajo.
Empresas como Babylon, Booking.com, AppDirect utilizan ampliamente Kubernetes.
Características
- Detección de servicios y equilibrio de carga
- Orquestación de almacenamiento
- Despliegues y reversiones automatizados
- Escalado horizontal
- Gestión de secretos y configuraciones
- Autosanación
- Ejecución por lotes
- Doble pila IPv4/IPv6
- Embalaje automático en contenedores
¿Quieres aprender Kubernetes? Echa un vistazo a estos recursos de aprendizaje.
OpenShift
ofertas redhat OpenShift Plataforma de contenedores como servicio (PaaS). Ayuda en la automatización de aplicaciones sobre recursos seguros y escalables en entornos de nube híbrida. Proporciona plataformas de nivel empresarial para crear, implementar y administrar aplicaciones en contenedores.
Imagen de Openshift
Está construido sobre el motor Redhat Enterprise Linux y Kubernetes. Openshift tiene varias funcionalidades para administrar clústeres a través de UI y CLI. Redhat ofrece Openshift en dos variantes más,
- Openshift Online: ofrecido como software como servicio (SaaS)
- OpenShift Dedicated: ofrecido como servicios gestionados
Openshift Origin (Origin Community Distribution) es un proyecto comunitario ascendente de código abierto que se utiliza en OpenShift Container Platform, Openshift Online y OpenShift Dedicated.
Nómada
Nómada es un orquestador de cargas de trabajo simple, flexible y fácil de usar para implementar y administrar contenedores y aplicaciones no en contenedores en las instalaciones y en la nube a escala. Nomad se ejecuta como un solo binario con una pequeña huella de recursos (35 MB) y es compatible con macOS, Windows y Linux.
Los desarrolladores utilizan la infraestructura declarativa como código (IaC) para implementar sus aplicaciones y definir cómo se debe implementar una aplicación. Nomad recupera automáticamente las aplicaciones de las fallas.
Imagen de Nomad
Nomad Orchestrate aplicaciones de cualquier tipo (no solo contenedores). Proporciona soporte de primera clase para Docker, Windows, Java, máquinas virtuales y más.
Características
- Sencillo y Confiable
- Modernice las aplicaciones heredadas sin reescribir
- Federación sencilla a escala
- Escalabilidad comprobada
- Nubes múltiples con facilidad
- Integraciones nativas con Terraform, Consul y Vault
Enjambre Docker
Enjambre Docker utiliza un modelo declarativo. Puede definir el estado deseado del servicio y Docker mantendrá ese estado. Docker Enterprise Edition ha integrado Kubernetes con Swarm. Docker ahora brinda flexibilidad en la elección del motor de orquestación. La CLI del motor de Docker se usa para crear un enjambre de motores de Docker donde se pueden implementar los servicios de aplicaciones.
Imagen de Docker
Los comandos de Docker se utilizan para interactuar con el clúster. Las máquinas que se unen al clúster se conocen como nodos, y el administrador de Swarm maneja las actividades del clúster.
Docker Swarm consta de dos componentes principales:
- Administrador: los nodos administradores asignan tareas a los nodos trabajadores en el enjambre. Se elige un líder en base a un algoritmo de consenso de Raft. El líder maneja todas las decisiones de administración de enjambres y orquestación de tareas para el enjambre.
- Nodo trabajador: el nodo trabajador recibe tareas del nodo administrador y las ejecuta.
Características
- Gestión de clústeres integrada con Docker Engine
- Diseño descentralizado
- modelo de servicio declarativo
- Escalada
- Reconciliación del estado deseado
- Redes de varios hosts
- Descubrimiento de servicios
- Balanceo de carga
- Seguro por defecto
- Actualizaciones continuas
Componer ventana acoplable
Componer ventana acoplable es para definir y ejecutar aplicaciones de múltiples contenedores que funcionan juntas. Docker-compose describe grupos de servicios interconectados que comparten dependencias de software y se organizan y escalan juntos.
Puede usar un archivo YAML (dockerfile) para configurar los servicios de su aplicación. Luego, con un comando docker-compose up, crea e inicia todos los servicios desde su configuración.
Un docker-compose.yml se ve así:
version: '3' volumes: app_data: services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:6.8.0 ports: - 9200:9200 - 9300:9300 volumes: - ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml - ./elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12 - ./docker-data-volumes/elasticsearch:/usr/share/elasticsearch/data kibana: depends_on: - elasticsearch image: docker.elastic.co/kibana/kibana:6.8.0 ports: - 5601:5601 volumes: - ./kibana.yml:/usr/share/kibana/config/kibana.yml app: depends_on: - elasticsearch image: asadali08527/app:latest ports: - 8080:8080 volumes: - app_data:/var/lib/app/
Puede usar Docker Compose para factorizar el código de la aplicación en varios servicios que se ejecutan de forma independiente y que se comunican mediante una red interna. La herramienta proporciona CLI para administrar todo el ciclo de vida de sus aplicaciones. Docker Compose se ha centrado tradicionalmente en los flujos de trabajo de desarrollo y prueba, pero ahora se están centrando en funciones más orientadas a la producción.
Docker Engine puede ser una instancia independiente aprovisionada con Docker Machine o un clúster completo de Docker Swarm.
Características
- Múltiples entornos aislados en un solo host
- Conservar datos de volumen cuando se crean contenedores
- Solo recrear contenedores que han cambiado
- Variables y movimiento de una composición entre entornos
minikube
minicubo permite a los usuarios ejecutar Kubernetes localmente. Con Minikube, puede probar aplicaciones localmente dentro de un clúster de Kubernetes de un solo nodo en su computadora personal. Minikube tiene soporte integrado para Kubernetes Dashboard.
Minikube ejecuta la última versión estable de Kubernetes y es compatible con las siguientes características.
- Balanceo de carga
- Multi-clúster
- Volúmenes persistentes
- Puertos de nodo
- ConfigMaps y secretos
- Tiempo de ejecución de contenedor: Docker, CRI-O y contenedor
- Habilitación de CNI (interfaz de red de contenedores)
Maratón
Maratón es para Apache Mesos que tiene la capacidad de orquestar aplicaciones y marcos.
Apache Mesos es un administrador de clústeres de código abierto. Mesos es un proyecto de Apache que tiene la capacidad de ejecutar cargas de trabajo en contenedores y no en contenedores. Los principales componentes de un clúster de Mesos son Mesos Agent Nodes, Mesos Master, ZooKeeper, Frameworks: los frameworks se coordinan con el maestro para programar tareas en los nodos de agente. Los usuarios interactúan con el marco de Marathon para programar trabajos.
El programador de Marathon usa ZooKeeper para ubicar el maestro actual para enviar tareas. El planificador de Marathon y el maestro Mesos tienen un maestro secundario en ejecución para garantizar una alta disponibilidad. Los clientes interactúan con Marathon mediante la API REST.
Características
- Alta disponibilidad
- aplicaciones con estado
- Hermosa y poderosa interfaz de usuario
- Restricciones
- Descubrimiento de servicios y equilibrio de carga
- Comprobaciones de salud
- Suscripción a eventos
- Métrica
- API REST
Cloudificar
Cloudificar es una herramienta de orquestación en la nube de código abierto para la automatización de la implementación y la gestión del ciclo de vida de contenedores y microservicios. Proporciona funciones como clústeres a pedido, reparación automática y escalado a nivel de infraestructura. Cloudify puede administrar la infraestructura de contenedores y orquestar los servicios que se ejecutan en las plataformas de contenedores.
Se puede integrar fácilmente con los administradores de contenedores basados en Docker y Docker, incluidos los siguientes.
- Estibador
- Enjambre Docker
- Componer ventana acoplable
- Kubernetes
- apache mesos
Cloudify puede ayudar a crear, curar, escalar y desmantelar clústeres de contenedores. La orquestación de contenedores es clave para proporcionar una infraestructura escalable y de alta disponibilidad en la que se pueden ejecutar los administradores de contenedores. Cloudify brinda la capacidad de orquestar servicios heterogéneos en todas las plataformas. Puede implementar aplicaciones mediante la CLI y Cloudify Manager.
Ranchero
Ranchero es una plataforma de código abierto que utiliza la orquestación de contenedores conocida como ganado. Le permite aprovechar los servicios de orquestación como Kubernetes, Swarm, Mesos. Rancher proporciona el software necesario para gestionar contenedores de modo que las organizaciones no necesiten crear plataformas de servicios de contenedores desde cero utilizando un conjunto distinto de tecnologías de código abierto.
Rancher 2.x permite la gestión de clústeres de Kubernetes que se ejecutan en los proveedores especificados por el cliente.
Comenzar con Rancher es un proceso de dos pasos.
Preparar un host Linux
Prepare un host Linux con Ubuntu 16.04 o 18.04 de 64 bits (u otra distribución de Linux compatible y al menos 4 GB de memoria. Instale una versión compatible de Docker en el host.
Inicie el servidor
Para instalar y ejecutar Rancher, ejecute el siguiente comando de Docker en su host:
$ sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher
La interfaz de usuario de rancher permite la gestión de miles de clústeres y nodos de Kubernetes.
Barco mercante
Containership es para permitir la implementación y la gestión de la infraestructura Kubernetes de múltiples nubes. Es flexible para operar en entornos locales, de nube privada y públicos desde una sola herramienta. Permite el aprovisionamiento, la gestión y la supervisión de sus clústeres de Kubernetes en todos los principales proveedores de la nube.
Containership se construye utilizando herramientas nativas de la nube, como Terraform para el aprovisionamiento, Prometheus para el monitoreo y Calico para la administración de redes y políticas. Está construido sobre Vanilla Kubernetes. La plataforma Containership ofrece un panel intuitivo, así como una potente API REST para una automatización compleja.
Características
- Panel multinube
- Registros de auditoría
- Compatibilidad con instancias de GPU
- Actualizaciones sin interrupciones
- Másteres Programables
- Métricas integradas
- Registro en tiempo real
- Implementaciones sin tiempo de inactividad
- Soporte de almacenamiento persistente
- Soporte de registro privado
- Escalado automático de cargas de trabajo
- Gestión de claves SSH
AZK
AZK es una herramienta de orquestación de código abierto para entornos de desarrollo a través de un archivo de manifiesto (Azkfile.js), que ayuda a los desarrolladores a instalar, configurar y ejecutar herramientas de uso común para desarrollar aplicaciones web con diferentes tecnologías de código abierto.
AZK usa contenedores en lugar de máquinas virtuales. Los contenedores son como máquinas virtuales, con mejor rendimiento y menor consumo de recursos físicos.
Los archivos Azkfile.js se pueden reutilizar para agregar nuevos componentes o crear nuevos desde cero. Se puede compartir, lo que asegura la paridad total entre los entornos de desarrollo en las máquinas de diferentes programadores y reduce las posibilidades de errores durante la implementación.
GKE
GKE proporciona una solución completamente administrada para la orquestación de aplicaciones de contenedores en Google Cloud Platform. Los clústeres de GKE funcionan con Kubernetes. Puede interactuar con clústeres mediante la CLI de Kubernetes. Los comandos de Kubernetes se pueden usar para implementar y administrar aplicaciones, realizar tareas de administración, establecer políticas y monitorear el estado de las cargas de trabajo implementadas.
Imagen de GCP
Las funciones de administración avanzada de Google Cloud también están disponibles con los clústeres de GKE, como el equilibrio de carga de Google Cloud, los grupos de nodos, el escalado automático de nodos, las actualizaciones automáticas, la reparación automática de nodos, el registro y la supervisión con el paquete de operaciones de Google Cloud.
Google Cloud proporciona herramientas de CI/CD para ayudarlo a crear y entregar contenedores de aplicaciones. Puede usar Cloud Build para crear imágenes de contenedores (como Docker) a partir de una variedad de repositorios de código fuente y Container Registry para almacenar sus imágenes de contenedores.
GKE es una solución lista para la empresa con plantillas de implementación prediseñadas.
¿Interesado en aprender GKE? Mira esto curso para principiantes.
AKS
AKS es un servicio de Kubernetes completamente administrado ofrecido por Azure, que ofrece Kubernetes, seguridad y gobernanza sin servidor. AKS administra su clúster de Kubernetes y le permite implementar fácilmente aplicaciones en contenedores. AKS configura automáticamente todos los nodos y maestros de Kubernetes. Solo necesita administrar y mantener los nodos de agente.
Imagen de Azure
AKS es gratis; solo paga por los nodos de agente dentro de su clúster y no por los maestros. Puede crear un clúster de AKS en Azure Portal o mediante programación. Azure también admite funciones adicionales, como redes avanzadas, integración de Azure Active Directory y supervisión mediante Azure Monitor.
AKS también admite contenedores de Windows Server. Su clúster y el rendimiento de las aplicaciones implementadas se pueden monitorear desde Azure Monitor. Los registros se almacenan en un área de trabajo de Azure Log Analytics.
AKS ha sido certificado como compatible con Kubernetes.
EKS de AWS
EKS de AWS es un servicio de Kubernetes completamente administrado. AWS le permite ejecutar su clúster de EKS con AWS Fragrate, que es una computación sin servidor para contenedores. Fragrance elimina la necesidad de aprovisionar y administrar servidores, lo que permite pagar por recurso por aplicación.
AWS permite el uso de funciones adicionales con EKS, como Amazon CloudWatch, Amazon Virtual Private Cloud (VPC), AWS Identity, Auto Scaling Groups y Access Management (IAM), monitorear, escalar y equilibrar aplicaciones. EKS se integra con la malla de aplicaciones de AWS y proporciona una experiencia nativa de Kubernetes. EKS ejecuta el último Kubernetes y está certificado conforme a Kubernetes.
Conclusión
Al final, espero que la lista anterior haya brindado una comprensión justa de las diversas herramientas de orquestación de contenedores, y ahora, según el caso de uso, será más fácil optar por la mejor.
A continuación, descubra el software de gestión de Kubernetes.