关于 Docker task 的 slot
试着从源码看 Docker task slot 分布的情况
This post was to be done.
1 | docker swarmkit 中, 对服务(service)进行 scale 的时候, task 的分配策略, '几乎'是随机的. |
docker task slot
docker service ps <service-id>|<service-name>
1
pass
specifiedSlots > numSlots
service should be scaled up.
- 从 1 开始找 slotNum, runningSlots 中没有该 slot 的
specifiedSlots < numSlots
service should be scaled down.
- slotsSlice 对 State 排序, [Slot[{State: running}, {}, …], Slot[{State: running}, …], Slot[{State: !running}, {}, …]]
- slotsWithIndices = [slotWithIndex{index: 该node上有该task的数量, slot: slot}, …], 对 slotsWithIndices 用 index 排序.
- 删除 slotsWithIndices[specifiedSlots:] 的 task
scale down 的时候, 首先 slot 内有多个 Task 会被优先删除, 其次 slot 所在 node 有更多的 slot 的 slot 会被优先删除
原文作者: Pike.SZ.fish
原文链接: https://page.pikeszfish.me/2017/03/24/about-docker-task-slot/
许可协议: 本文采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可