Nomad
Scheduler Operator HTTP API
The /operator/scheduler endpoints provide tools for management of Nomad server scheduler settings.
Read Scheduler Configuration
This endpoint retrieves the latest Scheduler configuration. More options may be added in the future.
| Method | Path | Produces |
|---|---|---|
GET | /v1/operator/scheduler/configuration | application/json |
The table below shows this endpoint's support for blocking queries and required ACLs.
| Blocking Queries | ACL Required |
|---|---|
NO | operator:read |
Sample Request
$ curl \
https://localhost:4646/v1/operator/scheduler/configuration
Sample Response
{
"Index": 5,
"KnownLeader": true,
"LastContact": 0,
"NextToken": "",
"SchedulerConfig": {
"CreateIndex": 5,
"MemoryOversubscriptionEnabled": false,
"ModifyIndex": 5,
"PauseEvalBroker": false,
"PreemptionConfig": {
"BatchSchedulerEnabled": false,
"ServiceSchedulerEnabled": false,
"SysBatchSchedulerEnabled": false,
"SystemSchedulerEnabled": true
},
"RejectJobRegistration": false,
"SchedulerAlgorithm": "binpack"
}
}
Field Reference
Index(int)- TheIndexvalue is the Raft index corresponding to this configuration.SchedulerConfig(SchedulerConfig)- The returnedSchedulerConfigobject has configuration settings mentioned below.SchedulerAlgorithm(string: "binpack")- Specifies whether scheduler binpacks or spreads allocations on available nodes. Node pools may set their ownSchedulerAlgorithmvalue that takes precedence over this global value.MemoryOversubscriptionEnabled(bool: false)- Whentrue, tasks may exceed their reserved memory limit, if the client has excess memory capacity. Tasks must specifymemory_maxto take advantage of memory oversubscription. Node pools may set their ownMemoryOversubscriptionEnabledvalue that takes precedence over this global value.RejectJobRegistration(bool: false)- Whentrue, the server will return permission denied errors for job registration, job dispatch, and job scale APIs, unless the ACL token for the request is a management token. If ACLs are disabled, no user will be able to register jobs. This allows operators to shed load from automated processes during incident response.PauseEvalBroker(bool: false)- When set totrue, the eval broker which usually runs on the leader will be disabled. This will prevent the scheduler workers from receiving new work.PreemptionConfig(PreemptionConfig)- Options to enable preemption for various schedulers.SystemSchedulerEnabled(bool: true)- Specifies whether preemption for system jobs is enabled. Note that this defaults to true.SysBatchSchedulerEnabled(bool: false)- Specifies whether preemption for system batch jobs is enabled. Note that this defaults to false.BatchSchedulerEnabled(bool: false)- Specifies whether preemption for batch jobs is enabled. Note that this defaults to false and must be explicitly enabled.ServiceSchedulerEnabled(bool: false)- Specifies whether preemption for service jobs is enabled. Note that this defaults to false and must be explicitly enabled.
CreateIndex- The Raft index at which the config was created.ModifyIndex- The Raft index at which the config was modified.
Update Scheduler Configuration
This endpoint updates the scheduler configuration of the cluster.
| Method | Path | Produces |
|---|---|---|
PUT, POST | /v1/operator/scheduler/configuration | application/json |
The table below shows this endpoint's support for blocking queries and required ACLs.
| Blocking Queries | ACL Required |
|---|---|
NO | operator:write |
Bootstrap Configuration Element
The default_scheduler_config attribute of the server block will provide a
starting value for this configuration. Once bootstrapped, the value in the
server state is authoritative.
Parameters
cas(int: 0)- Specifies to use a Check-And-Set operation. The update will only happen if the given index matches theModifyIndexof the configuration at the time of writing.
Sample Payload
{
"SchedulerAlgorithm": "spread",
"MemoryOversubscriptionEnabled": false,
"RejectJobRegistration": false,
"PauseEvalBroker": false,
"PreemptionConfig": {
"SystemSchedulerEnabled": true,
"SysBatchSchedulerEnabled": false,
"BatchSchedulerEnabled": false,
"ServiceSchedulerEnabled": true
}
}
SchedulerAlgorithm(string: "binpack")- Specifies whether scheduler binpacks or spreads allocations on available nodes. Possible values are"binpack"and"spread". This value may also be set per node pool.MemoryOversubscriptionEnabled(bool: false)- Whentrue, tasks may exceed their reserved memory limit, if the client has excess memory capacity. Tasks must specifymemory_maxto take advantage of memory oversubscription. This value may also be set per node pool.RejectJobRegistration(bool: false)- Whentrue, the server will return permission denied errors for job registration, job dispatch, and job scale APIs, unless the ACL token for the request is a management token. If ACLs are disabled, no user will be able to register jobs. This allows operators to shed load from automated processes during incident response.PauseEvalBroker(bool: false)- When set totrue, the eval broker which usually runs on the leader will be disabled. This will prevent the scheduler workers from receiving new work.PreemptionConfig(PreemptionConfig)- Options to enable preemption for various schedulers.SystemSchedulerEnabled(bool: true)- Specifies whether preemption for system jobs is enabled. Note that if this is set to true, then system jobs can preempt any other jobs.SysBatchSchedulerEnabled(bool: false)1.2 - Specifies whether preemption for system batch jobs is enabled. Note that if this is set to true, then system batch jobs can preempt any other jobs.BatchSchedulerEnabled(bool: false)- Specifies whether preemption for batch jobs is enabled. Note that if this is set to true, then batch jobs can preempt any other jobs.ServiceSchedulerEnabled(bool: false)- Specifies whether preemption for service jobs is enabled. Note that if this is set to true, then service jobs can preempt any other jobs.
Sample Response
{
"Updated": false,
"Index": 15
}