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)
- TheIndex
value is the Raft index corresponding to this configuration.SchedulerConfig
(SchedulerConfig)
- The returnedSchedulerConfig
object has configuration settings mentioned below.SchedulerAlgorithm
(string: "binpack")
- Specifies whether scheduler binpacks or spreads allocations on available nodes. Node pools may set their ownSchedulerAlgorithm
value 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_max
to take advantage of memory oversubscription. Node pools may set their ownMemoryOversubscriptionEnabled
value 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 theModifyIndex
of 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_max
to 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}