¿Cuáles son las diferencias entre Kubernetes Pods y Docker Compose(s) (Composures?)


Tanto los Pods de Kubernetes como los resultados de los scripts de Docker Compose (en adelante: "Composiciones") parecen dar lugar a clústeres de ordenadores virtuales.

Todos los equipos de los clústeres pueden configurarse para comunicarse entre sí, de modo que pueda escribir un solo script que refleje toda la configuración de producción de extremo a extremo. Un solo script le permite implementar ese clúster en cualquier host contenedor.

Dadas las similitudes entre los dos sistemas, estoy luchando para entender lo que el las diferencias son entre los dos.

¿Por qué elegiría uno sobre el otro? Son sistemas mutuamente excluyentes o puedo ejecutar composiciones en kubernetes.

¿Hay alguna consideración crítica que deba tenerse en cuenta al diseñar un sistema de contenedores? Si estoy diseñando la arquitectura para un sitio hoy y quisiera intentar construir un sistema basado en contenedores. ¿Cuáles son las cosas más prioritarias para las que debería diseñar? (en comparación con la sistema de una sola máquina)

Author: Alex C, 2015-11-26

3 answers

docker compose es solo una forma de declarar el contenedor que tienes que iniciar: no tiene noción de nodo o clúster , a menos que lance swarm master y swarm nodes, pero eso es docker swarm)
Actualización de julio de 2016, 7 meses después: docker 1.12 difumina las líneas y incluye un "modo enjambre".

Es muy diferente de kubernetes, una herramienta de Google para gestionar miles de grupos de contenedores como Pod, sobre decenas o cientos de máquinas.

A Kubernetes Pod estaría más cerca de un enjambre de estibadores :

Imagine contenedores acoplables individuales como cajas de embalaje. Las cajas que necesitan permanecer juntas porque necesitan ir al mismo lugar o tener afinidad entre sí se cargan en contenedores de envío.
En esta analogía, las cajas de embalaje son contenedores Docker, y los contenedores de envío son pods Kubernetes.

Como comentó a continuación por ealeon :

Creo que pod es equivalente a componer excepto que kubernetes puede orquestar pods, mientras que no hay nada orquestando componer a menos que se use con swarm como has mencionado.

Puede lanzar comandos kubernetes con docker-compose por cierto.

http://3.bp.blogspot.com/-MDUsXIy-lt0/VMuhJ9jBefI/AAAAAAAAA0I/qPuy0N8UXWA/s1600/Screen%2BShot%2B2015-01-30%2Bat%2B7.19.27%2BAM.png

En términos de cómo Kubernetes difiere de otros sistemas de gestión de contenedores existentes, como Swarm, Kubernetes es el tercer iteración de los administradores de clústeres que Google ha desarrollado.

Puedes escuchar más sobre kubernetes en el episodio #3 del Podcast de Google Cloud Platform.

Si bien es cierto que ambos pueden crear una aplicación multi-contenedor, un Pod también sirve como una unidad de implementación y escalado/replicación horizontal, que docker compose no proporciona.
Además, no creas un pod directamente, sino que usas controladores (como los controladores de replicación).

POD vive dentro de un plataforma más grande que ofrece Co-ubicación (co-programación), compartir destino, replicación coordinada, compartir recursos y gestión de dependencias.
Docker-componer vidas... por sí solo, con su archivo docker-compose.yml

 39
Author: VonC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:02:12

Aunque la respuesta anterior responde claramente a esta pregunta, estoy agregando algunas notas rápidas.

  1. Docker-Compose y los pods de Kubernetes son configuraciones archivos (Yaml) que definen instancias de contenedores a partir de imágenes.

  2. Docker compose por sí mismo es solo un archivo que tiene la capacidad de contener servicios (contenedores) para la comunicación; es inherentemente no distribuido.

  3. Los pods de Kubernetes también tienen la capacidad de definir múltiples contenedores, pero la diferencia aquí es la noción de distribución entre los nodos disponibles.
  4. Y por último, Docker Compose es una herramienta para definir y ejecutar aplicaciones acoplables de múltiples contenedores sin orquestación a menos que se le dijo que lo hiciera con Swarm. Y un pod contiene varios contenedores que se comparten en un clúster de nodos automáticamente si está disponible.
 2
Author: Remario,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-07 12:36:09

Hay una diferencia con respecto a las redes:

  • Los contenedores de un pod comparten la misma dirección IP. Desde kubernetes docs :

Todas las aplicaciones en un pod usan el mismo espacio de nombres de red (la misma IP y el mismo espacio de puerto), y por lo tanto pueden "encontrarse" entre sí y comunicarse usando localhost. Debido a esto, las aplicaciones en un pod deben coordinar su uso de puertos. Cada pod tiene una dirección IP en un espacio de red compartido plano que tiene comunicación completa con otras computadoras físicas y pods a través de la red.

  • A los contenedores de docker-compose se les asignan direcciones IP diferentes. Vea esta entrada de blog para más información.
 0
Author: Paulo Merson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-07 12:49:47