Docker Swarm集群搭建与管理全攻略

文章目录

  • 一、节点准备
  • 二、初始化 manager 节点
  • 三、管理 swarm 集群中的 worker 节点
    • 1、添加 worker 节点
    • 2、查看 worker 节点
    • 3、删除 worker 节点
  • 四、管理 swarm 集群服务
    • 1、创建服务
    • 2、查看服务
    • 3、删除服务
  • 五、管理 swarm 节点服务
    • 1、节点标签管理
    • 2、创建服务
    • 3、查看服务
    • 4、删除服务

本文详细介绍了如何搭建和管理 Docker Swarm 集群。首先,通过节点准备,将不同节点分配为 manager 和 worker 角色。接着,详细阐述了初始化 manager 节点、添加和管理 worker 节点的步骤,包括查看、删除节点以及设置节点的排水模式等操作。文章还深入讲解了如何通过 Docker Compose 文件在 Swarm 集群中创建、查看和删除服务,并展示了如何利用节点标签管理服务的部署位置,以实现更灵活的服务调度。通过实际操作示例和命令,读者可以清晰地掌握 Docker Swarm 集群的搭建与管理方法。

一、节点准备

节点类型节点IP角色类型
node1192.168.188.30manager
node2192.168.188.31worker
………………

二、初始化 manager 节点

在 node1 节点上面执行如下命令,将 node1 节点设置为 manager 角色

docker swarm init --advertise-addr 192.168.188.30

三、管理 swarm 集群中的 worker 节点

1、添加 worker 节点

在 node1 节点(即:manager )上面执行如下命令,获取命令

docker swarm join-token worker

命令结果如下:

To add a worker to this swarm, run the following command:docker swarm join --token **** 192.168.188.30:2377

在 node2 节点(即:worker)上面执行如下命令,加入 swarm 集群:

docker swarm join --token **** 192.168.188.30:2377

2、查看 worker 节点

在 node1 节点(即:manager )上面执行如下命令,查看所有的 worker 节点:

docker node ls

命令结果如下:

ID                            HOSTNAME         STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
plmpv3dzvhwbpljxp60u3925o     node2             Ready     Active                          27.3.1
uqshe5xx4rf1kuovh61l3zb4u *   node1             Ready     Active         Leader           24.0.7

3、删除 worker 节点

在 node1 节点(即:manager )上面执行如下命令,查看节点状态:

docker node ls

在 node1 节点(即:manager )上面执行如下命令,查看节点上运行的服务:

# 格式:docker node ps ${节点名称 或 ID}
docker node ps node2

在 node1 节点(即:manager )上面执行如下命令,将节点设置为排水模式可以确保该节点上的所有服务任务被平滑地迁移到其他可用节点上,避免服务中断:

# 格式:docker node update --availability drain ${节点名称 或 ID}
docker node update --availability drain node2

在 node1 节点(即:manager )上面执行如下命令,确认服务迁移完成:

# 格式:docker node ps ${节点名称 或 ID}
docker node ps node2

在 node2 节点(即:worker )上面执行如下命令,当前 worker 节点就离开了 swarm 集群:

docker swarm leave

注:不能远程将某个节点从 swarm 集群中给被动移除,只能在各自的节点上面执行 leave 命令

在 node1 节点(即:manager )上面执行如下命令,从 Swarm 集群中移除节点:

# 格式:docker node rm ${节点名称 或 ID}
docker node rm node2

在 node1 节点(即:manager )上面执行如下命令,验证 node2 节点(即:worker )是否已成功从集群中移除,并且集群状态是否正常:

docker node ls

四、管理 swarm 集群服务

1、创建服务

node1 节点(即:manager )创建如下文件swarm-test/docker-compose.yml,假设内容如下:

# 定义 Docker Compose 文件的版本,这里使用的是 3.8 版本
version: '3.8'# services 部分定义了要创建的服务
services:# 定义一个名为 ubuntu-test 的服务ubuntu-test:# 指定使用的 Docker 镜像,这里使用最新版本的 Ubuntu 镜像image: ubuntu:latest# 容器启动后执行的命令,这里使用 tail -f /dev/null 命令,目的是让容器保持运行状态command: tail -f /dev/null  # 保持容器运行# deploy 部分用于配置服务的部署选项deploy:# 指定服务要创建的副本数量,这里创建 2 个副本replicas: 2# networks 部分指定服务要加入的网络networks:- swarm-test-net# networks 部分定义了要创建的网络
networks:# 定义一个名为 swarm-test-net 的网络swarm-test-net:# 指定网络的驱动类型,这里使用 overlay 驱动,常用于 Docker Swarm 集群driver: overlay

