Skip to the content.

Hashicorp Nomad

Nomad is a simple and flexible workload orchestrator to deploy and manage containers (docker, podman), non-containerized applications (executable, Java), and virtual machines (qemu) across on-prem and clouds at scale.

Nomad provides several key features:

Architecture

https://www.nomadproject.io/docs/internals/architecture

Federation differences vs KubeFed

KubeFed:

Nomad:

Scheduler design(No lock or reservation mechanism)

https://www.nomadproject.io/docs/internals/scheduling/scheduling

  1. A job submission triggers an evaluation.
  2. The evaluation request is enqueued into a broker(single instance running on leader server). 2.1. Provide priority ordering. 2.2. Ensure at least once delivery.
  3. Nomad server runs scheduling worker to process evaluations to generate allocation plan. 3.1. Feasibility checking: Find a set of feasible nodes. 3.2. Ranking: Score(bin packing) the nodes and find the best fit.
  4. Submit the allocation plan to the leader server(plan queue). 4.1 Server uses plan queue to prevent over-subscription or conflicts(concurrent issue).
  5. After a plan is created, client picks it up and begin execution.

Volumes

https://www.nomadproject.io/docs/internals/plugins/csi

References