Docker Swarm集群管理

news2024/11/28 19:42:14
  • 秋风阁(https://focus-wind.com/)

文章目录

    • 基本概念
      • Swarm节点
      • 任务与服务
    • 集群管理
      • 端口配置
      • 创建集群
      • 加入集群
      • 查看集群
      • 退出集群
    • 节点设置
      • 节点标签设置
      • 节点信息查询
    • 服务管理
      • 部署服务
      • 查看服务
      • 服务日志查看
      • 服务重启

  • Docker Swarm官方文档

Docker Swarm是Docker引擎原生内置的容器集群管理工具。

基本概念

Swarm节点

运行Docker的主机可以主动初始化一个Swarm集群作为Leader节点或者加入一个已存在的Swarm集群,这样这个运行Docker的主机就成为一个Swarm集群的节点。
Swarm集群节点可以分为manager管理节点work工作节点

管理节点用于Swarm集群的管理,docker swarm命令基本只能在管理节点执行。一个Swarm集群可以有多个管理节点,但只有一个管理节点可以成为Leader。

为了利用Swarm模式的容错特性,Docker建议您根据组织的高可用性要求实现奇数个节点。当您有多个管理器时,您可以从管理器节点的故障中恢复而无需停机。Docker建议一个Swarm最多使用七个管理器节点。一个N管理器集群最多可以容忍丢失 N − 1 2 \frac{N - 1}{2} 2N1管理器。如:一个三管理器群最多可以容忍一名管理器的损失。

工作节点是任务执行节点,管理节点将服务(service)下发至工作节点执行。管理节点默认也作为工作节点。也可以通过配置让服务只运行在管理节点。
docker-node

任务与服务

  • 任务(task)是Swarm中的最小的调度单位,目前来说就是一个单一的容器。
  • 服务(services)是指一组任务的集合,服务定义了任务的属性。
    task and service

集群管理

端口配置

docker swarm port

  • 2377(TCP): 用来与管理器节点之间进行通信。不开放2377端口,可能会导致无法加入集群中。
  • 7946(TCP/UDP): 用于docker节点之间的通信。
  • 4789(UDP): 覆盖网络流量。
    • 4789端口是Swarm数据路径端口的默认值,也称为VXLAN端口。防止任何不受信任的流量到达此端口很重要,因为VXLAN不提供身份验证。此端口应只对受信任的网络开放,而绝不能在外围防火墙上开放。

创建集群

$ docker swarm init --advertise-addr ${IP}

Swarm initialized: current node (xxx) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token xxx IP:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

在服务器上调用docker swarm init若输出正常即集群模式创建成功。本主机自动成为Leader管理员节点。当一台主机有多个网卡多个IP时,需要使用--advertise-addr参数来指定IP。

加入集群

在加入集群时,需要保证两个主机之间可以正常通讯。在加入集群时,需要Leader节点的token信息。在Leader节点中输入:

$ docker swarm join-token [manager|worker]

To add a manager to this swarm, run the following command:

    docker swarm join --token xxx IP:2377

根据需要加入工作节点还是管理节点选择参数,生成加入节点的语句。在主机中键入命令即可加入Leader节点。

$ docker swarm join --token xxx IP:2377

查看集群

$ docker node ls
ID      HOSTNAME         STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
xxx *   docker-desktop   Ready     Active         Leader           20.10.23

通过docker node ls命令查看当前集群中有多少节点,节点的活动状况。

退出集群

$ docker swarm leave --force
Node left the swarm.

通过docker swarm leave来离开集群,对于Leader节点或退出集群失败的情况可以通过--force参数来强制退出。

节点设置

节点标签设置

在集群环境中,因为不同节点的系统、配置、环境等的不同,导致有的服务只能在只能在指定的机器上跑(如:只在带GPU机器上跑人工智能相关模型的服务),或者由于业务原因导致我们需要在特定的节点上跑相关服务。我们可以通过给节点设置label标签的方式来使节点固定在相关的机器上。

$ docker node update --label-add ${key}=${value} ${node_id}

${node_id}可以根据docker node ls命令进行查看,通过给节点添加label,在docker-compose文件中添加如下配置使服务只能在指定节点中运行。

deploy:
      placement:
        constraints:
          - node.labels.${key} == ${value}

节点信息查询

$ docker inspect ${node_id}
...
"Spec": {
            "Labels": {
                "arch": "x86_64"
            },
            "Role": "manager",
            "Availability": "active"
        },
...

通过docker inspect ${node_id}命令来查看节点的详情信息,如:我们可以通过inspect命令来查看我们对节点设置的标签信息。

服务管理

Docker Swarm采用懒加载的方式进行服务的部署,当调用完部署服务的命令后,可能会长时间看到服务没有正常启动,日志也没有任何输出,此时有可能是因为系统中还没有下载相关的镜像,Docker引擎正在后台默默的下载镜像。

部署服务

Swarm内置docker compose,可以通过docker-compose文件来进行部署,一次启动多个关联的服务。在Swarm中,我们可以使用docker stack deploy来进行Swarm服务的部署。

$ docker stack deploy ${services_name} -c ${compose_file_path}

其中-c指定docker-compose文件,在一次部署中可以指定多个服务部署文件进行多服务的部署。

查看服务

$ docker stack ls

通过docker stack ls可以查看本集群中有多少服务集,各个服务集里面有多少个服务

$ docker stack services ${services_name|servicves_id}

通过docker stack services ${services_name|servicves_id}命令查看该服务集下面有多少具体的服务,服务里面有多少个分片或任务,各个服务的具体运行情况。

服务日志查看

在docker服务中,可以通过volume挂在目录的方式将数据和日志等文件信息挂载到容器外。通过这种方式,可以有效健壮的保留容器的运行信息可进行容器迁移。在使用Docker时,建议将数据和日志挂载到外部磁盘上,这样可以打开外部文件进行日志信息的查看和传输管理等操作。
也可以使用如下命令:

docker service logs ${service_name|service_id} -f -t

注意查看日志的名称为${service_name|service_id}。可以通过docker stack services ${services_name|servicves_id}命令来查看具体的${service_name|service_id}信息、其中-t参数表示显示日志的时间戳,-f参数表示跟踪日志输出,即当在查看服务日志时,仍有日志输出,控制台会同步显示更新的日志信息。根据需要添加参数。

服务重启

docker service update --force

若服务因系统资源不足或出现错误等而出现挂掉的情况,等解决完问题后,可以使用docker service update --force命令来强制重启挂掉的服务。

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

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

相关文章

FE_函数(Function)的基本理解

1 函数(Function)的基本理解 函数就是在程序设计中,将一段代码封装起来,完成一个特定的功能,并给这段代码起一个名称,程序通过名称就可以执行这段代码。函数也是一个对象,也具有普通对象的功能…

华为测开面试记,三面被吊打,所幸最后Offer已到手

在互联网做了几年之后,去大厂“镀镀金”是大部分人的首选。大厂不仅待遇高、福利好,更重要的是,它是对你专业能力的背书,大厂工作背景多少会给你的简历增加几分竞争力。 但说实话,想进大厂还真没那么容易。最近面试华…

企业级信息系统开发讲课笔记4.3 Spring Boot两种全局配置和两种注解

文章目录 零、学习目标一、全局配置文件概述二、Application.properties配置文件(一)创建Spring Boot的Web项目PropertiesDemo(二)在application.properties里添加相关配置1、配置tomcat端口号和web虚拟路径2、对象类型的配置与使…

C++继承(一文学懂继承)——对象赋值转换、菱形虚拟继承

hello,这里是bangbang,今天来讲下继承。 面向对象三大特性:封装、继承、多态。 目录 1. 继承的概念及定义 1.1 继承的概念 1.2 继承定义 1.2.1 定义格式 1.2.2 继承关系和访问限定符 1.2.3 继承基类成员访问方式的变化 2. 基类和派生类对…

波士顿房价数据集怎么不见了?

波士顿数据下载 消失的波士顿 OoO 做线性回归的同学大概率会用到一个数据集,即波士顿房价数据集,然而当你从sklearn下载该数据集时,你会惊讶地发现居然下载不了了!!!起初我以为是是什么别的原因导致数据集可…

云计算之OpenStack基础

云计算之OpenStack基础 一、OpenStack基础知识二、虚拟化2.1 虚拟化类型2.1.1 Ⅰ型虚拟化2.1.2 Ⅱ型虚拟化2.1.3 比较 2.2 KVM(Ⅱ型虚拟化)2.2.1 基本概念2.2.2 Libvirt2.2.3 CPU虚拟化2.2.4 内存虚拟化2.2.5 存储虚拟化2.2.5.1 目录类型的 Storage Pool…

【教程】配置NFS共享直接访问目标服务器的存储目录

转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] 目录 前景提要 NFS安装教程 旧服务器上 新服务器上 验证安装 优缺点 扩展 前景提要 我们新服务器的硬盘容量很小,但旧服务器的硬盘容量很大。如何在不拔硬盘的情况下,直接已本地目录…

