What are the best Docker cluster managers?
Here’s the Deal
Slant is powered by a community that helps you make informed decisions. Tell us what you’re passionate about to get your personalized feed and help others.
Kubernetes was built on top of several years of experience from Google working on containers in production. It's a little opinionated on how containers should work and behave, but if used correctly it can help you achieve fault-tolerant systems. See More
Kubernetes was not written for docker clustering alone. It uses a different API, configuration and different YAML definitions. So you can't use the Docker CLI or Docker Compose to define your containers. Everything has to be done from scratch. See More
Kubernetes uses labels which are key-value pairs that are attached to objects, usually pods. They are used to specify the characteristics of an object like the version, tier, etc. Labels are used to identify objects or groups of objects according to different characteristics that they may have, for example they can be used to identify all the pods that are included in the backend tier. Through labels it's easier to do grouping tasks for pods or containers, like moving pods to different groups or assigning them to load-balanced groups. See More
While other orchestration tools provide much more than just cluster management and scheduling (they also provide things like secrets management, discovery, monitoring, etc.), Nomad follows the Unix philosophy of doing only one thing and doing it well, providing only cluster management and scheduling. See More
Nomad has the concept of both a long running service and a batch job. When you submit a batch job that contains tasks, if you don't have immediate capacity in your cluster, tasks will queue up in nomad. As capacity frees up, nomad schedules the work. This is great if your workloads are heterogeneous in terms cpu, memory and how long they take to run. You don't have to scale up and down, unless you want faster throughput. If the throughput isn't as important, you can let things run as soon as a resource opens up. See More
Nomad uses a high-level abstraction of jobs. Jobs are essentially task groups (sets of tasks). Because of this, Nomad allows users to develop and manage complex applications easily, without having to think about the individual containers that make these applications. See More