Manage nodes in a swarm在集群中管理节点

List nodes列举节点

为了查看集群中的节点列表,可以在管理节点中运行docker node ls:

  1. $ docker node ls
  2.  
  3. ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
  4. 46aqrk4e473hjbt745z53cr3t node- Ready Active Reachable
  5. 61pi3d91s0w3b90ijw3deeb2q node- Ready Active Reachable
  6. a5b2m3oghd48m8eu391pefq5u node- Ready Active
  7. e7p8btxeu3ioshyuj6lxiv6g0 node- Ready Active
  8. ehkv3bcimagdese79dn78otj5 * node- Ready Active Leader

AVAILABILITY显示调度程序是否可以向节点分配任务:

  • Active意味着调度程序可以将任务分配给节点。
  • Pause意味着调度程序不会向节点分配新任务,但现有任务仍在运行。
  • Drain意味着调度程序不会向节点分配新任务。调度器关闭所有现有任务,并在可用节点上调度它们。

MANAGER STATUS列显示了Raft共识中节点的参与情况:
没有值表示不参与集群管理的工作节点。
Leader意味着节点是为集群做出所有集群管理和编配决策的主要管理节点。
Reachable意味着该节点是参与raft共识仲裁的管理节点。如果leader节点不可用,则该节点有资格选举为新的leader。
Unavailable意味着节点是无法与其他管理器通信的管理器。如果一个管理器节点变成Unavailable,你应该将一个新的管理器节点加入到集群中,或者将一个工作节点提升为一个管理器。
有关集群管理的更多信息,请参阅 Swarm administration guide

Inspect an individual node查看单个节点

你可以在管理器节点上运行docker node inspect <NODE-ID>,以查看单个节点的详细信息。输出默认为JSON格式,但是你可以传递--pretty标志以人类可读的格式打印结果。例如:

  1. $ docker node inspect self --pretty
  2.  
  3. ID: ehkv3bcimagdese79dn78otj5
  4. Hostname: node-
  5. Joined at: -- ::44.9910662 + utc
  6. Status:
  7. State: Ready
  8. Availability: Active
  9. Manager Status:
  10. Address: 172.17.0.2:
  11. Raft Status: Reachable
  12. Leader: Yes
  13. Platform:
  14. Operating System: linux
  15. Architecture: x86_64
  16. Resources:
  17. CPUs:
  18. Memory: 1.954 GiB
  19. Plugins:
  20. Network: overlay, host, bridge, overlay, null
  21. Volume: local
  22. Engine Version: 1.12.-dev

Update a node更新节点

Change node availability 改变节点可用性(availability)属性

更改节点可用性可让你:
耗尽drain管理器节点,使其仅执行群集管理任务,且不可用于任务分配。
耗尽drain一个节点,以便你可以对其进行维护。
暂停pause一个节点,使它不能接收新任务。
恢复不可用unavailable或暂停paused的节点可用状态。
例如,要更改管理器节点以耗尽Drain可用性:

  1. $ docker node update --availability drain node-
  2.  
  3. node-

See list nodes for descriptions of the different availability options.

Add or remove label metadata添加或移除标签元数据

节点标签提供了一种灵活的节点组织方法。你还可以在服务约束中使用节点标签。在创建服务时应用约束,以限制调度程序为该服务分配任务的节点。
在管理节点上运行docker node update --label-add,向节点添加标签元数据。--label-add标志支持<key>值或<key>=<value>键值对。
对于要添加的每个节点标签,传递--label-add标记一次:

  1. $ docker node update --label-add foo --label-add bar=baz node-
  2.  
  3. node-

