Interested in talking with HashiCorp about your experience building, deploying, or managing your applications? Set up a time to chat!
Nomad is a flexible scheduler and workload orchestrator that enables you to deploy and manage any application across on-premise and cloud infrastructure at scale. Some of Nomad's main features include:
exec
driver, and more. Additionally, users can create their own task driver plugins for customized workloads.Read more about Nomad's key features and how it compares to other tools.
To create a solid foundational understanding of Nomad, review these terms before moving on to the other tutorials in this collection.
Nomad setupIn the process of getting Nomad deployed and functional, you will encounter the following terms.
agent
- An agent is a Nomad process running in server or client mode.
client
- A Nomad client is responsible for running the tasks assigned to it. It also registers itself with the servers and watches for any work to be assigned. When running the agent, the client may be referred to as a node.
server
- A Nomad server manages all jobs and clients, monitors tasks, and controls which tasks get placed on which client nodes. The servers replicate data between each other to ensure high availability.
dev agent
- The development agent is an agent configuration that provides useful defaults for running a single node cluster of Nomad. It runs in server and client mode and does not persist its cluster state to disk, which allows the agent to start from a repeatable clean state without having to remove disk based state between runs.
A Nomad cluster is typically made up of three to five server agents and many client agents.
Nomad operationIn the process of Nomad scheduling and running workloads, you will encounter the following terms.
task
- A task is the smallest unit of work in Nomad. Tasks are executed by task drivers
like docker
or exec
, which allow Nomad to be flexible in the types of tasks it supports. Tasks specify their required task driver, configuration for the driver, constraints, and resources required.
group
- A group is a series of tasks that run on the same Nomad client.
job
- A job is the core unit of control for Nomad and defines the application and its configurations. It can contain one or many tasks.
job specification
- A job specification, also known as a jobspec defines the schema for Nomad jobs. This describes the type of job, the tasks and resources necessary for the job to run, job information like which clients it can run on, and more.
allocation
- An allocation is a mapping between a task group in a job and a client node. When a job is run, Nomad will choose a client capable of running it and allocate resources on the machine for the task(s) in the task group defined in the job.
An application is defined in a jobspec with groups of tasks and once submitted to Nomad, a job is created along with allocations for each group defined in that jobspec.
A typical application workflow involves several steps and begins outside of Nomad.
The prerequisite for any application running on Nomad is having a workload artifact. Nomad supports a variety of artifacts including Docker images, raw binaries, Java applications, and virtual machine images using QEMU.
Nomad does not create these application artifacts but a CI tool like CircleCI, GitHub Actions, HashiCorp Waypoint, or a local build can be used to create and then push the artifacts to a repository from where Nomad can retrieve them when it schedules a job.
Once the application has been created, the workflow continues with Nomad.
This collection is your guide to becoming familiar with Nomad through hands-on tutorials. The following tutorials will show you how to install the Nomad CLI tool, create a Nomad cluster, and deploy an example application.
By the end of the collection, you will have a Nomad cluster of your own and an application running on it that you can modify and redeploy.
Continue on to the installation tutorial by clicking on the Next button below and learn how to install the Nomad CLI.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4