任务是一种单向机制它单调地通过一系列状态进行:分配,准备,操作等等如果任务失败,协调器将删除该任务及其容器,然后根据服务指定的所需状态创建一个新任务来替换它
docker群模式的底层逻辑是一个通用的调度器和编排器服务和任务抽象本身不知道它们实现的容器假设您可以实现其他类型的任务,例如虚拟机任务或非容器化流程任务调度器和协调器不知道任务的类型但是,docker的当前版本只支持容器任务
下图显示了群模式如何接受服务创建请求并将任务调度到工作节点。
待定服务
服务可以配置为当前群集中的任何节点都不能运行其任务在这种情况下,服务保持挂起状态以下是一些服务可能保持挂起状态的示例
注意:如果您的唯一目的是阻止该服务的部署,请将该服务扩展到0,而不是尝试将其挂起。
如果所有节点都暂停或耗尽,并且您创建了一个服务,则该服务将被挂起,直到该节点变得可用事实上,第一个可用的节点可以获得所有任务,所以这在生产环境中不是一件好事
您可以为服务保留特定数量的内存如果群集中没有节点具有所需的内存量,服务将保持挂起状态,直到有节点可以运行其任务如果您指定一个非常大的值,例如500 gb,任务将总是被挂起,除非您真的有一个节点可以满足它
您可以对服务施加放置约束,但在给定时间内您可能无法遵守这些约束。
此行为表明任务的要求和配置与集群的当前状态没有密切关系作为swarm的管理员,您声明您的swarm的所需状态,管理器与swarm中的节点一起创建该状态你不需要在swarm上微观管理任务