推广 热搜: 京东  联通  iphone11  摄像头  企业存储  XSKY  京东智能采购  iPhone  网络安全  自动驾驶 

云计算核心技术Docker教程:Docker Swarm 任务和日程安排运行原理

   日期:2021-09-06     来源:TechWeb编译    作者:itcg    浏览:374    我要评论    
导读:任务是集群内调度的原子单元。当您通过创建或更新服务声明所需的服务状态时,编排器通过调度任务来实现所需的状态。

任务是集群内调度的原子单元。当您通过创建或更新服务声明所需的服务状态时,编排器通过调度任务来实现所需的状态。例如,您定义了一个服务,该服务指示协调器始终保持 HTTP 侦听器的三个实例运行。协调器通过创建三个任务来响应。每个任务都是一个槽,调度程序通过生成一个容器来填充它。容器是任务的实例化。如果 HTTP 侦听器任务随后未能通过其健康检查或崩溃,那么协调器会创建一个新的副本任务来生成新的容器。

任务是一种单向机制。它通过一系列状态单调前进:分配、准备、运行等。如果任务失败,协调器将删除任务及其容器,然后根据服务指定的所需状态创建一个新任务来替换它。

Docker swarm 模式的底层逻辑是一个通用的调度器和编排器。服务和任务抽象本身不知道它们实现的容器。假设您可以实现其他类型的任务,例如虚拟机任务或非容器化进程任务。调度器和协调器不知道任务的类型。但是,当前版本的 Docker 仅支持容器任务。

下图显示了 swarm 模式如何接受服务创建请求并将任务调度到工作节点。

TIM截图20210902174254

待定服务

服务可以以这样的方式配置,即当前群中的任何节点都不能运行其任务。在这种情况下,服务保持在状态pending。以下是一些服务何时可能保持在 state 中的示例pending。

注意:如果您的唯一目的是阻止部署服务,请将服务扩展到 0,而不是尝试以保留在pending.

如果所有节点都已暂停或耗尽,并且您创建了一个服务,则该服务将处于挂起状态,直到节点变为可用为止。实际上,第一个可用的节点会获得所有任务,因此在生产环境中这不是一件好事。

您可以为服务保留特定数量的内存。如果 swarm 中没有节点具有所需的内存量,则服务将保持挂起状态,直到有一个可以运行其任务的节点可用。如果您指定一个非常大的值,例如 500 GB,则任务将永远处于挂起状态,除非您确实有一个可以满足它的节点。

您可以对服务施加放置约束,并且可能无法在给定时间遵守这些约束。

此行为说明您的任务的要求和配置与群的当前状态没有紧密联系。作为 swarm 的管理员,您声明了您的 swarm 所需的状态,并且管理器与 swarm 中的节点一起创建该状态。您不需要对 swarm 上的任务进行微观管理。

 
反对 0举报 0 收藏 0 打赏 0评论 0
 
更多>同类资讯
0相关评论

头条阅读
推荐图文
相关资讯
网站首页  |  物流配送  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  RSS订阅  |  违规举报  |  京ICP备14047533号-2
Processed in 0.146 second(s), 11 queries, Memory 1.49 M