使用docker节点更新为节点设置的标签仅适用于集群中的节点实体。不要将它们与dockerd的docker守护进程标签混淆。
因此,可以使用节点标签将关键任务限制在满足某些需求的节点上。例如,只在应该运行特殊工作负载的机器上调度,例如满足PCI-SS遵从性的机器。
折衷的工作程序无法折衷这些特殊的工作负载,因为它无法更改节点标签。
然而,引擎标签仍然很有用,因为一些不影响容器安全编排的特性最好以分散的方式设置。例如,引擎可以有一个标签来指示它具有某种类型的磁盘设备,这可能与安全性没有直接关系。这些标签更容易被群编配器“信任”。
有关服务约束的更多信息,请参阅docker service create CLI reference

Promote or demote a node提升或降级节点

你可以将工作节点提升为manager角色。当管理节点不可用时,或者需要脱机进行维护时,这非常有用。类似地,你可以将manager节点降级为worker角色。

注意:无论你提升或降级节点的原因是什么,你都必须始终维护集群中管理器节点的仲裁。有关更多信息,请参阅Swarm administration guide

若要提升一个或一组节点,请从管理节点运行docker node promote:

  1. $ docker node promote node- node-
  2.  
  3. Node node- promoted to a manager in the swarm.
  4. Node node- promoted to a manager in the swarm.

若要降级一个或一组节点,请从管理节点运行docker node demote:

  1. $ docker node demote node- node-
  2.  
  3. Manager node- demoted in the swarm.
  4. Manager node- demoted in the swarm.

docker node promotedocker node demote 命令分别是docker node update --role managerdocker node update --role worker命令的简易版

Install plugins on swarm nodes在集群节点中安装插件

仅支持Edge :此选项仅在Docker CE Edge 版本中可用。参见 Docker CE Edge

如果你的swarm服务依赖于一个或多个插件,那么这些插件需要在服务可能部署的每个节点上可用。你可以手动在每个节点上安装插件,或者编写安装脚本。在Docker 17.07及更高版本中,你还可以通过指定PluginSpec而不是ContainerSpec来使用Docker API以类似全局服务的方式部署插件。

注意:目前还没有办法使用Docker CLI或Docker Compose将插件部署到集群中。此外,不可能从私有存储库安装插件。

PluginSpec是由插件开发人员定义的。要将插件添加到所有Docker节点,请使用service/create API,传递在TaskTemplate中定义的PluginSpec JSON。

Leave the swarm离开集群

在一个节点中运行docker swarm leave来将其从集群中移除

比如下面在工作节点中离开集群:

  1. $ docker swarm leave
  2.  
  3. Node left the swarm.

当节点离开集群时,Docker引擎在集群模式下停止运行。协调器不再向节点调度任务。
如果节点是管理器节点,则会收到关于维护仲裁的警告。若要覆盖警告,请传递--force标志。如果最后一个管理器节点离开集群,那么集群将不可用,需要你采取灾难恢复措施。
有关维护仲裁和灾难恢复的信息,请参阅Swarm administration guide
在节点离开集群之后,你可以在管理器节点上运行docker node rm命令来从节点列表中删除该节点,如:

  1. $ docker node rm node-