node1 节点(即:manager )的控制台执行如下命令,创建集群服务:

# 使用 docker stack deploy 命令在 Docker Swarm 集群中部署一个栈
# -c 参数用于指定要使用的 Docker Compose 文件
# swarm-test/docker-compose.yml 是具体的 Compose 文件路径,表明从该文件读取服务配置
# swarm-test 是要部署的【栈名称】
docker stack deploy -c swarm-test/docker-compose.yml swarm-test

2、查看服务

node1 节点(即:manager )的控制台执行如下命令,查看部署进度:

docker service ls

node1 节点(即:manager )的控制台执行如下命令,查看指定服务的任务状态:

# 格式:docker service ps ${栈名称}_${容器名称}
docker service ps swarm-test_ubuntu-test

3、删除服务

node1 节点(即:manager )的控制台执行如下命令,删除服务:

# 格式:docker service rm ${栈名称}_${容器名称}
docker service rm swarm-test_ubuntu-test

五、管理 swarm 节点服务

1、节点标签管理

在 node1 节点(即:manager )上面给 node2 添加了一个名为 worker 且值为 wrk2 的标签:

# 可以通过执行如下命令查看节点信息
# docker node ls
# 格式:docker node update --label-add ${标签名}=${标签值} ${节点名称 或 ID}
docker node update --label-add worker=wrk2 node2

在 node1 节点(即:manager )上面查看 node2 的标签:

# 可以通过执行如下命令查看节点信息
# docker node ls
# 格式:docker node inspect --format '{{.Spec.Labels}}' ${节点名称 或 ID}
docker node inspect --format '{{.Spec.Labels}}' node2

在 node1 节点(即:manager )上面给 node2 删除了一个名为 worker 且值为 wrk2 的标签:

# 可以通过执行如下命令查看节点信息
# docker node ls
# 格式:docker node update --label-rm ${标签名} ${节点名称 或 ID}
docker node update --label-rm worker node2

2、创建服务

在 node1 节点(即:manager )创建如下文件swarm-test1/docker-compose.yml,假设内容如下:

# 定义 Docker Compose 文件的版本,这里使用的是 3.8 版本
version: '3.8'# services 部分定义了要创建的服务
services:# 定义一个名为 ubuntu-test 的服务ubuntu-test:# 指定使用的 Docker 镜像,这里使用最新版本的 Ubuntu 镜像image: ubuntu:latest# 容器启动后执行的命令,这里使用 tail -f /dev/null 命令,目的是让容器保持运行状态command: tail -f /dev/null  # 保持容器运行# deploy 部分用于配置服务的部署选项deploy:# 指定服务要创建的副本数量,这里创建 2 个副本replicas: 2# placement 用于指定服务任务的放置策略,即决定服务的容器在哪些节点上运行placement:# constraints 用于设置放置约束条件,满足这些条件的节点才会被用于运行服务任务constraints:# 此约束条件表明服务的容器只能部署在带有 worker 标签且值为 wrk2 的节点上- node.labels.worker == wrk2# networks 部分指定服务要加入的网络networks:- swarm-test1-net# networks 部分定义了要创建的网络
networks:# 定义一个名为 swarm-test1-net 的网络swarm-test1-net:# 指定网络的驱动类型,这里使用 overlay 驱动,常用于 Docker Swarm 集群driver: overlay

node1 节点(即:manager )的控制台执行如下命令,创建集群服务:

# 使用 docker stack deploy 命令在 Docker Swarm 集群中部署一个栈
# -c 参数用于指定要使用的 Docker Compose 文件
# swarm-test1/docker-compose.yml 是具体的 Compose 文件路径,表明从该文件读取服务配置
# swarm-test1 是要部署的【栈名称】
docker stack deploy -c swarm-test1/docker-compose.yml swarm-test1

