©
本文档使用
php.cn手册 发布
本主题介绍Docker Engine 1.12的集群管理和编排功能特有的一些概念。
嵌入在Docker Engine中的集群管理和编排功能是使用SwarmKit构建的。参与群集的Docker引擎以群集模式运行。您可以通过初始化群集或加入现有群集来为引擎启用群集模式。
一个群是Docker引擎或集群节点,在这里部署服务。Docker Engine CLI和API包括管理群集节点(例如,添加或移除节点)以及在群集中部署和编排服务的命令。
当您不使用群集模式运行Docker时,您将执行容器命令。当您在群集模式下运行Docker时,可以编排服务。您可以在同一个Docker实例上运行swarm服务和独立容器。
节点是Docker引擎参与群的一个实例。您也可以将其视为Docker节点。您可以在单台物理计算机或云服务器上运行一个或多个节点,但生产群部署通常包括分布在多台物理机和云计算机上的Docker节点。
要将您的应用程序部署到群集,您需要向管理器节点提交服务定义。管理器节点将称为任务的工作单元分派给工作节点。
管理器节点还执行维护群体所需状态所需的编排和群集管理功能。管理器节点选择一位领导者来执行编排任务。
工作者节点接收并执行从管理器节点分派的任务。默认情况下,管理器节点也可以将服务作为工作节点运行,但您可以将它们配置为独占运行管理器任务,并且是纯管理器节点。代理在每个工作节点上运行并报告分配给它的任务。工作节点通知管理节点其分配任务的当前状态,以便管理员可以维护每个工作人员的期望状态。
服务是任务的定义,经理或工作节点上执行。它是群体系统的中心结构,也是群体与用户互动的主要根源。
在创建服务时,您可以指定要使用哪个容器映像以及要在正在运行的容器中执行哪些命令。
在复制服务模型中,swarm管理器根据您在所需状态中设置的比例在节点之间分配特定数量的副本任务。
对于全局服务,群集为群集中每个可用节点上的服务运行一个任务。
任务携带多克尔容器和在容器内部运行的命令。它是群体的原子调度单位。管理器节点根据服务规模中设置的副本数量将任务分配给工作节点。一旦任务分配给节点,它就不能移动到另一个节点。它只能在分配的节点上运行或失败。
swarm管理器使用入口负载平衡来公开要在群集外部提供的服务。swarm manager可以自动为服务分配一个PublishedPort,或者您可以为该服务配置一个PublishedPort。您可以指定任何未使用的端口。如果您不指定端口,那么swarm管理器将为该服务分配一个30000-32767范围内的端口。
外部组件(如云负载平衡器)可以访问群集中任何节点的PublishedPort上的服务,而不管该节点当前是否正在运行该服务的任务。群路由中的所有节点都会连接到正在运行的任务实例。
Swarm模式有一个内部DNS组件,可自动为群集中的每个服务分配一个DNS条目。swarm管理器使用内部负载平衡根据服务的DNS名称在群集内的服务之间分配请求。