The stack looks something like this for Kubernetes/Mesos (top down):
- Kubernetes and Mesos (client/server packages depending on node type)
- Docker (container engine)
- OS (Ubuntu/RHEL/etc)
What are some use-cases? - you have more work than can fit into one server
- need to distribute load across N+ nodes
- Google heavily uses containers (not k8s, but that inspired these patterns)
- Gmail/Search/etc all run in containers [7]
- Apple, Twitter, and Airbnb are running Mesos today [8, 9]
There are a bunch of revolving services, like: - distributed key/values stores (etcd/zookeeper)
- load balancers
- image registries
- user interfaces
- cli tools
- logging/monitoring/alerting
- etc
But, to answer your question, the main difference between Kubernetes and Mesos, is that Kubernetes offers an opinionated workflow, built-in scheduler, and patterns for how containers are deployed into this cluster of compute notes. The pattern is baked in from the start via Pods, Labels, Services, and Replication Controllers. It also helps to know that Kubernetes comes from Google, where they have been running containers in-house, so much of this workflow (pods, services, replication controllers, etc), comes from their internal use-cases. That's the 10,000 foot view.[1] https://github.com/GoogleCloudPlatform/kubernetes
[3] https://mesosphere.github.io/marathon/
[5] https://hadoop.apache.org/
[6] http://mesos.apache.org/assets/img/documentation/architectur...
[7] http://www.wired.com/2013/03/google-borg-twitter-mesos/
[8] http://www.infoq.com/news/2015/05/mesos-powers-apple-siri