3、查看服务

node1 节点(即:manager )的控制台执行如下命令,查看部署进度:

docker service ls

node1 节点(即:manager )的控制台执行如下命令,查看指定服务的任务状态:

# 格式:docker service ps ${栈名称}_${容器名称}
docker service ps swarm-test1_ubuntu-test

4、删除服务

node1 节点(即:manager )的控制台执行如下命令,删除服务:

# 格式:docker service rm ${栈名称}_${容器名称}
docker service rm swarm-test1_ubuntu-test

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/76112.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

离线语音识别 ( 小语种国家都支持)可定制词组

1产品介绍 离线语音模组采用神经网络算法,支持语音识别、自学习等功能。运用此模组将 AI 技 术赋能产品,升级改造出语音操控的智能硬件 ( 例如风扇、台灯、空调、马桶、按摩椅、运 动相机、行车记录仪等 ) 。支持全球多种语言识别,如中文…

Docker与VNC的使用

https://hub.docker.com/r/dorowu/ubuntu-desktop-lxde-vnc 下载nvc 客户端 https://downloads.realvnc.com/download/file/viewer.files/VNC-Viewer-7.12.0-Windows.exe 服务端 docker pull dorowu/ubuntu-desktop-lxde-vnc#下载成功 docker pull dorowu/ubuntu-desktop-l…

Linux系统学习Day0——了解和熟悉Linux系统的远程终端登录和数据传输

一、Windows系统与Linux系统虚拟机通过桥接进行网络连接 (一)桥接模式 桥接模式是虚拟机网络连接的一种常见方式,其核心原理是通过虚拟网卡将Linux虚拟机与宿主机的物理网卡建立桥接关系,使虚拟机能够直接接入物理网络。在该模式…

【开题报告+论文+源码】基于springboot的农贸菜市场租位管理系统的设计与实现

项目背景与意义 随着信息技术的快速发展和普及,信息化管理已成为各行业提升运营效率和服务质量的重要手段。农贸菜市场作为城市生活的重要组成部分,其管理效率和服务水平直接关系到市民的日常生活体验。传统的农贸菜市场租位管理方式往往存在信息不对称、…

Codecademy—— 交互式编程学习的乐园

一、网站概述 Codecademy 是一家美国在线学习编程知识的网站,它为编程学习者提供了一种全新的学习方式。在如今众多的编程学习平台中,Codecademy 凭借其独特的优势脱颖而出,吸引了全球数百万用户。其目标是帮助更多人轻松学习编程&#xff0…

WEB安全--XSS--DOM破坏

一、前言 继XSS基础篇后,我们知道了三种类型的XSS,这篇文章主要针对DOM型XSS的原理进行深入解析。 二、DOM型XSS原理 2.1、什么是DOM 以一个形象的比喻: 网页就像是一座房子,而 **DOM** 就是这座房子的“蓝图”或者“结构图”。…

Linux系统远程操作和程序编译

Linux系统远程操作和程序编译 了解和熟悉Linux系统的远程终端登录、远程图形桌面访问、 X图形窗口访问和FTP文件传输操作 网络设置和用户创建: 在虚拟机Ubuntu系统中,将网络连接设置为“桥接模式”,并配置好IP和网关。确保其他Windows 10系统…

linux开发环境

1.虚拟机环境搭建 在 Ubuntu 系统中,打开(如图中显示的窗口 )常见快捷键有: Ctrl Alt T:这是最常用的打开终端的快捷键组合 ,按下后会快速弹出一个新的终端窗口。 在 VMware 虚拟机环境中,若…

蓝桥·20264-祝福语--找连续字串的长度

#include <iostream> using namespace std; int main() {// 请在此输入您的代码//最小字典序&#xff0c;一定是全a&#xff0c;找s的最长字串a,结果就是该字串长度加1&#xff08;t不能是s的子串&#xff09;//所以这道题就变成了&#xff0c;找s中字串a出现的长度strin…

7.第二阶段x64游戏实战-分析人物属性

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 上一个内容&#xff1a;6.第二阶段x64游戏实战-分析人物状态 首先打开人物面板&#xff0c;查看人物的…

数组的常见算法一

