Swarm工作原理¶
基本概念¶
Swarm集群中的每一个Docker主机都称为"节点(node)",其又分:
Manager节点:管理节点。负责集群的管理和控制,Swarm集群允许多个Manager节点,多个Manager节点中仅允许唯一一个LeaderWorker节点:工作节点。负责接收来自Manager节点的任务分配,并执行相应的容器操作- 节点的多重身份:
Swarm节点既可是Manager,也可是Worker.
Raft协议 用于选举Manager节点的Leader(至少2个Manager节点参与选举),并确保Manager节点之间的状态信息同步
工作流程¶
- 集群初始化:通过
docker swarm init初始化集群,执行该命令的Docker主机自动成为Manager节点(Leader) - 节点加入:将其他Docker主机加入集群。Manager节点会为新节点分配角色和相应的任务
- 服务定义:用户通过定义服务来描述容器化应用程序,定义完成后交给Manager节点去分配
- 任务是Swarm中的最小调度单位,表现为一个单一的容器
- 服务是一组任务的集合且定义了任务属性
- 调度策略:Leader节点根据调度策略(
spread-默认,binpack和random),在集群中选择合的节点来部署容器实例 - 容器编排:Leader节点负责对容器进行编排等操作和管理,包括创建、启动、停止、重启容器实例等操作