当前位置: 首页 > article >正文

Docker Swarm 管理

案例一概述及前置知识点

概述:

创鑫公司给云计算工程师提出新的要求,可将集群中所有Docker Engine整合进一个虚拟的资源池,通过执行命令与单一的主Swarm进行沟通,而不必分别和DockerEngine沟通。在灵活的调度策略下,IT团队可以更好地管理可用的主机资源,保证应用容器的高效运行

  1. DockerSwarm是Docker公司2014年出品的基于Docker集群管理调度工具,能够将多台主机构建成一个Docker集群,并结合Overlay网络实现容器调度和互访
  2. 用户可以通过Swarm API来管理多个主机的Docker
  3. Swarm集群包含Manager和Worker两类节点,基于Docker Engine可以部署任何类型的工作节点
  4. 在Swarm集群中部署镜像创建一个服务时,一些大型的应用上下文环境(运行环境)中需要各种服务配合工作,这些服务称之为微服务
  5. 创建服务时,可以指定要使用的容器镜像以及容器中要运行的命令,同事可以定义以下选项:
    1. 群集要对外服务的端口
    2. 在群集中用于服务之间相连的Overlay网络
    3. 滚动更新策略
    4. 群集总运行的副本数量、
  6. Docker Swarm基本特性
    1. 去中心化设计
    2. 声明式服务模型
    3. 协调预期转台与实际状态的一致性
    4. 多主机网络
    5. 负载均衡
    6. 安全策略(使用TLS对数据进行保护)
    7. 滚动更新
  7. Docker Swarm架构图
    1. Docker Swarm提供强大的集群能力,能够使多个Docker Engine组合形成一个group,提供多容器服务
    2. Swarm使用标准的Docker API

案例一:Docker Swarm群集部署

  1. 把需要的镜像同步到三个主机

  1. 初始化一个集群,指定一个节点并生成一个集群

(使用上述docker swarm join 命令那一行语句,在其他的worker节点上执行这个语句,即可将此节点加入到swarm集群当中,并作为一个worker节点)

  1. 创建完成之后,可以使用docker info 命令来查看当前集群的节点信息

2377:TCP端口,建立集群使用的端口

7946:TCP/UDP,节点之间进行通信的端口

4789:TCP/UDP端口,数据存储使用的端口

也可使用docker node ls 查看节点的信息

Active:能运行容器

pause:当前容器继续执行,新调度过来的容器不接收

drain:(污点)新调度过来的容器不接收,原有的容器调度走,保持自身没有容器运行

  1. 改变Manager管理节点的状态

  1. 给节点打标签,将指定的容器运行在指定的节点之上

--label-add:添加标签

group=g2:这是一个完整的标签名,是一个键值对

  1. 查看指定节点的详细信息

  1. 在swarm中跑一个服务

  1. 查看服务创建是否成功

  1. 给其他worker节点提权

提权过后,他们有一些特点定的权限,但不是实际的Leader

  1. 给其他集群降权

  1. 脱离集群。解散集群的命令

若是想节点脱离集群,在worker节点上执行此命令即可

若是想解散该集群,在Manager节点上执行此命令

--force:强制执行

  1. 创建服务并且指定副本数量

  1. 查看服务日志

扩容

缩容

删除服务

滚动更新

更新已创建服务的镜像

Docker的四种网络模式:

  1. bridge
  2. host
  3. none
  4. container

创建网络

创建服务端的时候指定网络

创建数据卷以实现数据共享

一、直接创建数据卷,将创建的数据卷直接在创建服务的时候指定给服务

(这种方式的弊端是,需要到每个节点依次修改数据)

1、先创建数据卷

2、创建的数据卷的位置:/var/lib/docker/volumes/

2、创建服务时直接指定数据卷

3、查看创建的数据卷

二、共享存储(NFS)数据卷

  1. 先创建一个共享目录(所有的节点都要创建)

  1. 给每个节点安装NFS,以便实现卷数据的共享

  1. 在Manager节点,设置配置文件(/etc/exports)

  1. 修改配置文件里边的内容

  1. 在Manager节点上开启以下两种服务

  1. 在worker节点上挂载目录

  1. 在Manager节点上创建新的服务,并重新指定挂载类型,以及来源共享目录

  1. 查看创建的结果

  1. 在Manager节点创建一个测试文件,会发现其他的worker节点会有相同的数据内容
    1. 在Manager节点创建测试内容
      1. echo "test" > /var/vhost/www/aa/index.html
    2. 在worker节点创建测试内容
      1. echo "test" > /var/share/nginx/html/index.html

经过对比,发现无论在那个节点上创建测试文件,最终都会共享到所有节点上,因为在Manager节点把创建的共享目录已经挂载到其他的worker节点上的目录当中


http://www.kler.cn/a/301572.html

相关文章:

  • 抽象java入门1.5.3.1——类的进阶
  • 计算机编程中的设计模式及其在简化复杂系统设计中的应用
  • 【网络安全 | 漏洞挖掘】通过密码重置污染实现账户接管
  • mac上使用docker搭建gitlab
  • 基于大语言模型意图识别和实体提取功能;具体ZK数值例子:加密货币交易验证;
  • 【Chapter 3】Machine Learning Classification Case_Prediction of diabetes-XGBoost
  • 基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(六):Blender烘培和UE5导入
  • 深入探讨MySQL联表查询可能导致的问题及应对策略
  • Linux运维_Bash脚本_源码编译Moby(Docker-CE)-20240803
  • 嵌入式鸿蒙系统开发语言与开发方法分析
  • Linux之MySQL主从复制
  • 组合模式composite
  • linux 操作系统下cp命令介绍及案例应用
  • Angular-Cli脚手架介绍、安装并搭建项目
  • Golang开发之路
  • 从 Data 到 Data + AI,必然之路还是盲目跟风?
  • vue3使用vscode开发遇到热更新问题(文件保存页面不实时更新)
  • 即插即用篇 | YOLOv8 引入并行的分块注意力 | 北京大学 2024 | 微小目标
  • 高级算法设计与分析 学习笔记4 二叉查找树
  • 单片机-STM32 看门狗(八)
  • 使用Ansible进行多云环境的自动化部署与管理
  • 第二期: 第四节, 裸机编程 LED 汇编代码。
  • TCP/IP模型成功与OSI模型失败的深层原因:技术、理念与市场化路径的比较
  • 【数据结构与算法 | 灵神题单 | 快慢指针(链表)篇】力扣876, 2095, 234
  • git获取最近一次提交的内容(只要message不要hash)
  • 新的Ubuntu服务器如何启用root账号和配置静态ip以及开启ssh服务