注: 本文来自尚硅谷-宋红康仅用来学习备份 6.1 数值型数组特征值统计 这里的特征值涉及到&#xff1a;平均值、最大值、最小值、总和等 **举例1&#xff1a;**数组统计&#xff1a;求总和、均值 public class TestArrayElementSum {public static void main(String[] args)…

汽车电子笔记之:基于Tasking编译器怎么制作库文件并将库文件集成进工程释放

目录 1、概述 2、库工程创建、使用步骤 2.1、选择对应的MCU型号及空工程 2.2、选择需要封装的代码 2.3、将需要封装的代码复制到库工程 2.4、整理库工程工程属性 2.5、预留不生成库的.c源文件 2.6、编译生成.a文件 2.7、将.a集成进工程 2.7.1、创建释放给客户的工程 …

[ctfshow web入门] web29

前置知识 eval: 把字符串按照 PHP 代码来执行&#xff0c;例如eval(“echo 1;”);这个函数拥有回显 system&#xff1a;使php程序执行系统命令&#xff0c;例如&#xff0c;system(“ls”);就是查看当前目录&#xff0c;这个拥有回显 preg_match&#xff1a;查找字符串是否匹配…

7-8 超速判断

模拟交通警察的雷达测速仪。输入汽车速度&#xff0c;如果速度超出60 mph&#xff0c;则显示“Speeding”&#xff0c;否则显示“OK”。 输入格式&#xff1a; 输入在一行中给出1个不超过500的非负整数&#xff0c;即雷达测到的车速。 输出格式&#xff1a; 在一行中输出测…

【GESP】C++二级练习 luogu-B3721 [语言月赛202303] Stone Gambling S

GESP二级练习&#xff0c;多层循环分支练习&#xff0c;难度★✮☆☆☆。 题目题解详见&#xff1a;https://www.coderli.com/gesp-2-luogu-b3721/ 【GESP】C二级练习 luogu-B3721 [语言月赛202303] Stone Gambling S | OneCoderGESP二级练习&#xff0c;多层循环分支练习&am…

深入理解C++面向对象特性之一 多态

欢迎来到干货小仓库&#xff0c;堪比沙漠!!! 从“Hello World”到改变世界&#xff0c;中间隔着千万次再试一次. 1.多态的概念 多态的概念&#xff1a;通俗来说&#xff0c;就是多种形态&#xff0c; 具体点就是去完成某个行为&#xff0c;当不同的对象去完成时会 产生出不同的…

蓝桥备赛指南(14):树的直径与重心

树的直径 什么是树的直径&#xff1f;树的直径是树上最长的一条链&#xff0c;当然这条链并不唯一&#xff0c;所以一棵树可能有多条直径。直径由两个顶点u、v来决定&#xff0c;若由一条直径&#xff08;u,v)&#xff0c;则满足一下性质&#xff1a; 1&#xff09;u、v的度数…

AIDD-人工智能药物设计-网络药理学-多组学与网络药理学分析揭示龟龄集治疗少精症的机制

IF6.7|多组学与网络药理学分析揭示龟龄集治疗少精症的机制 2024年10月28日&#xff0c;海军军医大学张卫东教授团队在Phytomedicine&#xff08;IF6.7&#xff09;上发表了题为“Multi-omics and network pharmacology approaches reveal Gui-Ling-Ji alleviates oligoastheno…

搜狗拼音输入法纯净优化版:去广告,更流畅输入体验15.2.0.1758

前言 搜狗输入法电脑版无疑是装机必备的神器。它打字精准&#xff0c;词库丰富全面&#xff0c;功能强大&#xff0c;极大地提升了输入效率。最新版的搜狗拼音输入法更是借助AI技术&#xff0c;让打字变得既准确又高效。而搜狗输入法的去广告精简优化版&#xff0c;通过移除广…

Franka双臂机器人:多领域革新与核心技术深度解析

双臂Franka机器人以类人化操作能力、毫秒级力控响应及智能协同算法为核心&#xff0c;持续推动工业自动化、医疗辅助与农业生产的革新进程。本文深度解析其技术突破与跨行业实践案例。 Franka双臂优势&#xff1a; 高灵活度&#xff1a;7自由度设计&#xff0c;模拟人类手臂运…