HashiCorp has given its container orchestration tool Nomad a good once-over, reworking the task driver system and adding a plugin system for devices to make it more of a monkey wrench for scheduling. The result can be examined in v0.9, which is now available.
Up until now, Nomad came with a selection of integrated native providers. To give users a better chance to pick and choose tools as needed, HashiCorp has made a pluggable interface available, which is meant to make Nomad more extendable. This should however not be limited to execution drivers, but also help accessing different devices such as networking equipment or GPUs, since the company’s goal is to make Nomad as general as possible for scheduling purposes.
To realise this, the task driver system has been refactored to support external plugins, and a device plugin system (for GPUs and such) has been added. An example of how the task driver system works can be found in the form of the externalised LXC task driver, though upcoming releases will include plugin-based storage and networking features to offer more options.
Another important enhancement in the new version are affinities, a stanza (read: configuration option) that lets job authors state a preferred placement for a workload. Better control over placements and more optimisation possibilities are also the goal behind the newly added spread stanza, which allows the spreading of workloads across the available infrastructure. Both stanzas include a weight parameter to assign priorities.
To give the latter a higher impact, Nomad’s scheduler is now able to evict lower priority work in favour of those with higher priority. For now this only works for system jobs, Enterprise subscribers will see the so-called preemption feature added for service and batch jobs as well in one of the next point releases.
Nomad 0.9 also comes with an improved Web UI, that lets users submit jobs and provides more descriptive charts for CPU and memory usage. A complete list of changes can be found in the project’s change log.
Compared to Kubernetes, which is also an orchestration system, Nomad is architecturally simpler and has a smaller scope, letting other tools handle service discovery for example. Since it supports virtualized, containerised, and standalone applications, it’s not as focused on Docker containers as Kubernetes.
Nomad is said to scale to cluster sizes exceeding 10,000 nodes in real-world production environments, while natively supporting configurations handling multiple data centers and regions.