节点的工作原理

Swarm 模式允许您创建一个或多个 Docker Engine 组成的集群,称为 swarm。一个 swarm 由一个或多个节点组成:运行 Docker Engine 的物理机或虚拟机。

节点有两种类型:管理节点工作节点

Swarm mode cluster

如果您还没有阅读,请先阅读 Swarm 模式概述关键概念

管理节点

管理节点处理集群管理任务

通过使用 Raft 实现,管理节点维护整个 swarm 及其上运行的所有服务的一致内部状态。出于测试目的,可以运行只有一个管理节点的 swarm。如果单管理节点 swarm 中的管理节点发生故障,您的服务会继续运行,但您需要创建一个新集群才能恢复。

为了利用 Swarm 模式的容错特性,我们建议您根据组织的高可用性要求,部署奇数个节点。当您有多个管理节点时,您可以在管理节点发生故障时恢复而无需停机。

  • 一个三管理节点的 swarm 最多可以容忍一个管理节点的丢失。

  • 一个五管理节点的 swarm 最多可以容忍同时丢失两个管理节点。

  • 集群中奇数个 N 管理节点最多可以容忍 (N-1)/2 个管理节点的丢失。Docker 建议一个 swarm 最多有七个管理节点。

    重要提示

    增加更多管理节点并不意味着可伸缩性或性能的提升。通常情况下,情况恰恰相反。

工作节点

工作节点也是 Docker Engine 的实例,其唯一目的是执行容器。工作节点不参与 Raft 分布式状态,不做出调度决策,也不提供 swarm 模式的 HTTP API。

您可以创建一个单管理节点的 swarm,但不能在没有至少一个管理节点的情况下拥有工作节点。默认情况下,所有管理节点也都是工作节点。在单管理节点集群中,您可以运行像 docker service create 这样的命令,调度器会将所有任务放在本地引擎上。

要防止调度器在多节点 swarm 中将任务放在管理节点上,请将该管理节点的可用性设置为 Drain。调度器会平稳地停止处于 Drain 模式的节点上的任务,并将这些任务调度到 Active 节点上。调度器不会将新任务分配给可用性为 Drain 的节点。

请参阅 docker node update 命令行参考,了解如何更改节点可用性。

更改角色

您可以通过运行 docker node promote 将工作节点提升为管理节点。例如,当您将一个管理节点下线进行维护时,可能需要提升一个工作节点。请参阅节点提升

您也可以将管理节点降级为工作节点。请参阅节点降级

了解更多

  • 阅读有关 Swarm 模式服务如何工作的内容。
  • 了解 PKI 在 Swarm 模式中如何工作。
© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.