Kubernetes与CloudFoundry的比较


109

CloudFoundry / Diego的下一版本将为Docker容器提供本机支持,这些容器将在多个主机之间进行编排[ link ]。这听起来与Kubernetes非常相似。

当然,Kubernetes试图解决的问题更笼统,CloudFoundry更专注于应用程序开发。但是,对我来说,听起来两者都朝着相似的方向发展,CloudFoundry在简单的业务流程之上添加了更多功能。

所以我想知道Kubernetes会比CloudFoundry增加更多价值的用例吗?

Answers:


198

作为CloudFoundry(过去)和Kubernetes(现在)的提交者,我可能有资格回答这一问题。

类似PaaS

我喜欢将CloudFoundry称为“ Application PaaS”,将Kubernetes称为“ Container PaaS”,但是鉴于两个项目随时间变化以在相同的市场中竞争,因此两者之间的区别相当微妙而又不稳定。

两者之间的区别在于,CF具有一个过渡层,该过渡层需要一个(12个因数)用户应用程序(例如jar或gem)和一个Heroku风格的buildpack(例如Java + Tomcat或Ruby)并生成一个droplet(类似于一个Docker映像)。CF不会向用户公开容器化接口,但是Kubernetes可以。

听众

CloudFoundry的主要受众是企业应用程序开发人员,他们希望使用Heroku样式的构建包来部署12要素无状态应用程序。

Kubernetes的受众范围更广一些,包括无状态应用程序和提供自己容器的有状态服务开发人员。

这种区别将来可能会改变:

功能比较

随着这两个项目的成熟和竞争,它们的相似性和差异将改变。因此,将以下功能与一粒盐进行比较。

CF和K8都有许多相似的功能,例如容器化,命名空间,身份验证,

Kubernetes的竞争优势:

  • 对共享网络堆栈的容器的容器进行分组和缩放,而不仅仅是独立缩放
  • 带上自己的容器
  • 有状态持久层
  • 更大,更活跃的OSS社区
  • 具有可替换组件和第三方插件的更可扩展的体系结构
  • 免费的Web GUI

CloudFoundry的竞争优势:

  • 成熟的身份验证,用户分组和多租户支持[x]
  • 带上自己的应用
  • 随附的负载均衡器
  • 由BOSH部署,扩展和保持活动[x]
  • 强大的日志记录和指标聚合[x]
  • 企业Web GUI [x]

[x]这些功能不是迭戈的一部分,也不包含在莱迪思中。

部署方式

CloudFoundry的竞争优势之一是拥有成熟的部署引擎BOSH,该引擎可实现诸如扩展,复活和监视核心CF组件之类的功能。BOSH还通过可插拔的云提供程序抽象支持许多IaaS层。不幸的是,BOSH的学习曲线和部署配置管理是噩梦。(作为BOSH提交者,我认为我可以准确地说出来。)

Kubernetes的部署抽象还处于起步阶段。核心存储库中提供了多个目标环境,但是它们并没有全部正常工作,没有经过良好测试或没有得到主要开发人员的支持。这主要是成熟的事情。可能会随着时间的流逝而改善并增加抽象度。例如,DCOS上的Kubernetes允许通过单个命令将Kubernetes部署到现有DCOS集群。

历史背景

Diego是CF的Droplet执行代理的重写。它最初是在Kubernetes宣布之前开发的,随着竞争格局的发展,它具有更多的功能范围。它的最初目标是生成液滴(用户应用程序+ CF buildpack)并在Warden(在Go中重写时重命名为Garden)容器中运行它们。自成立以来,它也被重新打包为Lattice,这有点像CloudFoundry-lite(尽管该名称是由现有项目使用的))。因此,Lattice有点像玩具,因为它故意减少了用户的听众和范围,明显缺少使它“可用于企业”的功能。CF已经提供的功能。这部分是因为Lattice用于测试核心组件,而没有来自更复杂的CF的一些开销,但是您也可以在内部高信任度环境中使用Lattice,而安全性和多租户并不是那么重要。

