跳到主要内容

Docker Swarm节点管理

介绍

Docker Swarm 是 Docker 的原生集群管理工具,允许你将多个 Docker 主机组成一个虚拟的 Docker 引擎。在 Swarm 中,节点是构成集群的基本单元。节点可以是管理节点(Manager Node)或工作节点(Worker Node)。管理节点负责集群的管理和调度任务,而工作节点则负责运行容器。

本文将详细介绍如何在 Docker Swarm 中管理节点,包括如何添加、移除和监控节点。

Docker Swarm 节点类型

在 Docker Swarm 中,节点分为两种类型:

  1. 管理节点(Manager Node):负责集群的管理任务,如调度服务、维护集群状态等。管理节点还可以选举出一个领导者(Leader)来协调集群操作。
  2. 工作节点(Worker Node):负责运行由管理节点分配的任务(即容器)。
提示

一个 Swarm 集群可以有多个管理节点,但只有一个领导者。其他管理节点作为备用,以防领导者失效。

添加节点到 Swarm 集群

要将一个 Docker 主机加入 Swarm 集群,首先需要在管理节点上获取加入令牌(Join Token)。加入令牌分为两种:一种用于管理节点,另一种用于工作节点。

获取加入令牌

在管理节点上运行以下命令来获取加入令牌:

bash
docker swarm join-token worker

输出示例:

bash
To add a worker to this swarm, run the following command:

docker swarm join --token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c 192.168.99.100:2377

加入集群

在要加入集群的节点上运行上述命令即可将其加入 Swarm 集群:

bash
docker swarm join --token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c 192.168.99.100:2377

输出示例:

bash
This node joined a swarm as a worker.
备注

如果你想将节点加入为管理节点,请使用 docker swarm join-token manager 获取管理节点的加入令牌。

查看集群中的节点

要查看当前 Swarm 集群中的所有节点,可以在管理节点上运行以下命令:

bash
docker node ls

输出示例:

bash
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
x1y2z3a4b5c6d7e8f9g0h1i2j3k node1 Ready Active Leader 20.10.7
a1b2c3d4e5f6g7h8i9j0k1l2m3n node2 Ready Active 20.10.7

移除节点

如果你需要从 Swarm 集群中移除一个节点,可以在管理节点上运行以下命令:

bash
docker node rm <NODE_ID>

其中 <NODE_ID> 是你要移除的节点的 ID。

警告

移除节点前,请确保该节点上没有运行任何重要的服务或任务。

节点降级与升级

你可以将一个管理节点降级为工作节点,或者将一个工作节点升级为管理节点。

降级管理节点

要将一个管理节点降级为工作节点,运行以下命令:

bash
docker node demote <NODE_ID>

升级工作节点

要将一个工作节点升级为管理节点,运行以下命令:

bash
docker node promote <NODE_ID>

监控节点状态

Docker Swarm 提供了多种方式来监控节点的状态。你可以使用 docker node inspect 命令来查看节点的详细信息:

bash
docker node inspect <NODE_ID> --pretty

输出示例:

bash
ID:                     x1y2z3a4b5c6d7e8f9g0h1i2j3k
Hostname: node1
Status:
State: Ready
Availability: Active
Manager Status:
Address: 192.168.99.100:2377
Raft Status: Reachable
Leader: Yes

实际案例

假设你正在管理一个由 3 个节点组成的 Swarm 集群,其中 1 个是管理节点,2 个是工作节点。现在你需要添加第 4 个节点作为工作节点,并监控其状态。

  1. 在管理节点上获取工作节点的加入令牌:

    bash
    docker swarm join-token worker
  2. 在第 4 个节点上运行加入命令:

    bash
    docker swarm join --token <TOKEN> <MANAGER_IP>:2377
  3. 在管理节点上查看所有节点:

    bash
    docker node ls
  4. 使用 docker node inspect 命令查看新加入节点的详细信息。

总结

在 Docker Swarm 中,节点管理是集群运维的核心任务之一。通过本文,你学会了如何添加、移除、升级、降级和监控 Swarm 集群中的节点。这些操作对于维护一个健康、高效的 Docker Swarm 集群至关重要。

附加资源

练习

  1. 创建一个由 3 个节点组成的 Swarm 集群,其中 1 个管理节点和 2 个工作节点。
  2. 尝试将一个工作节点升级为管理节点,并观察集群的变化。
  3. 使用 docker node inspect 命令查看每个节点的详细信息。

通过完成这些练习,你将更深入地理解 Docker Swarm 节点管理的实际操作。