Kubernetes Pods和Docker Compose之间有什么区别(Composures?)

Ale*_*x C 50 containers docker kubernetes docker-compose

Kubernetes Pods和Docker Compose脚本(以下称为"Compositions")的结果似乎都会产生虚拟计算机集群.

群集中的计算机都可以配置为相互通信,因此您可以编写一个镜像整个端到端生产配置的脚本.单个脚本允许您在任何容器主机上部署该群集.

鉴于两个系统之间的相似性,我很难理解两者之间的差异.

为什么我会选择一个而不是另一个?它们是相互排斥的系统还是我可以在kubernetes中运行组合.

在设计集装箱系统时是否需要考虑任何关键因素?如果我设计的架构网站今天,并会尝试建立一个基于容器的系统.我应该设计的最重要的事情是什么?(与在单一机器系统上构建相比)

Von*_*onC 44

docker compose 只是一种声明你必须启动的容器的方法: 它没有节点或集群的概念的,除非它启动群主机和群节点,但是这是docker swarm)
更新2016年7月,7个月后:搬运工1.12模糊的线条和包括一个"群模式".

它与kubernetes有很大的不同,kubernetes是一个谷歌工具,可管理数千个容器组作为Pod,数十台或数百台机器.

一个Kubernetes波德是从码头工人群更接近:

想象一下各个Docker容器作为包装盒.由于需要到达相同位置或彼此具有亲和力而需要保持在一起的盒子被装载到运输容器中.
在这个类比中,包装盒是Docker容器,运输容器是Kubernetes容器.

正如ealeon 在下面评论那样:

我认为pod相当于compose,除了kubernetes可以编排pods,而没有任何编排组合,除非它像你提到的那样与swarm一起使用.

顺便提一下,你可以使用docker-compose启动kubernetes命令.

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

就Kubernetes与其他容器管理系统(如Swarm)的不同而言,Kubernetes是Google开发的第三代集群管理器.

您可以在Google Cloud Platform Podcast的第3集中听到有关kubernetes的更多信息.

虽然两者都可以创建一个多容器应用程序,但Pod也可以作为部署和水平扩展/复制的单元,而docker组件不提供.
另外,您不直接创建pod,而是使用控制器(如复制控制器).

POD存在于一个更大的平台中,该平台提供协同定位(共同调度),命运共享,协调复制,资源共享和依赖关系管理.
Docker构建了自己的生命......以及它的docker-compose.yml文件

  • 我不认为这个答案是正确的。看起来 docker-compose.yml 确实有节点和集群的概念。https://github.com/docker/compose/blob/release/docs/compose-file.md 我认为 pod 等同于 compose ,除了 kubernentes 可以编排 pods 而没有任何编排 compose 除非它像你一样与 swarm 一起使用已经提到 (2认同)

Rem*_*rio 6

尽管上面的答案清楚地回答了这个问题,但我还是要添加一些快速注释。

  1. Docker-Compose 和 Kubernetes pod 都是配置文件 (Yaml),它们从图像定义容器实例。

  2. Docker compose 本身只是一个文件,可以包含用于通信的服务(容器);它本质上是非分布式的。

  3. Kubernetes pod 还能够定义多个容器,但这里的主要区别在于可用节点之间的分布概念。
  4. 最后,Docker Compose 是一种无需编排即可定义和运行多容器 Docker 应用程序的工具,除非被告知使用 Swarm 这样做。一个 pod 包含多个容器,如果可用,这些容器会自动在节点集群中共享。


Pau*_*son 6

网络方面存在差异:

Pod 中的应用程序都使用相同的网络命名空间(相同的 IP 和端口空间),因此可以“找到”彼此并使用 localhost 进行通信。因此,Pod 中的应用程序必须协调它们对端口的使用。每个 pod 在平面共享网络空间中都有一个 IP 地址,该空间与网络上的其他物理计算机和 pod 进行完全通信。

  • docker-compose 中的容器被分配了不同的 IP 地址。有关更多信息,请参阅此博客文章