docker swarm英文文档学习-7-在集群中管理节点的更多相关文章

  1. docker swarm英文文档学习-3-开始

    https://docs.docker.com/engine/swarm/swarm-tutorial/ 1)Getting started with swarm mode 本教程向你介绍Docker ...

  2. docker swarm英文文档学习-8-在集群中部署服务

    Deploy services to a swarm在集群中部署服务 集群服务使用声明式模型,这意味着你需要定义服务的所需状态,并依赖Docker来维护该状态.该状态包括以下信息(但不限于): 应该运 ...

  3. docker swarm英文文档学习-6-添加节点到集群

    Join nodes to a swarm添加节点到集群 当你第一次创建集群时,你将单个Docker引擎置于集群模式中.为了充分利用群体模式,可以在集群中添加节点: 添加工作节点可以增加容量.当你将服 ...

  4. docker swarm英文文档学习-4-swarm模式如何运行

    1)How nodes work Docker引擎1.12引入了集群模式,使你能够创建一个由一个或多个Docker引擎组成的集群,称为集群.集群由一个或多个节点组成:在群模式下运行Docker引擎1. ...

  5. docker swarm英文文档学习-2-关键概念

    参考https://docs.docker.com/engine/swarm/key-concepts/ Swarm mode key concepts集群模式关键概念 本主题介绍Docker Eng ...

  6. docker swarm英文文档学习-11-上锁你的集群来保护你的加密密钥

    Lock your swarm to protect its encryption key上锁你的集群来保护你的加密密钥 在Docker 1.13及更高版本中,默认情况下,群管理器使用的Raft日志在 ...

  7. docker swarm英文文档学习-12-在集群模式中的Raft共识

    Raft consensus in swarm mode 在集群模式中的Raft共识 当Docker引擎在集群模式下运行时,manager节点实现Raft 共识算法来管理全局集群状态.Docker s ...

  8. docker swarm英文文档学习-10-使用Docker密钥管理敏感数据

    Manage sensitive data with Docker secrets使用Docker secrets管理敏感数据 About secrets 对于Docker Swarm服务来说,sec ...

  9. docker swarm英文文档学习-5-在swarm模式中运行Docker引擎

    Run Docker Engine in swarm mode在swarm模式中运行Docker引擎 当你第一次安装并开始使用Docker引擎时,默认情况下禁用swarm模式.在启用集群模式时,需要处 ...

随机推荐

  1. 记录怎样把安全证书导入到java中的cacerts证书库

    这次项目上需要去证书中解析公钥所以这里分享下方法: 首先准备一个证书文件比如叫:test.crt(一般是cer结尾) 下一步准备把证书导入到导入java中的cacerts证书库里 方法如下: 比如本地 ...

  2. SpringCloud高可用和高并发

    1 高可用 什么是高可用:(High Availability)在一个长时间内服务不受影响.通俗的讲就是,一个机器挂掉的时候,有其他机器可以继续提供同样的服务. 如何实现高可用:冗余+自动故障转移.冗 ...

  3. 【JavaFx教程】第三部分:与用户的交互

    第3部分的主题: 在表中反应选择的改变(TableView中). 增加增加,编辑和删除按钮的功能. 创建自定义弹出对话框编辑人员. 验证用户输入. 响应表的选择 显然,我们还没有使用应用程序的右边.想 ...

  4. Vue, element-ui Module build failed: Error: No PostCSS Config found

    使用vue框架写pc页面时,我们经常会用到element-ui这个框架. 当我们吧把需要的东西都装在好运行项目的时候,有时会出现这样的错误, Module build failed: Error: N ...

  5. windows 格式化D盘

    格式化D盘1.右击我的电脑2.高级系统设置3.高级4.性能->设置5.高级->虚拟内存(更改)6.双击D设置->无分页文件7.确定->重启计算机

  6. 前后端分离(手) -- mock.js

    前言: 本篇博文昨天七夕写的,一天下来被虐得体无完肤,苦逼的单身狗只能学习,对!我爱学习,关掉朋友圈,并写了一篇博文发泄发泄.这次写mock.js的使用,能使前后端分离,分离,分离,重要的是说三遍. ...

  7. 3.1 - Apps or metadata that mentions the name of any other mobile platform will be rejected

    3.1 - Apps or metadata that mentions the name of any other mobile platform will be rejected3.1 Detai ...

  8. python学习笔记之——python面向对象

    Python是一门面向对象语言. 1.面向对象技术介绍 类(Class): 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 类变量:类变量在整个 ...

  9. Python Socket 通信

    参考: http://www.cnblogs.com/alex3714/articles/5830365.html Socket A network socket is an endpoint of ...

  10. COCOMOII

    一.COCOMOII是什么 cocomo是 COnstructive COst MOdel(建设性成本估算模型)的缩写.最早是由Dr. Barry Boehm在1981年提出.是一种精确的.易于使用的 ...