mirror of https://github.com/docker/docs.git
Address feedback about placement constraints and prefs (#5101)
This commit is contained in:
parent
cfc6020a0a
commit
6e2ebea106
|
@ -501,7 +501,15 @@ placement of services on different nodes.
|
||||||
limitations into account.
|
limitations into account.
|
||||||
|
|
||||||
Unlike constraints, placement preferences are best-effort, and a service will
|
Unlike constraints, placement preferences are best-effort, and a service will
|
||||||
not fail to deploy if no nodes can satisfy the preference.
|
not fail to deploy if no nodes can satisfy the preference. If you specify a
|
||||||
|
placement preference for a service, nodes that match that preference are
|
||||||
|
ranked higher when the swarm managers decide which nodes should run the
|
||||||
|
service tasks. Other factors, such as high availability of the service,
|
||||||
|
will also factor into which nodes are scheduled to run service tasks. For
|
||||||
|
example, if you have N nodes with the rack label (and then some others), and
|
||||||
|
your service is configured to run N+1 replicas, the +1 will be scheduled on a
|
||||||
|
node that doesn't already have the service on it if there is one, regardless
|
||||||
|
of whether that node has the `rack` label or not.
|
||||||
|
|
||||||
|
|
||||||
#### Replicated or global services
|
#### Replicated or global services
|
||||||
|
@ -509,7 +517,9 @@ placement of services on different nodes.
|
||||||
Swarm mode has two types of services: replicated and global. For replicated
|
Swarm mode has two types of services: replicated and global. For replicated
|
||||||
services, you specify the number of replica tasks for the swarm manager to
|
services, you specify the number of replica tasks for the swarm manager to
|
||||||
schedule onto available nodes. For global services, the scheduler places one
|
schedule onto available nodes. For global services, the scheduler places one
|
||||||
task on each available node.
|
task on each available node that meets the service's
|
||||||
|
[placement constraints](#placement-constraints) and
|
||||||
|
[resource requirements](#reserve-cpu-or-memory-for-a-service).
|
||||||
|
|
||||||
You control the type of service using the `--mode` flag. If you don't specify a
|
You control the type of service using the `--mode` flag. If you don't specify a
|
||||||
mode, the service defaults to `replicated`. For replicated services, you specify
|
mode, the service defaults to `replicated`. For replicated services, you specify
|
||||||
|
@ -568,8 +578,11 @@ the following example, the service only runs on nodes with the
|
||||||
[label](engine/swarm/manage-nodes.md#add-or-remove-label-metadata)
|
[label](engine/swarm/manage-nodes.md#add-or-remove-label-metadata)
|
||||||
`region` set to `east`. If no appropriately-labelled nodes are available,
|
`region` set to `east`. If no appropriately-labelled nodes are available,
|
||||||
deployment will fail. The `--constraint` flag uses an equality operator
|
deployment will fail. The `--constraint` flag uses an equality operator
|
||||||
(`==` or `!=`). It is possible that all services will run on the same node, or
|
(`==` or `!=`). For replicated services, it is possible that all services will
|
||||||
each node will only run one replica, or that some nodes won't run any replicas.
|
run on the same node, or each node will only run one replica, or that some nodes
|
||||||
|
won't run any replicas. For global services, the service will run on every node
|
||||||
|
that meets the placement constraint and any
|
||||||
|
[resource requirements](#reserve-cpu-or-memory-for-a-service).
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ docker service create \
|
$ docker service create \
|
||||||
|
@ -584,12 +597,12 @@ file.
|
||||||
|
|
||||||
If you specify multiple placement constraints, the service will only deploy onto
|
If you specify multiple placement constraints, the service will only deploy onto
|
||||||
nodes where they are all met. The following example limits the service to run on
|
nodes where they are all met. The following example limits the service to run on
|
||||||
nodes with `region` set to `east` and where `type` is not set to `devel`:
|
all nodes where `region` is set to `east` and `type` is not set to `devel`:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ docker service create \
|
$ docker service create \
|
||||||
--name my-nginx \
|
--name my-nginx \
|
||||||
--replicas 5 \
|
--global \
|
||||||
--constraint region==east \
|
--constraint region==east \
|
||||||
--constraint type!=devel \
|
--constraint type!=devel \
|
||||||
nginx
|
nginx
|
||||||
|
@ -615,6 +628,8 @@ Placement preferences are not strictly enforced. If no node has the label
|
||||||
you specify in your preference, the service will be deployed as though the
|
you specify in your preference, the service will be deployed as though the
|
||||||
preference were not set.
|
preference were not set.
|
||||||
|
|
||||||
|
> Placement preferences are ignored for global services.
|
||||||
|
|
||||||
The following example sets a preference to spread the deployment across nodes
|
The following example sets a preference to spread the deployment across nodes
|
||||||
based on the value of the `datacenter` label. If some nodes have
|
based on the value of the `datacenter` label. If some nodes have
|
||||||
`datacenter=us-east` and others have `datacenter=us-west`, the service will be
|
`datacenter=us-east` and others have `datacenter=us-west`, the service will be
|
||||||
|
|
Loading…
Reference in New Issue