分区计量管理项目应用

为充分发挥分区计量管理项目在漏损控制的效用,应构建科学完备的应用体系,如下图 分区计量应用体系 1. 基于水量平衡分析的漏损现状评估方法 分区计量管理项目通过监控分析DMA 分区内流量、压力、水质、大用户用水等情况,结合营业抄收系统的营…

【内网渗透】春秋云镜 Tsclient WP

前言 mssql连接和攻击、windows提权、令牌窃取、镜像劫持 flag1 上来就扫给的地址 nmap: 结合题目的mssql知识点,估计是从这里入手了,尝试爆破用户名和密码,这里先用fscan来爆,可以直接爆出来(别的工具也可&#x…

0.96寸oled显示坏苹果(badapple)

前言 俗话说:有屏幕的地方就会有badapple。 下面带来使用0.96寸OLED屏幕显示badapple的教程。 1、获取视频 首先从网上下载badapple的视频,下载地址:badapple 2、抓取视频图片 使用OLED播放视频的思想就是将视频分成一张一张的图片然后进行…

叉乘在图形学中的几何意义 ---- 判断一个点是否在三角形内

1 叉乘是什么 先简单介绍一下叉乘(cross product): a → b → \overrightarrow{a} \times \overrightarrow{b} a b ,其结果,还是一个向量。 其方向,符合右手螺旋定则(右手手指头从a转向b,看大拇指指向哪…

声音合成——Foley Sound——DECASE项目——多模态智能感知与应用——VariantAutoencoder(VAE)代码实现(7)

文章目录 概述VAE代码实现关闭eager execution修改bottlenectk组件修改loss损失函数 Preprocessline模块实现Loader模块Padder模块LogSpectrogramExtractor模块MinMaxNormaliser模块Saver模块PreprocessPipeLine模块知识补充property修饰词 train训练模块load_fsdd模块train模块…

针对基于智能卡进行认证的活动目录攻击

最近,我参与了一项攻击基于智能卡的活动目录的工作。实际上,你根本不需要使用物理智能卡来验证登录这个活动目录。证书的属性决定了它是否可以用于基于智能卡进行登录。因此,如果你能获得相应的私钥,那么就可以绕过智能卡的验证实…

ubuntu 22.04 安装 Docker Desktop 及docker介绍

目录 一、Docker Desktop 安装 1、我们先去官网下载安装包 2、Install Docker Desktop on Ubuntu 3、Launch Docker Desktop 二、Docker 介绍 什么是docker 如何使用docker docker是如何工作的 docker build docker run docker pull 一、Docker Desktop 安装 1、我们先…

网络应用技术师技能考试试题+讲解

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 前言 本章将会讲解网络应用技术师技能考试试题 一.正文 一、单选题(每题1分,满分50分) 1. 设信号的波特率为800Baud,采用幅度…

肠道微生物群:心力衰竭的新治疗靶点

谷禾健康 心力衰竭 Heart Failure(HF) 心力衰竭是一种严重的心血管疾病,其特点是较高的发病率和死亡率,同时也会带来高昂的医疗成本。 一般都认为心力衰竭是老年人的疾病,但其实心力衰竭已经呈现年轻化趋势。 以上症状…

a标签属性href的多种写法

众所周知,a标签的最重要功能是实现超链接和锚点。而且,大多数人认为a标签最重要的作用是实现超链接,其实不单单是实现超链接的方法,今天新起点博客就来整理下a标签中href的几种用法。 1、a href“[removed]js_method();” 这是常用…

即拼七人拼团系统开发模式,为什么这么火?

即拼七人拼团模式主要是结合了拼团模式的奖励机制和二二复制系统的排位玩法,将产品销售中的利润最大化让利于拼团的用户,刺激用户主动分享推广,以解决平台引流和用户活跃度的问题。 具体来说,即拼七人拼团模式就是用户进入平台购买…

崩坏:星穹铁道私人服务器搭建教程

准备工具: 一台 Windows 系统服务器 《崩坏:星穹铁道》启动器 《崩坏:星穹铁道》客户端 如果以上各项你都准备好了的话,现在就开始吧! 首先完全解压你的《崩坏:星穹铁道》客户端以及SR启动器。 解压完成…

你不知道的JavaScript的事件循环

JavaScript的事件循环 JavaScript语言的一大特点就是单线程,也就是说,同一个时间只能做一件事。那么,为什么JavaScript不能有多个线程呢?这样能提高效率啊。这也与它的用途有关。作为浏览器脚本语言,JavaScript的主要…