还值得一提的是,CloudFoundry和Warden(其容器引擎)也比Docker早了几年。

另一方面,Kubernetes是一个相对较新的项目,由Google根据BORG和Omega多年的容器使用情况而开发。Kubernetes可以被认为是Google的第三代容器编排,就像Diego是Pivotal / VMware的第三代容器编排(在VMware编写的v1;在Pivotal Labs帮助下在VMware的v2;在接管项目后在Pivotal的v3)。 。


嗨!您能否说更多有关“包括自己的负载平衡器”和“可靠的日志记录和指标聚合”的信息?Kubernetes提供了两者。
aronchick

1
Kubernetes实际上还没有包含负载均衡器实现,这方面的工作正在进行中。它提供了一种要求您的云提供商提供负载均衡器的方法,但是实际上只有少数云提供商给您一个(GCE和AWS,我认为)。默认情况下,CF自动为您提供一个负载均衡器。
KarlKFI's

2
作为Kubernetes 1.1,Kubernetes现在支持自动缩放和HTTP路径碱负载平衡(blog.kubernetes.io/2015/11/...
布伦丹伯恩斯

2
我觉得您的“ Enterprise Web GUI”要点有很多微妙的好处。例如,GUI有一个市场,您可以在单击按钮时说“我想要一个数据库”或“我想要一个持久队列”。它回答为“好,这是您的连接字符串”。我对使用k8s的印象是,您会自己做这些事情:在某个地方找到一个docker容器并编写一个自己的部署脚本,以便您的环境可以使用它。CF也为所有这些提供了CLI。
丹尼尔·卡普兰

1
关于kubernetes和cloud Foundry的企业产品,肯定还有更多的话要说。不幸的是,真的很难从他们的网站和文档中确定PCF实际具有的功能。我的比较主要围绕开源产品。Kubernetes还拥有面向企业的供应商,最近有4或5个不同的供应商。他们每个人都有自己的特点和包管理和安全插件等
KarlKFI

11

Cloud Foundry是一个很棒的工具,假设您愿意始终在产品的约束范围内工作,因为它很自以为是。Web UI在第一天看起来很酷,但是在开始使用客户端并配置了CI / CD管道之后,很少使用。我发现Cloud Foundry很棒,除非弹出用例,而Cloud Foundry很难完全支持这些用例。提供这些用例可能会延迟您尝试解决这些问题的项目,结果是您失去了基础架构的可见性并失去了那些通常在Cloud Foundry之外运行的组件的支持优势(请考虑多个数据库,kafka,hadoop,cassandra ,等等)我怀疑随着时间的流逝,围绕Docker的势头以及Cloud Foundry的灵活性将带动用户使用Kubernetes,Mesos或Docker Swarm / Datacenter。Cloud Foundry有可能赶上这三个,但是由于这些开源项目的普及,这似乎不太可能。


3
我是Cloud Foundry的初学者。您能否提供一些使用案例的示例,这些使用案例要求Cloud Foundry不容易支持的功能?
索姆

9

很难回答为什么公司会生产与另一种产品基本相似的产品。原因很多。也许他们已经开始使用它并对其进行了投资。也许他们(CF)认为Kubernetes做得不好,或者弄错了API /模型/细节。也许他们认为,如果他们控制整个产品而不是做出贡献,他们可以更快地行动。

诚然,我说这是Kubernetes开发人员-有人可能会问Kubernetes与Mesos,Amazon ECS与Kubernetes或Docker Swarm与Kubernetes相同的问题。

我希望随着时间的流逝,我们所有人都朝着同一个方向发展,可以开展更多的合作,而花费更少的时间来重塑彼此的工作。

至于Kubernetes-重点是应用程序开发人员:简单而强大的原语,可让您非常快速地大规模构建和部署应用程序。我们依靠类似技术的经验(当然是Google的经验)来规划我们的课程。其他人会有不同的经历或意见。


10
但是,关于Kubernetes也可以这样说。CF v1于2011年发布,v2在Docker首次开源之时于2013年年中构建并随容器一起发布,而Diego(在Go中重写容器引擎)于2014年初开始提交,大约在Kube推出前6个月。甚至宣布。也许人们以为CF出错了,等等,但是肯定有很多项目正在重建它。我们也可以在Swarm vs. K8S或Nomad或Marathon等中看到这一点。也就是说,开放源代码既有合作,也有竞争,希望会合而为一
Stuart Charlton 2016年

3

我认为,他们所采用的方法是一个重大区别:

CF从3个组件自动构建运行时:用户提供的应用程序二进制文件,包含运行该应用程序所需的中间件的buildpack和OS映像(干细胞)。CF用户(开发人员)仅需提供应用程序二进制文件(例如,可执行的jar文件)。CF负责其余的工作,即打包和运行应用程序。

Kubernetes希望开发人员可以在Docker映像中包含已经内置并可以运行的中间件和OS。为此,Kubernetes的“部署清单”(例如,Helm图表)不仅描述了单个应用程序或服务,而且还描​​述了在运行时构成您的解决方案的所有微服务。您只提交一个关于运行时的声明式描述,Kubernetes会考虑实际运行时状态是否与您提供的描述相匹配。

因此,CF方法允许它解决诸如“在整个云中更换具有补丁程序安全漏洞的操作系统而不会造成服务停机”之类的用例。但是,它也专注于每个服务部署的服务,而不是对系统目标“理想”运行时的声明式描述。


2

Cloud Foundry是一个开源的平台即服务云计算系统。Cloud Foundry允许将项目部署在不同的空间,并将任何云服务绑定到您的应用程序。

Kubernete更像是容器(pod)的装饰工具,它可以自动化容器化应用程序的部署,扩展和管理。它使用术语“容器”来定义容器或一组容器。

任何kubernetes部署至少需要两个资源:

1)deployment.yaml:此资源定义需要从容器寄存器,副本集(pod副本),推出策略,缩放和探测等中获取图像的版本。

