如何向 Docker 集群添加节点

DockerDockerBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

Docker Swarm 是一个用于大规模编排和管理 Docker 容器的强大工具。在本教程中,你将学习如何向现有的 Docker 集群添加新节点,从而扩展你的基础设施并提高应用程序的可用性和弹性。

了解 Docker Swarm 基础

什么是 Docker Swarm?

Docker Swarm 是一种原生的 Docker 容器集群化和调度解决方案。它使你能够将一组称为集群(swarm)的 Docker 引擎作为单个虚拟 Docker 引擎进行管理。这意味着你可以在多个主机上部署应用程序,确保高可用性和可扩展性。

Docker Swarm 中的关键概念

  • 节点(Node):节点是参与集群的 Docker 引擎实例。节点可以是管理器(manager)或工作器(worker)。
  • 管理器节点(Manager Node):管理器节点负责管理集群,包括调度任务、维护集群状态以及处理故障转移。
  • 工作器节点(Worker Node):工作器节点接收并执行从管理器节点分派的任务。
  • 服务(Service):服务定义了集群中一组任务(容器)的期望状态。服务是在集群中部署应用程序的构建块。
  • 任务(Task):任务是作为服务一部分的单个容器,并计划在节点上运行。

Docker Swarm 的优势

  • 简单性:Docker Swarm 内置于 Docker 引擎中,易于设置和管理。
  • 高可用性:集群提供自动负载平衡和故障转移,确保你的应用程序具有高可用性。
  • 可扩展性:你可以通过向集群添加或删除节点轻松扩展应用程序。
  • 安全性:Docker Swarm 使用内置的安全功能,如加密通信和基于角色的访问控制。

开始使用 Docker Swarm

要开始使用 Docker Swarm,你需要设置一个集群。这涉及初始化一个管理器节点,然后将工作器节点添加到集群中。让我们看一个使用 Ubuntu 22.04 的示例:

## 在管理器节点上初始化集群

## 将工作器节点加入集群

一旦你设置好了集群,就可以开始将应用程序作为服务进行部署。

向 Docker Swarm 集群添加节点

将工作器节点加入集群

要将工作器节点添加到你的 Docker Swarm 集群,可以使用 docker swarm join 命令。此命令需要加入令牌,该令牌可从管理器节点获取。

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

docker swarm join-token worker

这将输出一个可用于将工作器节点加入集群的命令,例如:

docker swarm join --token SWMTKN-1-49nj1cmql0jkz5s7riia...

现在,在工作器节点上,运行管理器节点提供的命令以加入集群。

将管理器节点加入集群

你还可以将管理器节点添加到你的 Docker Swarm 集群。这对于提高集群的容错能力和高可用性很有用。

要添加新的管理器节点,在新节点上运行以下命令:

docker swarm join --token SWMTKN-1-61ztec9roubhglb7xbc...

用于加入管理器节点的令牌可以使用以下命令从现有管理器节点获取:

docker swarm join-token manager

验证节点状态

将节点添加到集群后,可以使用 docker node ls 命令查看集群中所有节点的状态。这将显示每个节点的角色(管理器或工作器)及其当前状态。

docker node ls

这将输出一个包含集群中每个节点信息的表格。

从集群中移除节点

如果你需要从集群中移除节点,可以使用 docker node rm 命令。例如,要移除一个工作器节点:

docker node rm worker-node

要移除一个管理器节点,需要先将其降级为工作器节点,然后再移除它:

docker node demote manager-node
docker node rm manager-node

请记住仔细规划节点移除操作,因为这可能会影响集群的可用性和弹性。

管理和监控集群节点

监控集群节点

要监控 Docker Swarm 节点的健康状况和状态,你可以使用以下命令:

## 列出集群中的所有节点
docker node ls

## 检查特定节点
docker node inspect node-name

## 查看节点指标
docker node ps node-name

docker node ls 命令将为你提供集群中所有节点的概述,包括它们的角色(管理器或工作器)、状态和可用性。

docker node inspect 命令提供有关特定节点的详细信息,例如其 IP 地址、资源和标签。

docker node ps 命令允许你查看特定节点上正在运行的任务和容器。

管理集群节点

除了监控之外,你还可以使用各种命令来管理 Docker Swarm 集群中的节点:

## 将工作器节点提升为管理器
docker node promote worker-node

## 将管理器节点降级为工作器
docker node demote manager-node

## 更新节点标签
docker node update --label-add label=value node-name

## 排空节点(防止调度新任务)
docker node update --availability drain node-name

## 使节点再次可用
docker node update --availability active node-name

docker node promotedocker node demote 命令允许你在集群中更改节点的角色。

你可以使用 docker node update 命令在节点上添加、修改或删除标签。在调度任务时,标签可用于应用特定的约束或偏好。

docker node update --availability drain 命令允许你暂时使节点停止服务,防止在其上调度新任务。这对于在节点上执行维护或升级很有用。

备份和恢复集群状态

定期备份 Docker Swarm 集群的状态非常重要,以确保你可以从任何问题或故障中恢复。你可以使用 docker swarm init --force-new-cluster 命令使用备份数据初始化新的集群。

通过遵循这些管理和监控 Docker Swarm 节点的最佳实践,你可以确保容器化应用程序的可靠性和弹性。

总结

在本教程结束时,你将对如何向 Docker 集群添加节点有扎实的理解。你将能够扩展你的 Docker 基础设施,确保你的应用程序能够处理增加的工作负载,并为你的服务提供高可用性。当你继续构建和管理基于 Docker 的解决方案时,这些知识将非常宝贵。