Kubernetes vs. CloudFoundry

Jon*_*nny 106 cloud-foundry kubernetes pivotal-cloud-foundry

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

当然,Kubernetes试图解决的问题更为通用,其中CloudFoundry更专注于应用程序开发.然而,对我来说,它听起来都朝着类似的方向发展,而CloudFoundry正在简单的业务流程之上添加更多功能.

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

Kar*_*KFI 194

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

PaaS的样

我喜欢将CloudFoundry称为"应用程序PaaS",将Kubernetes称为"容器PaaS",但鉴于两个项目都会随着时间的推移而在同一市场中竞争,因此区别相当微妙和流畅.

两者之间的区别在于CF有一个暂存层,它采用(12因素)用户应用程序(例如jar或gem)和Heroku风格的buildpack(例如Java + Tomcat或Ruby)并生成一个Droplet(类似于Docker图片).CF不会将容器化接口暴露给用户,但Kubernetes会这样做.

听众

CloudFoundry的主要受众是希望使用Heroku风格的buildpack部署12因素无状态应用程序的企业应用程序开发人员.

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

这种区别可能在未来发生变化:

功能比较

随着两个项目的成熟和竞争,它们的异同将发生变化.因此,请将以下特征与一粒盐进行比较.

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

Kubernetes的竞争优势:

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

CloudFoundry的竞争优势:

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

[x]这些功能不是Diego的一部分或包含在莱迪思中.

部署

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

Kubernetes的部署抽象仍处于起步阶段.核心仓库中提供了多个目标环境,但它们并非全部正在运行,经过良好测试或得到主要开发人员的支持.这主要是成熟的事情.人们可能会期望这会随着时间的推移而改进并且会增加抽象.例如,DCOS上的Kubernetes允许使用单个命令将Kubernetes部署到现有DCOS群集.

历史背景

迭戈是CF的Droplet执行代理的重写.它最初是在Kubernetes宣布之前开发的,随着竞争格局的演变,它已经具有更多的功能范围.它的最初目标是生成飞沫(用户应用程序+ CF buildpack)并在Warden(在Go中重写时重命名为Garden)容器中运行它们.公司自成立以来它也被重新包装成,这是有点的CloudFoundry,精简版(虽然这名采取的现有项目).出于这个原因,莱迪思有点像玩具一样,因为它故意减少了用户的观众和范围,显然缺少使其"企业就绪"的功能.CF已经提供的功能.这部分是因为格是用来测试的核心部件,而不从一些更复杂的CF开销,但你也可以在安全和多租户是没有那么多关心内部的高信任度的环境中使用莱迪思.

值得一提的是,CloudFoundry和Warden(它的容器引擎)也早于Docker,差不多几年了.

另一方面,Kubernetes是一个相对较新的项目,由Google根据BORG和Omega多年的容器使用情况开发而成.Kubernetes可以被认为在谷歌的第三代集装箱编排,以同样的方式迭戈是在枢纽器/ VMware(V1书面VMware公司; V2 VMware公司与枢纽实验室的帮助;在枢纽V3它接手项目后)第三代集装箱编排.

  • 从Kubernetes 1.1开始,Kubernetes现在支持AutoScaling和HTTP路径基础负载平衡(http://blog.kubernetes.io/2015/11/Kubernetes-1-1-Performance-upgrades-improved-tooling-and-a-growing- community.html?m = 1) (2认同)
  • 我觉得有很多微妙的好处加上你的"企业Web GUI"要点.例如,GUI有一个市场,您只需点击一下按钮就可以说"我想要一个数据库"或"我想要一个持久的队列".它回答说,"好吧,这是你的连接字符串".我对使用k8s的印象是你可以自己做这些事情:在某处找到一个docker容器并自己编写一个部署脚本,以便你的环境可以使用它.CF也为所有这些提供了CLI. (2认同)

Jim*_*ruk 10

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有可能赶上这三个,但由于这些开源项目的普及,这似乎不太可能.

  • 我是Cloud Foundry的初学者.您能否举例说明需要Cloud Foundry中不易支持的功能的用例? (3认同)

Tim*_*kin 8

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

当然,我说这是一个Kubernetes的开发者 - 人们可能会问Kubernetes vs Mesos,Amazon ECS vs Kubernetes,Docker Swarm vs Kubernetes的相同问题.

我希望随着时间的推移,我们都朝着同一个方向发展,可以更多地合作,花更少的时间重新发明彼此的工作.

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

  • 关于Kubernetes的情况也是如此; CF v1于2011年推出,v2于2013年中期在Docker首次开源时与容器一起构建并推出,并且迭代(在Go中重写容器引擎)于2014年初开始提交,大约在Kube发布之前的6个月.甚至宣布.也许人们认为CF弄错了等等,但很多项目似乎肯定会重新创造它.我们也看到了Swarm vs. K8S,Nomad或Marathon等.这就是说,开源有合作和竞争,希望在有意义的地方融合 (10认同)