web-dev-qa-db-fra.com

Quelles sont les différences entre Kubernetes Pods et Docker Compose (s)

Les pods Kubernetes et les résultats des scripts Docker Compose (ci-après: "Compositions") semblent donner lieu à des clusters d’ordinateurs virtuels.

Les ordinateurs des clusters peuvent tous être configurés pour communiquer les uns avec les autres afin que vous puissiez écrire un seul script qui reflète toute votre configuration de production de bout en bout. Un seul script vous permet de déployer ce cluster sur n'importe quel conteneur-hôte.

Étant donné les similitudes entre les deux systèmes, j'ai du mal à comprendre quelles sont les différences entre les deux.

Pourquoi devrais-je choisir l'un sur l'autre? Sont-ils des systèmes mutuellement exclusifs ou puis-je exécuter des compositions en kubernetes.

Y a-t-il des considérations critiques à prendre en compte lors de la conception d'un système de conteneur? Si je conçois l'architecture d'un site aujourd'hui et comme, essayez de construire un système basé sur des conteneurs. Quelles sont les choses prioritaires que je devrais concevoir? (par rapport à la construction sur un système à une seule machine)

48
Alex C

docker compose n’est qu’un moyen de déclarer le conteneur à démarrer: il n'a aucune notion de noeud ou de cluster, sauf s’il lance des nœuds d’essaim maîtres et d’essaims, mais c’est docker swarm )
Mise à jour juillet 2016, 7 mois plus tard: le menu fixe 1.12 brouille les lignes et inclut un "mode d'essaim" .

Il est très différent de kubernetes , un outil Google permettant de gérer des milliers de groupes de conteneurs en tant que Pod, sur des dizaines voire des centaines de machines.

Un Kubernetes Pod aurait soit plus proche d'un essaim de dockers :

Imaginez des conteneurs Docker individuels comme des boîtes d’emballage. Les boîtes qui doivent rester ensemble parce qu'elles doivent se rendre au même endroit ou avoir une affinité entre elles sont chargées dans des conteneurs d'expédition.
Dans cette analogie, les boîtes d’emballage sont des conteneurs Docker et les conteneurs d’expédition sont des capsules Kubernetes.

Comme commenté ci-dessous par ealeon :

Je pense que pod est équivalent à composer, sauf que les kubernetes peuvent gérer des pods orchestrés, alors qu'il n'y a rien de composé orchestré si ce n'est utilisé avec swarm comme vous l'avez mentionné.

Vous pouvez lancer des commandes kubernetes avec docker-compose d'ailleurs .

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

En ce qui concerne la différence de Kubernetes par rapport aux autres systèmes de gestion de conteneurs existants, tels que Swarm, Kubernetes est la troisième itération de gestionnaires de grappes développée par Google.

Vous pouvez en savoir plus sur kubernetes dans le épisode n ° 3 de Google Cloud Platform Podcast .

S'il est vrai que les deux peuvent créer une application à conteneurs multiples, un pod sert également d'unité de déploiement et de mise à l'échelle/réplication horizontale, ce que la composition de docker ne fournit pas.
De plus, vous ne créez pas directement de pod, mais utilisez des contrôleurs (comme des contrôleurs de réplication).

Le POD réside dans une plate-forme plus large qui offre la colocalisation (co-ordonnancement), le partage du destin, la réplication coordonnée, le partage des ressources et la gestion des dépendances.
Docker-compose des vies ... seul, avec ses docker-compose.yml fichier

43
VonC

Même si la réponse ci-dessus répond clairement à cette question, j'ajoute quelques notes rapides.

  1. Les deux dosettes Docker-Compose et Kubernetes sont des fichiers de configuration (Yaml) qui définissent des instances de conteneur à partir d'images.

  2. Docker compose par lui-même est juste un fichier qui a la capacité de contenir des services (conteneurs) pour la communication; il est intrinsèquement non distribué.

  3. Les pods Kubernetes ont également la possibilité de définir plusieurs conteneurs, mais la principale différence réside dans la notion de répartition entre les nœuds disponibles.
  4. Enfin, Docker Compose est un outil permettant de définir et d’exécuter des applications Docker à conteneurs multiples sans orchestration, à moins que cela ne soit ordonné à Swarm. Et un pod contient plusieurs conteneurs partagés automatiquement dans une grappe de nœuds s'ils sont disponibles.
3
Remario

Il y a une différence en ce qui concerne le réseautage:

Les applications d'un pod utilisent toutes le même espace de noms réseau (mêmes adresses IP et ports) et peuvent ainsi se "trouver" et communiquer à l'aide de localhost. Pour cette raison, les applications d'un pod doivent coordonner leur utilisation des ports. Chaque pod a une adresse IP dans un espace réseau partagé et plat qui communique entièrement avec d’autres ordinateurs physiques et pods sur le réseau.

  • Les conteneurs d’un docker-composition se voient attribuer différentes adresses IP. Voir ceci blog post pour plus d'informations.
2
Paulo Merson