Nomad is a workload orchestrator designed by HashiCorp to deploy and manage containers and non-containerized applications across on-premises and cloud environments. It is a single binary that schedules applications and services on a cluster of machines and is highly scalable and performant. Nomad is known for its simplicity and flexibility, offering developers and operators a unified workflow to deploy applications. Nomad supports containerized, virtualized, and standalone applications, and its workload support includes Docker, Windows, QEMU, and Java. It integrates seamlessly with other HashiCorp tools like Consul for service discovery and Vault for secrets management, providing a full-stack solution for infrastructure management.
2. Lack of etiquette and manners is a huge turn off.
KnolX Etiquettes
Punctuality
Join the session 5 minutes prior to the session start time. We start on
time and conclude on time!
Feedback
Make sure to submit a constructive feedback for all sessions as it is very
helpful for the presenter.
Silent Mode
Keep your mobile devices in silent mode, feel free to move out of session
in case you need to attend an urgent call.
Avoid Disturbance
Avoid unwanted chit chat during the session.
3. What is Nomad
Why use Nomad
Comparison between Nomad and Kubernetes
Customers of HashiCorp
Nomad Architecture
Installation and Setup
Understanding Job and Task Groups
Demo
Quick Questions and Answers round
5. What is Nomad ?
Nomad is a workload orchestrator developed by HashiCorp, the company behind other popular tools
like Vagrant, Terraform and Vault.
It is designed to manage and deploy applications across an entire infrastructure which can include
multiple datacenters and regions.
HashiCorp Nomad is a modern, lightweight, workload scheduler.
Nomad is also known as orchestrating engine like Kubernetes.
HashiCorp Nomad makes it easy for any organization to easily deploy and manage its applications. It
can not only orchestrate containerized applications but also legacy applications using a single, unified
workflow.
Nomad can also run Docker, non-containerized, microservice, and batch applications.
7. Why use Nomad ?
Simplicity: Nomad is designed to be simple and easy to use. It has a straightforward setup process
and a user-friendly interface. This can make it easier to get started with and manage compared to more
complex orchestration systems.
Flexible Workload Support: Nomad supports a variety of workloads, including containerized
applications (using Docker), standalone applications, and even virtual machines. This flexibility can
make it a good fit for a wide range of use cases.
Scalability and Performance: Nomad is designed to be highly scalable and performant. It can handle
orchestrating thousands of deployments across multiple regions, making it suitable for large-scale,
high-load environments.
Multi-Region and Multi-Datacenter Support: Nomad supports running applications across multiple
datacenters and regions. This can help provide high availability and reduce latency, which can be
particularly important for global applications.
Integration with Other HashiCorp Tools: If you're already using other HashiCorp tools like Consul for
service discovery and networking, or Vault for secret management, Nomad can integrate with these
tools, providing a cohesive and powerful toolset.
Security: Nomad includes built-in mechanisms for secure operation, including Access Control Lists
(ACLs), Namespaces, and Sentinel policies. This can help ensure that your deployments are secure.
8. Why use Nomad ?
Resource Efficiency: Nomad's bin packing algorithm helps to efficiently utilize resources and reduce
costs.
Community and Support: HashiCorp has a strong community and provides good support for its tools.
This can be a big advantage when you need help or want to extend the tool's capabilities.
10. Features Nomad Kubernetes
Complexity and
Ease of Use
• Nomad is simpler to set up and use, with a single binary for
both clients and servers.
• Kubernetes is more complex with a
steeper learning curve, but offers a
wider range of features.
Scope Nomad is primarily a task scheduler and deployer. It integrates
with other tools for additional features.
Kubernetes is a comprehensive platform
that includes service discovery, scaling,
load balancing, and more.
Workload Support • Nomad supports containerized and non-containerized
applications, as well as virtual machines.
• Kubernetes primarily supports
containerized applications.
Multi-Datacenter
and Multi-Region
Support
Nomad natively supports running applications across multiple
datacenters and regions.
Kubernetes supports multi-datacenter and
multi-region deployments, but it requires
additional configuration.
Scalability • Both are designed to be highly scalable, but Nomad's
simplicity can make it easier to manage at scale.
• Kubernetes is highly scalable and
widely used in large-scale
environments.
Community and
Ecosystem
• Nomad has a smaller community but integrates well with
other HashiCorp tools.
• Kubernetes has a larger community and
a wide range of extensions and
integrations available.
11. Why should we use Nomad ?
If you need a simple , focused tool for scheduling and deploying tasks or if you have a lot of non-
containerized workloads, Night might be the better choice.
If you need a comprehensive solution that includes service discovery, load balancing and more
and you're willing to deal with the complexity, Kubernetes might be the better choice.
15. Prerequisites
Operating System: Nomad is a cross-platform tool. It supports Linux, Windows, and macOS.
However, for production use, a Linux-based system is typically recommended.
Hardware: The hardware requirements for Nomad depend on the workloads that you plan to run.
However, at a minimum, you should have a machine with at least 1 GB of RAM and a 1-core
processor. For production use, a machine with more resources would be needed.
Software:
You need to have a modern version of the Go programming language installed if you plan to build
Nomad from source.
If you plan to run Docker-based workloads, you need to have Docker installed.
If you plan to use Nomad's web UI, you need to have a modern web browser.
Network: Each Nomad agent (both servers and clients) needs to have network connectivity with
each other. This is typically done over TCP/IP. The specific ports that need to be open depend on
your configuration.
Knowledge: While not a strict prerequisite, it's helpful to have some knowledge of system
administration and networking concepts. Familiarity with the basics of containerization (especially
Docker) can also be helpful if you plan to run containerized workloads.
17. Nomad Architecture
Nomad follows a client-server architecture where the servers are responsible for managing the
cluster and scheduling jobs, while the clients are responsible for running the jobs. Here's an
overview of Nomad's architecture:
Server Nodes: The server nodes are the brains of the cluster. They accept job submissions,
determine which clients should run the jobs, and monitor the cluster for failures. Servers use the
Raft consensus protocol to handle leader election and state replication. A Nomad cluster typically
has an odd number of server nodes (such as 3 or 5) to tolerate failures and maintain a quorum.
Client Nodes: The client nodes are the workers of the cluster. They run the tasks that make up
the jobs. Each client node runs a Nomad agent, which registers the node with the servers, reports
on the node's status, and handles task execution.
Jobs and Tasks: In Nomad, a job is a declarative specification of tasks to run. Each task belongs
to a task group, which is a set of tasks that are scheduled together. Tasks can be anything from
Docker containers to standalone applications.
Schedulers: Nomad uses pluggable scheduling algorithms to determine how to allocate
resources to tasks. It includes several built-in schedulers for different use cases, and you can also
add your own.
18. Nomad Architecture
Service Discovery and Load Balancing: Nomad integrates with the HashiCorp's Consul for
service discovery and load balancing. This allows tasks to find each other and distribute traffic.
Secret Management: Nomad integrates with the HashiCorp's Vault for secret management. This
allows tasks to securely access secrets like APIs keys and passwords.
Web UI: Nomad includes a Web UI that provides a visual way to interact with the cluster. You
can use it to view the status of jobs and task, submit new jobs and more.