首页 > 其他分享 >Docker Swarm 节点维护

Docker Swarm 节点维护

时间:2023-10-30 12:07:49浏览次数:43  
标签:node 删除 worker 节点 Swarm manager Docker docker


Docker Swarm Mode

Docker Swarm 集群搭建

Docker Swarm 节点维护

Docker Service 创建

1.角色转换

Swarm 集群中节点的角色只有 manager 与 worker,所以其角色也只是在 manager 与worker 间的转换。即 worker 升级为 manager,或 manager 降级为 worker。

1.1 worker 升级为 manager

在manager节点通过 docker node promote 命令可以将 worker 升级为 manager。例如,下面的命令是将docker4 与 docker5 两个节点升级为了 manager,即当前集群中全部为 manager。

Docker Swarm 节点维护_云原生

1.2 manager 降级为 worker

在manager节点通过 docker node demote 命令可以将 manager 降级为 worker。例如,下面将docker2 与 docker3 两个节点降级为了 worker。

Docker Swarm 节点维护_云原生_02

1.3 docker node update 变更角色

除了通过 docker node demote|promote 可以变更节点角色外,通过 docker node update --role [manager|worker] [node]也可变更指定节点的角色。

再将 docker2 与 docker3 两个节点变为 manager。

Docker Swarm 节点维护_后端_03

将 docker4 与 docker5 两个节点变为 worker。

Docker Swarm 节点维护_无法删除_04

2. 节点标签

swarm 可以通过命令为其节点添加描述性标签,方便运维人员去了解该节点的更多信息。

2.1 添加/修改节点标签

通过 docker node update --label-add 命令可以为指定 node 添加指定的 key=value 的标签。若该标签的 key 已经存在,则会使用新的 value 替换掉该 key 的原 value。不过需要注意的是,若要添加或修改多个标签,则需要通过多个--label-add 选项指定。

docker node update --label-add auth=zhangsan --label-add email=123@qq.com aodw1lselnf114wdfdca8fm16
# 通过 docker node inspect 在查看该节点详情时可看到添加的标签
docker node inspect aodw1lselnf114wdfdca8fm16

Docker Swarm 节点维护_后端_05

docker node inspect --pretty <node> 可以 key:value 的形式显示信息。

Docker Swarm 节点维护_无法删除_06

2.2 删除节点标签

通过 docker node update --label-rm 命令可以为指定的 node 删除指定 key 的标签。同样,若要删除多个标签,则需要通过多个--label-rm 选项指定要删除 key 的标签。

docker node update --label-rm auth --label-rm email aodw1lselnf114wdfdca8fm16

查看节点详情,两个标签已经消失。

3. 节点删除

manager 节点通过 docker node rm 命令可以删除一个 Down 状态的、指定的 worker 节点。

注意,该命令只能删除 worker 节点,不能删除 manager 节点。

3.1 有问题的删除

验证:对于 Ready 状态的 worker 节点是无法直接删除的。对于 manager 节点也是无法删除的。

Docker Swarm 节点维护_docker_07

3.2 正确的删除

若要删除一个 worker 节点,首先要将该节点的 Docker 关闭,使该节点变为 Down 状态,然后再进行删除。

停止docker4中的docker

systemctl stop docker

Docker Swarm 节点维护_Docker_08

3.3 强制删除

上面的删除方式有些麻烦,其实也可以通过添加-f 选项来实现强制删除。

Docker Swarm 节点维护_云原生_09

此时去docker5中查看docker状态发现:swarm: active

Docker Swarm 节点维护_云原生_10

但对于 manager 节点,强制删除也不能删除。(可以通过先降级为worker,再强制删除)

docker node rm –f 命令会使一个节点强制退群,而 docker swarm leave 命令是使当前的docker 主机关闭 swarm 模式。

4. manager 集群容灾

4.1 热备容灾

 Swarm 的 manager 节点集群采用的是热备方式来提升集群的容灾能力。即在 manager集群中只有一个处于 leader 状态,用于完成 swarm 节点的管理,其余 manager 处于热备状态。当 manager leader 宕机,其余 manager 就会自动发起 leader 选举,重新选举产生一个新的 manager leader。

4.2 容灾能力

 manager 集群的 leader 选举采用的是 Raft 算法。Raft 算法是一种比较复杂的一致性算法,其选举 leader 的简单思路是,所有可用的 manager 全部具有选举权与被选举权。最终获得过半选票的 manager 当选新的 leader。为了保证一次性可以选举出新的leader,官方推荐使用奇数个manager。但并不是说偶数个manager就无法选举出leader。

4.3 容灾模拟

目前是 docker、docker2、docker3 三个 manager,其中 docker 为 leader。

Docker Swarm 节点维护_无法删除_11