2)service.yaml:它是内部Pod与外界之间的接口,所有外部流量都将侦听此资源中定义的端口,从此端口将负载分配给内部Pod。

kubernetes提供的更多资源是入口,用于管理对群集中服务的外部访问,通常是http。通过Ingress,您可以提供负载平衡,SSL终止和基于名称的虚拟主机。

有关kubernetes的更多信息,您可以在下面找到:https ://kubernetes.io/docs/


1

[pcf vs kubernetes] [1] pcf和kubernetes之间的区别

                                PCF

(在应用程序级别的平台抽象)•Pivotal Cloud Foundry是云原生应用程序开发的高层抽象。

•我们在应用程序级别具有平台抽象,可以构建和部署完全配置的应用程序

•PCF是“应用程序” PaaS(也称为Cloud Foundry应用程序运行时)的一个示例。

•开发人员将来维护应用程序

•非常适合新应用程序,云原生应用程序。对于使用短生命周期和频繁发布的团队,PCF提供了出色的产品。

                       Kubernetes 

(容器级别的平台抽象)•Kubernetes是容器调度程序或协调器。

•我们在容器级别具有平台抽象,将容器构建和部署作为完整应用程序的一部分。

•Kubernetes是一个“容器” PaaS(有时称为CaaS)。

•使用容器编排工具,开发人员可以在将来创建然后维护容器。

•对于新应用,您的工程团队需要做更多的工作,并降低生产率


1
您好Hemavathi Tamilmaran,您的答案是否缺少链接?

@庞是对的!链接将补充您的解释。
塔斯林·奥塞尼

1

四年后的趋势如下:

在此处输入图片说明

如今,Kubernetes集群变得非常便宜,并且Kubernetes的工具环境更好。

最近,其他海报列出的大多数竞争功能也很容易在kubernetes中复制。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.