如何使用 docker node update 命令管理 Swarm 节点

DockerDockerBeginner
立即练习

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

简介

在这个实验中,你将学习如何使用 docker node update 命令管理 Docker Swarm 节点。你将探索该命令的各种功能,包括更新节点可用性以控制任务分配、添加和删除标签以对节点进行分类,从而实现任务调度约束,以及更改节点在集群中的角色。

通过实践练习,你将练习暂停节点以防止分配新任务、为节点添加单个和多个标签、删除现有标签,以及将工作节点提升为管理节点。这些步骤将让你获得管理 Docker Swarm 集群中节点状态和属性的实践经验。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/exec("Execute Command in Container") docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") subgraph Lab Skills docker/ls -.-> lab-555186{{"如何使用 docker node update 命令管理 Swarm 节点"}} docker/ps -.-> lab-555186{{"如何使用 docker node update 命令管理 Swarm 节点"}} docker/exec -.-> lab-555186{{"如何使用 docker node update 命令管理 Swarm 节点"}} docker/inspect -.-> lab-555186{{"如何使用 docker node update 命令管理 Swarm 节点"}} end

更新节点可用性以暂停

在这一步中,你将学习如何更新 Docker Swarm 中节点的可用性。节点的可用性决定了该节点是否可以接收新任务。可能的可用性状态有 activepausedrain

  • active:节点可以接收新任务。这是默认状态。
  • pause:节点将不再接收新任务,但现有任务将继续运行。
  • drain:节点将不再接收新任务,并且现有任务将被停止并重新调度到其他节点上。

你将把当前节点的可用性更改为 pause。首先,你需要找到当前节点的 ID。你可以使用 docker node ls 命令列出 Swarm 中的节点。

docker node ls

输出将显示节点列表,包括它们的 ID、主机名、状态、可用性和管理状态。确定你当前正在操作的节点的 ID。

现在,使用带有 --availability pause 标志和节点 ID 的 docker node update 命令来更改节点的可用性。将 <node_id> 替换为你节点的实际 ID。

docker node update --availability pause <node_id>

执行该命令后,你可以再次运行 docker node ls 来验证更改。你节点的可用性现在应该是 pause

docker node ls

为节点添加标签

在这一步中,你将学习如何为 Docker Swarm 中的节点添加标签。标签是可以附加到节点上的键值对。它们有助于根据特定标准组织和选择节点,可用于任务分配约束。

你将为当前节点添加一个名为 env、值为 dev 的标签。首先,确保你有上一步中获取的节点 ID。如果没有,你可以再次使用 docker node ls 命令获取。

docker node ls

现在,使用带有 --label-add 标志、格式为 key=value 的标签以及节点 ID 的 docker node update 命令。将 <node_id> 替换为你节点的实际 ID。

docker node update --label-add env=dev <node_id>

添加标签后,你可以检查节点以查看添加的标签。使用 docker node inspect 命令,后跟节点 ID。

docker node inspect <node_id>

在输出中查找 Labels 部分。你应该会看到 env: dev 标签列在那里。

为节点添加多个标签

在这一步中,你将学习如何同时为节点添加多个标签。你可以通过为每个要添加的标签重复使用 --label-add 标志来添加多个标签。

你将为当前节点添加两个新标签:tier 标签的值为 frontendregion 标签的值为 us-east。确保你有上一步中获取的节点 ID。

使用带有多个 --label-add 标志和节点 ID 的 docker node update 命令。将 <node_id> 替换为你节点的实际 ID。

docker node update --label-add tier=frontend --label-add region=us-east <node_id>

添加标签后,再次检查节点,以验证所有标签是否已正确添加。

docker node inspect <node_id>

在输出的 Labels 部分,你现在应该能看到 env: devtier: frontendregion: us-east

从节点移除标签

在这一步中,你将学习如何从 Docker Swarm 中的节点移除标签。你可以使用 docker node update 命令,搭配 --label-rm 标志,后跟标签键来移除标签。

你将移除上一步中添加的 region 标签。确保你有节点 ID。

使用带有 --label-rm 标志和标签键(region)的 docker node update 命令,后跟节点 ID。将 <node_id> 替换为你节点的实际 ID。

docker node update --label-rm region <node_id>

移除标签后,再次检查节点,以验证标签是否已被移除。

docker node inspect <node_id>

在输出的 Labels 部分,你现在应该能看到 env: devtier: frontend,但 region: us-east 标签应该已不存在。

将节点角色更新为管理器

在这一步中,你将学习如何更新 Docker Swarm 中节点的角色。节点可以有两种角色之一:manager(管理器)或 worker(工作节点)。管理器节点处理集群管理任务,而工作节点运行服务。

你将把当前节点提升为管理器角色。确保你有节点 ID。

使用带有 --role manager 标志和节点 ID 的 docker node update 命令。将 <node_id> 替换为你节点的实际 ID。

docker node update --role manager <node_id>

更新角色后,通过列出节点来验证更改。

docker node ls

输出现在应该显示你的节点角色为 Manager

总结

在这个实验中,你学习了如何使用 docker node update 命令管理 Docker Swarm 节点。你涵盖了几个关键操作,包括将节点的可用性更新为 pause,以防止它接收新任务,同时允许现有任务继续运行。

此外,你探索了如何为节点添加和移除标签。你学习了使用 --label-add key=value 添加单个标签,以及同时添加多个标签。你还练习了使用 --label-rm key 移除特定标签。最后,你演示了如何将节点的角色更改为 manager,突显了 docker node update 命令在管理 Docker Swarm 中节点状态和配置方面的灵活性。