Service的分配原則
- 預設分散至多個nodes上
- 使用率較低的node優先配置
- 使用者可自行定義此分配模式
Service分配的3種方式
- Service Constraints (服务约束)
参考:https://www.cnblogs.com/caoweixiong/p/12382282.html
-
Service Modes(服务模式)
默认是replicated(副本),例如replica=10,docker swarm會執行10個container並盡可能分散到各個node上,但不能確保每個node都會配置到該task
Global(全局)是replica的相反,能確保每个节点都有一个任务
Global適用於host agents(monitoring, backup, proxy…)
目前僅限於
service create
時設定
docker service create --mode=global portiner
-
Placement Preferences(安置偏好)
- 目前只有spread這個策略
- spread tasks among all values of a Label
- 適用availablility zones, datacenters, racks, subnets > things where you want to spread workload out amongst various type of infrastructure
- 可用於
service create/update
- 目前只有spread這個策略
示例:Lable all nodes with availability zone
docker node update --label-add=azone=1 node1
docker node update --label-add=azone=2 node2
docker node update --label-add=azone=3 node3
根據這個Label加以分散:
docker service create --placement-pref spread=node.labels.azone --replicas 3 masl