两级调度器(如 Apache Mesos)与单级调度器(如 Nomad 或 Kubernetes)的优缺点是什么?

What are the Advantages and Disadvantages of Two Level Scheduler (like in Apache Mesos) vs Single Level Scheduler (like in Nomad or Kubernetes)?

二级调度器(如 Apache Mesos)与单级调度器(如 Kubernetes)的优缺点是什么?对于通常在构建、测试、部署无状态、有状态和大数据应用程序中发生的各种工作负载,它们将如何在小型和大型集群上执行?

完全披露:我为 Mesosphere 工作 :)

二级调度器的一个优点是它们可以以不同的方式管理不同的工作负载。

一些工作负载需要访问仅在特定节点上可用的特殊资源(例如外部存储)。某些工作负载可能 运行 最适合特殊资源,但可以使用其他类型(TensorFlow 应该 运行 在 GPU 上,但可以 运行 在 CPU 上紧要关头)。某些工作负载可以在任何地方重新安排,如果它们节点 运行 死机 (Spark)。除了所需资源的变化之外,工作负载还具有不同的安装、扩展、备份和升级过程。这对于根据生命周期阶段需要不同配置的多节点应用程序来说尤其复杂。

两级调度让您可以为每个工作负载定义不同的规则,同时 运行将它们全部集中在一个公共资源池上,这样可以保持较高的资源利用率。

我认为 this diagram from this blog post 很好地说明了两级调度。