Apache Mesos 做了哪些 Kubernetes 做不到的事情,反之亦然?

What does Apache Mesos do that Kubernetes can't do and vice-versa?

Apache Mesos 做了哪些 Kubernetes 做不到的事情,反之亦然?

Mesos 是一个二级调度器。当然,它从每台机器上获取资源信息并将其提供给顶级调度程序,以便像 kubernetes 这样的框架可以用来跨机器调度容器,但 Kubernetes 本身可以跨机器调度容器(从这方面不需要 Mesos)。那么,有哪些 Apache Mesos 可以做而 Kubernetes 不能做的事情,反之亦然?

Mesos 和 Kubernetes 都是 n 级容器编排器。这意味着 您可以实现相同的功能,但可以更轻松地完成某些任务(读得更好)其中之一。事实上,您可以 运行 Mesos 上的 Kubernetes,反之亦然。

让我们来了解一下主要差异,以便在您需要做出决定时提供一些线索:

建筑

正如您所指出的,Mesos 是一个二级调度器,这是架构的主要区别。这使您能够创建自定义调度程序(又名框架)以 运行 您的任务。更重要的是,您可以拥有多个调度程序。您所有的调度程序都会根据您想要 运行 的任务类型,使用不同的启发式方法竞争使用 Dominant Resources Fairness algorithm (that could be replaced with custom allocator). You can also assign roles to the frameworks and tasks and assign weights to this roles to prioritize some schedulers. Roles are tightly connected with resources. Above features gives you the ability to create your own way of scheduling for different applications (e.g., Fenzo) 公平分配的资源。例如,当 运行ning 批处理任务时,最好将它们放在数据附近,开始时间并不那么重要。另一方面,运行宁无状态服务是独立于节点的,这对尽快运行它们更为关键。

Kubernetes 架构是一个单级调度器。这意味着 pod 将 运行 的决定是在单个组件中做出的。没有资源提供这样的东西。另一方面,那里的一切都是可插拔的,并采用分层设计构建。

起源

Mesos 是在 Twitter 上创建的(以前在伯克利,但第一次生产使用是在 Twitter 上)以支持它们的规模。

In March 2010, about a year into the Mesos project, Hindman and his Berkeley colleagues gave a talk at Twitter. At first, he was disappointed. Only about eight people showed up. But then Twitter's chief scientist told him that eight people was lot – about ten percent of the company's entire staff. And then, after the talk, three of those people approached him.

Soon, Hindman was consulting at Twitter, working hand-in-hand with those ex-Google engineers and others to expand the project. Then he joined the company as an intern. And, a year after that, he signed on as a full-time employee. source

Kubernetes 由 Google 创建,旨在将用户带到他们承诺没有锁定体验的云中。这与亚马逊对 Kindle 所做的技术相同。您可以阅读任何书籍,但与亚马逊一起使用可为您提供最佳体验。 Google也是如此。您可以在任何云(public 或私有云)上 运行 Kubernetes,但您只能在 Google 云上获得最好的工具、集成和支持。

But Google and Microsoft are different. Microsoft wants to support everything on Azure, while Google wants Kubernetes everywhere. (In a sense, Microsoft is living up to the Borg name, assimilating all orchestrators, more than Google is.) And quite literally, Kubernetes is how Google is playing up to the on-premises cloud crowd giving it differentiation from AWS (which won’t sell its infrastructure as a stack with a license, although it says VMware is its private cloud partner) and Microsoft (which still doesn’t have its Azure Stack private cloud out the door). source

社区

Judging a project simply by its community size could be misleading. It's like you'd be saying that php is a great language because it has large community.

Mesos 社区比 Kubernetes 小得多。事实就是如此。 Kubernetes 得到许多大公司的资金支持,包括 Google、Intel、Mirantis、RedHat 等,而 Mesos 主要由 Mesosphere 开发,并得到 Apple、Microsoft 的一些支持。 Mesos虽然是一个成熟的项目,但发展缓慢但稳定。另一方面,Kubernetes 更年轻,但发展迅速。

Meso contributors origin

The Kubernetes Community - Ian Lewis, Developer Advocate, Google

规模

Mesos 从一开始就是针对大客户的。它在 Twitter、Apple、Verizon、Yelp、Netflix 中用于 运行 数千台服务器上的数十万个容器。

Kubernetes 由 Google 发起,旨在为开发人员提供 Google 基础架构体验 (GIFFE)。从一开始,它就是为小规模到数百台机器准备的。每个版本都会增加此限制,但它们从小到大。没有关于最大 Kubernetes 安装的 public 数据。

炒作

由于规模问题,Kuberntetes 开始在较小的公司(不是云规模)中流行,而 Mesos 则针对企业用户。 Kubernetes 由 Cloud Native Foundation 支持,而 Mesos 是 Apache Foundation Project。这两个基金会有不同的创始和发起人。一般来说,更多的钱可以带来更好的营销效果,而 Kubernetes 确实做得对。

https://g.co/trends/RUuhA

结论

看起来 Kubernetes 已经赢得了容器编排器 war。但是,如果您有一些自定义工作负载并且规模非常大,Mesos 可能是一个不错的选择。

The main difference is in the community size and the open source model : where DCOS is supported by Mesosphere and provide enterprise features in a commercial product only (because mesosphere isn't philanthropist), K8S has a larger community with strong contributions from different companies resulting in providing much more integrated enterprise features (multitenancy, RBAC, quota, preemption, gateways...) meaning they are easier to use, not necessarily they don't exist in DCOS. I would globally say that :

  • DCOS is more battle tested for stateful and big data workloads but lacks of integration with other perimetric components including plug and play central monitoring and logging and enterprise features like security model, multi tenancy, auto updates... It was a very hard way to integrate everything for a production grade platform.
  • K8S is more battle tested for stateless apps and provides lots of plug and play tools like prometheus, EFK, helm... which makes the implementation of a production grade platform much easier. Next to that there is a big move on stateful workloads with statefulsets and the operator pattern which is comparable with mesos frameworks but again, K8S provides lots of tools to develop them with less costs because lots of functionalities are provided out of the box, it takes me 2 months to develop a MongoDB operator to provide MongoDB as a service in a multi tenant and secured way and I needed to learn Golang in the same time.

source