背景:
我们有一套swarm的集群,经常会发生 docker 漂移,为了了解docker为什么会漂移,具体的调度机制,走了一遍源码
分析如下:
我们创建服务的时候create service ,到了环境上实际执行任务的是具体的task
为什么会漂移?
刚开始service能创建成功,能调度到现有节点上,那该节点调度前的资源是满足条件的 ,swarm在调度的时候会创建一个slice ,而且会对所有的node节点 排序(按照栈的数据结构理解),每次调度都会将栈顶数据出栈,肯定是最优的。
在这里插入图片描述
当出现容器漂移,肯定是容器死掉了,容器死掉是由于resource检查不通过了,resource检查不通过是由于 已部署的节点有容器可能瞬间占用宿主机资源太高引起,而这一切可能是没有限制 容器 资源的原因。
当前节点有容器死掉 ,重新引发调度, 该node 不再满足 参与调度的条件,重新出栈 新node这会儿执行两个步骤 ,删除 原有node上的task。 新出栈node 创建 task 调度到新节点。
Swarm : 调度模式浅析
最新推荐文章于 2024-01-11 13:17:34 发布