现在关闭 docker 主机的 docker daemon,模拟其宕机。

systemctl stop docker

然后在 docker2 或 docker3 主机上查看当前的节点情况,可以看到 docker2 或 docker3已经成为了新的 leader。

Docker Swarm 节点维护_无法删除_12

此时如果再使某个 manager 宕机,例如使 docker2 的 docker daemon 关闭,那么整个swarm 就会瘫痪。因为剩下的 manager 已经无法达成过半的选票,无法选举出新的 leader。

停掉docker2后,整个集群瘫痪:

Docker Swarm 节点维护_无法删除_13


标签:node,删除,worker,节点,Swarm,manager,Docker,docker
From: https://blog.51cto.com/u_14452299/8087187

相关文章

  • Docker Service 创建
    DockerSwarmModeDockerSwarm集群搭建DockerSwarm节点维护DockerService创建service只能依附于dockerswarm集群,所以service的创建前提是,swarm集群搭建完毕。1.创建servicedockerservicecreate命令用于创建service,需要在manager中运行。与创建容器的命令dock......
  • Docker 资源限制
    Docker资源限制1、内存限制#Docker提供的内存限制功能有以下几点: -容器能使用的内存和交换区的大小 -容器的核心内存大小 -容器虚拟内存的交换行为 -容器内存的软性限制 -是否杀死占用过多内存的容器 -容器被杀死的优先级内存限制相关参数执行dockerrun命令......
  • Docker安装
    Docker安装1.卸载旧版dockeryumremovedocker\docker-client\docker-client-latest\docker-common\docker-latest\docker-latest-logrotate\docker-logrotate\docker-engine2.配置Docker的yum库安装yum工具yuminstall-yyum......
  • docker
    Docker目录Docker1安装镜像和容器命令解读2docker基础常见命令命令别名数据卷本地目录挂载镜像Dockerfiledocker网络3项目部署DockerCompose1安装参考:⁤⁤‌‍⁢⁡⁤‬⁡‬‌⁡⁢⁣‬⁡‌⁣‌⁤⁡‌⁣‍⁢⁤⁣⁣⁢‍‍⁡⁣⁣‬‍⁢⁣‌⁡Linux环境搭建-飞书云文档(feishu.......
  • 在Docker容器内,我如何连接到机器的本地主机?
    内容来自DOChttps://q.houxu6.top/?s=在Docker容器内,我如何连接到机器的本地主机?我有一个运行在Docker容器内的Nginx。我的主机系统上运行着一个MySql。我想从我的容器内连接到MySql。MySql只绑定到本地主机设备。有没有办法从这个Docker容器内连接到这个MySql或其他在本地......
  • 在Docker上搭建ELK+Filebeat日志中心
    当前环境1.系统:centos 72.docker1.12.1介绍ElasticSearchElasticsearch是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析。它是一个建立在全文搜索引擎ApacheLucene基础上的搜索引擎,使用Java语言编写。LogstashLogstash是一个具有实时渠道......
  • Ubuntu环境下docker的安装和基本使用
    docker是一个基于GoLang的应用容器引擎,它轻量级的沙箱化特性让它在服务器运维方面不可或缺。docker的优势和特性本篇不再赘述,着重记录Ubuntu环境下docker快速安装和基本使用。docker引擎本身是跨平台的,在不同Linux、Mac和win环境有不同的实现,而win环境则依托于vbox和hyper-v的虚拟......
  • 237. 删除链表中的节点(中)
    目录题目代码题目有一个单链表的 head,我们想删除它其中的一个节点 node。给你一个需要删除的节点 node 。你将 无法访问 第一个节点  head。链表的所有值都是唯一的,并且保证给定的节点 node 不是链表中的最后一个节点。删除给定的节点。注意,删除节点并不是指从......
  • nexus3 作为docker仓库与镜像缓存的记录
    因为搞k8s拉取镜像太慢,不同版本每次都要等待半天,用nexus3作为docker镜像的缓存与仓库镜像,虽然权限控制弱一些,够用,记录用法及踩坑。1作为镜像缓存,唯一的坑,就是第一次拉取及后续拉取镜像,没有缓存,也不晓得为啥配置了 insecure-registries和 registry-mirrors没生效,iftop观察流......
  • 收藏从未停止,练习从未开始——MYSQL游标存储过程IDEA快捷键配置SpringBoot入门到入土G
    “收藏从未停止,练习从未开始”,或许有那么一些好题好方法,在被你选中收藏后却遗忘在收藏夹里积起了灰?今天请务必打开你沉甸甸的收藏重新回顾,分享一下那些曾让你拍案叫绝的好东西吧!本人详解:(提醒:随笔)本人详解作者:王文峰,参加过2020年度博客之星,《Java王大师王天师》作者采购供应链共享......