Let's take a look at Nomad CLI:

$ nomad --help
Available commands are:
   agent                 Runs a Nomad agent
   agent-info            Display status information about the local agent
   alloc-status          Display allocation status information and metadata
   client-config         View or modify client configuration details
   deployment            Interact with deployments
   eval-status           Display evaluation status and placement failure reasons
   fs                    Inspect the contents of an allocation directory
   init                  Create an example job file
   inspect               Inspect a submitted job
   job                   Interact with jobs
   keygen                Generates a new encryption key
   keyring               Manages gossip layer encryption keys
   logs                  Streams the logs of a task.
   node-drain            Toggle drain mode on a given node
   node-status           Display status information about nodes
   operator              Provides cluster-level tools for Nomad operators
   plan                  Dry-run a job update to determine its effects
   run                   Run a new job or update an existing job
   server-force-leave    Force a server into the 'left' state
   server-join           Join server nodes together
   server-members        Display a list of known servers and their status
   status                Display the status output for a resource
   stop                  Stop a running job
   validate              Checks if a given job specification is valid
   version               Prints the Nomad version

Now you are probably not familiar with Nomad concepts, so let's run through them:

There is a job, when job is submitted it creates a deployment. Whenever you update the job configuration and submit it to cluster, it starts new deployment.

Deployment creates a group of allocations - allocation is an instance of the app you are deploying. The deployment may be a group of N allocations.

And evaluation is the process of allocating apps for a certain deployment.

Now, back to the interface.

  • Why there is an nomad alloc-status and not nomad alloc status?
  • nomad node-drain and nomad node-status and not nomad node [status,drain,..]?
  • Why nomad server-members and not nomad server status?
  • plan and run are for jobs, why they are on the top level?
  • and fs and logs are for allocations

And now compare with the kubectl's:

kubectl [command] [TYPE] [NAME] [flags]