Al sumergirse en Docker, Google Cloud y Kubernetes, y sin comprender claramente a los tres todavía, me parece que estos productos se superponen, pero no son compatibles.
Por ejemplo, un docker-compose.yml
archivo debe reescribirse para que se pueda implementar una aplicación en Kubernetes.
¿Podría alguien proporcionar una descripción aproximada de alto nivel de dónde se superponen Docker, Docker Compose, Docker Cloud y Kubernetes y dónde uno depende del otro?
fuente
Además de la respuesta de @yamenk , me gustaría agregar algunos detalles aquí que podrían ayudar a las personas con su viaje de comprensión de Kubernetes.
Respuesta corta:
docker-compose
: es una herramienta que toma un archivo YAML que describe su aplicación de contenedores múltiples y lo ayuda a crear , iniciar / detener , eliminar todos esos contenedores sin tener que escribir múltiplesdocker ...
comandos para cada contenedor.Kubernetes
: es una plataforma para gestionar cargas de trabajo y servicios en contenedores , que facilita tanto la configuración declarativa como la automatización. ¿Qué? 🤔 Sigue leyendo ...Docker Compose
Kubernetes
Mucha gente argumenta que Kubernetes es difícil de aprender. Es porque resuelve una serie de problemas y las personas intentan comprender sin conocer todos los requisitos previos. Esto lo hace complicado. Comience a armar las piezas del rompecabezas leyendo sobre conceptos / términos como los siguientes. Este proceso lo ayudará a comprender el tipo de problemas que Kubernetes intenta resolver:
Y debido a que hay muchas cosas diferentes en torno a los contenedores y su gestión, vigile el paisaje de Cloud Native:
Versión interactiva aquí: landscape.cncf.io/
Actualizaciones
fuente
docker stack deploy --orchestrator=kubernetes
... docs.docker.com/engine/reference/commandline/stack_deploySi tiene contenedores de red con el mismo host, vaya a componer docker .
Si tiene contenedores de red en varios hosts, elija kubernetes .
fuente
La primera distinción es entre el motor del contenedor y el orquestador del contenedor.
docker
es un motor de contenedor, te hace construir y ejecutar generalmente no más de un contenedor como máximo, localmente en tu PC para fines de desarrollo.docker-compose
es una utilidad Docker para ejecutar múltiples contenedores y les permite compartir volúmenes y redes a través de las características del motor Docker, se ejecuta localmente para emular la composición del servicio y de forma remota en clústeres.Kubernetes es una plataforma de orquestación de contenedores, se encarga de ejecutar contenedores y mejorar las características del motor para que los contenedores se puedan componer y escalar para servir aplicaciones complejas (tipo de PaaS, administrado por usted o el proveedor de la nube). La característica principal de Kubernetes es desacoplar la infraestructura de la aplicación que usa contenedores, y también está abierta para otros motores que Docker, por ejemplo, puede ejecutar contenedores con rkt o cri-o.
Docker Cloud también es una oferta de PaaS que le permitirá ejecutar y orquestar contenedores a través de la
docker
API del motor.Ahora, según sus necesidades, el nivel de control de la infraestructura y el público objetivo, puede usar Kubernetes en baremetal, Azure ACS o Google GKE, etc.
Espero que esto haya ayudado :) Saludos
fuente
Docker Compose no es una herramienta lista para producción. Funciona muy bien para PoC o entornos de desarrollo, pero carece de muchas de las capacidades que son más o menos apuestas de mesa para un uso serio de producción. Swarm está más preparado para la producción, pero nunca invertiría en Swarm en un escenario totalmente nuevo. Kubernetes ha ganado la batalla de la orquestación, como lo demuestra su inclusión en Docker Desktop y lo ofrecen todos los principales proveedores de la nube. Kubernetes es mucho más capaz y tiene mucho más apoyo comunitario y corporativo.
Recomendaría sumergirse en algunos de los tutoriales de Kubernetes disponibles en Pluralsight, Linux Academy, etc. y girar un clúster para jugar en su plataforma de nube de elección (EKS, AKS, GKE, etc.). Si está tratando de girar sobre metal desnudo, eche un vistazo a OpenShift, pero reconozca que pierde algo de la magia de Kubernetes en esta configuración.
fuente
Docker Compose:
En un
docker-compose.yml
archivo, cada entrada puede llegar opcionalmentedocker-compose
a construir una imagen. cada entrada puede representar un único contenedor que queremos construir y cada entrada define los requisitos de red o puertos.Kubernetes:
Kubernetes espera que todas las imágenes ya estén construidas y hay un archivo de configuración por objeto que queremos crear y tenemos que configurar manualmente todas las redes.
Por lo tanto, nos aseguramos de que nuestra imagen esté alojada en Docker Hub, cree un archivo de configuración para crear el contenedor y un archivo de configuración para configurar la red.
fuente
Docker-Compose es un archivo de implementación que predefinió uno o más contenedores con su entorno, como volúmenes, redes, un comando para ejecutar, etc.
Kubernetes, por otro lado, es un sistema que organiza contenedores docker y otros microservicios y los hace escalables y confiables en múltiples nodos
fuente
Docker compose: los contenedores docker se pueden ejecutar directamente sin ayuda de ningún archivo yaml. Pero con la ayuda de la herramienta de compilación de Docker, las propiedades del contenedor se pueden definir dentro de un archivo llamado docker-compose.yml. encuentre el archivo yml de muestra a continuación para obtener más detalles.
El nombre de la imagen, el número de réplicas, etc. se pueden configurar a través del archivo yml.
Kubernetes: esta es la plataforma de administración de contenedores que se ejecuta sobre Docker, creada por Google. Docker Swam es otra plataforma de gestión de contenedores construida por Docker. Kubernetes también ofrece la posibilidad de guardar la configuración relacionada con los pods (corresponde al contenedor en la ventana acoplable) en el archivo yaml como docker compose. ejemplo de archivo yaml
aquí también se pueden proporcionar imágenes, puertos que se abrirán y mapeos para alojar puertos, etc. como docker compose, kubectl apply -f es el comando para ejecutar este archivo.
fuente