首页 文章

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

提问于
浏览
42

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

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

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

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

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

3 回答

  • 39

    docker compose只是一种声明你必须启动的容器的方法:它没有节点或集群的概念,除非它启动swarm主节点和swarm节点,但那是docker swarm
    2016年7月更新,7个月后:docker 1.12模糊了线条和includes a "swarm mode" .

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

    Kubernetes Podbe closer from a docker swarm

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

    commented belowealeon

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

    你可以launch kubernetes commands with docker-compose by the way .

    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开发的第三代集群管理器 .

    你可以在episode #3 of Google Cloud Platform Podcast听到更多关于kubernetes的信息 .

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

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

  • 3

    尽管上面的答案清楚地回答了这个问题,但我正在添加一些快速笔记 .

    • Docker-Compose和Kubernetes pod都是配置文件(Yaml),用于根据图像定义容器实例 .

    • Docker compose本身只是一个能够包含通信服务(容器)的文件;它本质上是非分布式的 .

    • Kubernetes pods还具有定义多个容器的能力,但这里的主要区别在于可用节点之间的分布概念 .

    • 最后,Docker Compose是一个用于定义和运行多容器Docker应用程序而不需要编排的工具,除非告知使用Swarm执行此操作 . 并且pod包含多个容器,如果可用,它们将自动在节点集群中共享 .

  • 0

    网络方面有所不同:

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

    • docker-compose中的容器被分配了不同的IP地址 . 有关更多信息,请参见blog post .

相关问题