How to use the command 'nomad' (with examples)
The ’nomad’ command is a distributed, highly available, datacenter-aware scheduler that allows users to manage jobs and nodes in a cluster. It provides a set of commands to interact with the Nomad scheduler and perform various operations such as checking the status of nodes, validating job files, planning and running jobs on the cluster, monitoring job status, following logs, and checking storage volume status.
Use case 1: Show the status of nodes in the cluster
Code:
nomad node status
Motivation:
Checking the status of nodes in the cluster helps administrators ensure that the cluster is functioning properly and that all nodes are available and healthy.
Explanation:
The command ’nomad node status’ is used to display the status of all the nodes in the Nomad cluster. It retrieves information about each node, including its ID, name, address, current state, and any associated errors.
Example output:
ID Name Address DC Version Status Drain
1 node-1 10.0.0.1 dc1 1.1.2 ready false
2 node-2 10.0.0.2 dc1 1.1.2 ready false
3 node-3 10.0.0.3 dc1 1.1.2 ready false
Use case 2: Validate a job file
Code:
nomad job validate path/to/file.nomad
Motivation:
Validating a job file before running it on the cluster helps prevent syntax and configuration errors that may cause issues during job execution.
Explanation:
The command ’nomad job validate’ is used to validate a job file and confirm that it is correctly formatted and valid according to the Nomad schema. It checks for any syntax errors or invalid configurations and provides feedback on any issues found.
Example output:
==> Job <job_name> submitted successfully with job ID <job_id>
Use case 3: Plan a job for execution on the cluster
Code:
nomad job plan path/to/file.nomad
Motivation:
Before running a job on the cluster, it is beneficial to preview the changes that will occur and verify that the planned execution will have the desired effect.
Explanation:
The command ’nomad job plan’ is used to create a plan for executing a job on the cluster. It analyzes the job file and provides an outline of the changes that will be made, such as the allocation of resources and the scheduling of tasks. The plan helps users understand how the job will be executed and identify any potential issues or conflicts.
Example output:
==> Planner setup: 15 nodes, 1000 max parallelism
==> Evaluating job configuration
==> Comparing job configuration to the current state
==> Planning job
+ ...
+ ...
+ ...
==> Summary
...
Use case 4: Run a job on the cluster
Code:
nomad job run path/to/file.nomad
Motivation:
Running a job on the cluster initiates the execution of the specified job file and enables users to utilize the resources and services provided by the cluster.
Explanation:
The command ’nomad job run’ is used to run a job on the cluster. It submits the job file to the scheduler, which then schedules and allocates resources for the job. The job is executed based on the defined configuration and tasks within the job file.
Example output:
==> Monitoring job: <job_name>
...
==> Monitoring allocation: <alloc_id>
...
Use case 5: Show the status of jobs currently running on the cluster
Code:
nomad job status
Motivation:
Monitoring the status of jobs running on the cluster allows users to keep track of their progress, identify any issues, and ensure that jobs are running as expected.
Explanation:
The command ’nomad job status’ is used to display the status of all jobs currently running on the cluster. It provides information about each job, including its ID, name, status, and any associated allocations.
Example output:
ID Name Type Priority Status ...
1 job-1 service 50 running ...
2 job-2 batch 100 pending ...
3 job-3 service 75 running ...
Use case 6: Show the detailed status information about a specific job
Code:
nomad job status job_name
Motivation:
Obtaining detailed status information about a specific job allows users to gain insight into its execution, resource allocation, and overall health.
Explanation:
The command ’nomad job status’ followed by a job name is used to display detailed status information about a specific job. It provides detailed information about the job, including its ID, name, status, associated allocations, resource usage, and task status.
Example output:
ID Name Priority Status Desired ... Task Status
1 job-1 50 running 5 ... running
...
2 job-1 50 running 5 ... running
Use case 7: Follow the logs of a specific allocation
Code:
nomad alloc logs alloc_id
Motivation:
Following the logs of a specific allocation allows users to monitor the execution and troubleshoot any issues or errors that may occur during job execution.
Explanation:
The command ’nomad alloc logs’ followed by an allocation ID is used to follow the logs of a specific allocation. It streams the logs of the allocation in real-time, allowing users to observe the output and any log messages from the associated tasks.
Example output:
[2019-12-01T12:00:00Z] Starting task 'task-1'
[2019-12-01T12:00:01Z] Task 'task-1' completed successfully
Use case 8: Show the status of storage volumes
Code:
nomad volume status
Motivation:
Checking the status of storage volumes provides administrators with insight into the available storage resources and allows them to ensure that volumes are functional and ready for use.
Explanation:
The command ’nomad volume status’ is used to display the status of storage volumes in the Nomad cluster. It retrieves information about each volume, including its ID, name, status, capacity, and health.
Example output:
ID Name Size Type Status Health
1 volume-1 10GB disk healthy healthy
2 volume-2 20GB disk attached healthy
3 volume-3 5GB disk unattached unhealthy
Conclusion:
The ’nomad’ command provides a comprehensive set of operations to manage jobs and nodes in a Nomad cluster. By leveraging the various use cases of the command, users can effectively monitor, plan, run, and troubleshoot jobs on the cluster, ensuring that their applications and services are executed and maintained successfully.