Docker进阶:Docker Swarm(集群搭建) —实现容器编排的利器

news/2024/5/14 13:01:12

Docker进阶:Docker Swarm(集群搭建) —实现容器编排的利器

  • 1、什么是Docker Swarm?
  • 2、Docker Swarm 与 Docker Compose的区别
  • 3、创建一个Swarm集群(1-Manager,2-Worker)
    • 1、资源准备
    • 2、初始化Swarm集群 Manager 节点
    • 3、添加Worker节点到Swarm集群
    • 4、 Manager 节点查看集群状态
  • 4、Docker Swarm 中常用的一些命令


💖The Begin💖点点关注,收藏不迷路💖

1、什么是Docker Swarm?

Docker Swarm是Docker官方提供的容器编排工具,用于管理多个Docker容器的集群。通过Docker Swarm,用户可以轻松地部署、扩展和管理容器化应用程序。
在这里插入图片描述

1、Manager节点和Worker节点的角色和功能:

Manager节点:

1、Manager节点是Swarm集群的控制中心,负责管理整个集群的状态、调度任务和维护集群的一致性。
2、Manager节点负责接收用户的命令和请求,并将它们分发给Worker节点执行。
3、Manager节点还负责监控集群中的节点状态、服务状态和任务状态,并在需要时进行自动修复。

Worker节点:

1、Worker节点是Swarm集群中的工作节点,负责运行容器化的应用程序和服务。
2、Worker节点接收来自Manager节点的任务分配,并执行这些任务。
3、Worker节点可以根据需要动态扩展或缩减容器实例的数量,以满足应用程序的需求。

2、Swarm集群的通信机制和数据存储方式:

通信机制:

1、Swarm集群中的节点之间通过Docker的内置通信机制进行通信,这包括使用Raft一致性算法来保持集群状态的一致性。
2、Manager节点之间通过Raft协议进行通信和协调,以确保集群中的状态信息保持一致。
3、Worker节点通过Manager节点来获取任务分配和更新集群状态。

数据存储方式:

1、Swarm集群中的状态信息、配置信息和任务信息等数据存储在Manager节点的本地存储中。
2、Manager节点使用Raft协议来保持这些数据的一致性,并在集群中的所有Manager节点之间进行复制和同步。

3、Swarm模式和服务、任务(Task)的概念:

Swarm模式:

1、Swarm模式是一种用于部署和管理容器化应用程序的模式,它允许用户将多个Docker主机组成一个虚拟的集群。
2、Swarm模式提供了高可用性、负载均衡和自动扩展等功能,使得用户可以更轻松地管理大规模的容器化应用程序。

服务:

1、在Swarm集群中,服务是指用户定义的容器化应用程序或服务的逻辑单元。
2、服务可以包含一个或多个容器实例,并可以指定运行这些容器实例的规则、配置和策略。
3、用户可以通过定义服务来部署应用程序,并通过Swarm集群来管理和扩展这些服务。

任务(Task):

任务(Task)是指在集群中运行的容器实例的基本单位。任务是由服务定义的,每个服务可以包含一个或多个任务。任务代表了一个容器实例的运行,它在集群中的某个Worker节点上执行。

任务的特点:

1、任务是由Swarm集群调度和管理的最小单位,它代表了一个容器实例的运行。
2、每个任务都有一个唯一的标识符,用于在集群中进行识别和管理。
3、任务可以在集群中的任何Worker节点上运行,Swarm集群会根据调度策略将任务分配给合适的节点。

任务与服务的关系:

1、任务是由服务定义的,每个服务可以包含一个或多个任务。
2、当用户创建一个服务时,Swarm集群会根据服务的配置自动创建并运行相应数量的任务。
3、用户可以通过调整服务的副本数量或更新服务的配置来控制任务的数量和行为。

任务的生命周期:

1、任务的生命周期包括创建、运行、完成和销毁等阶段。
2、当用户创建一个服务时,Swarm集群会为该服务创建相应数量的任务,并将它们分配给Worker节点运行。
3、如果任务失败或节点故障,Swarm集群会自动重新调度任务,确保服务的高可用性。

任务的监控和管理:

1、用户可以通过Swarm集群的命令行工具或API来监控和管理任务的状态和行为。
2、用户可以查看任务的日志、状态和元数据信息,以便及时发现和解决问题。
3、用户还可以手动创建、更新或销毁任务,以满足特定的需求或调整服务的配置。

2、Docker Swarm 与 Docker Compose的区别

1、Docker Swarm
用途: Docker Swarm是Docker官方提供的容器编排工具,用于管理多个Docker主机上的容器集群。

特点:

1、可以将多个Docker主机组成一个集群,统一管理容器的部署、伸缩和高可用性。
2、支持服务发现、负载均衡等功能,可以实现跨主机的容器通讯。
3、具有集群管理和调度能力,可以自动处理节点故障、容器重启等情况。

2、Docker Compose

用途: Docker Compose是用于定义和运行多容器Docker应用程序的工具,通常用于单个主机上的容器编排、开发和测试环境中。

特点:

1、使用YAML文件定义多个服务、网络和卷的关系,方便快速搭建多容器应用。
2、适用于单个主机上的容器编排,不支持跨主机集群管理。
3、主要用于本地开发、测试和构建环境,简化了多容器应用的部署过程。

区别总结:

1、Docker Swarm适用于生产环境中的分布式容器编排,支持多主机集群管理和高可用性需求。
2、Docker Compose适用于开发、测试环境中的单主机多容器应用部署,帮助开发人员快速搭建和运行应用。

总的来说,Docker Swarm更适合于生产环境中复杂的容器编排需求,而Docker Compose更适合于单个主机上的容器编排、本地开发和测试环境中的快速部署应用。根据具体需求选择合适的工具使用会更加高效和方便。

3、创建一个Swarm集群(1-Manager,2-Worker)

1、资源准备

前提先安装Docker、Docker Compose。

[root@k8s-master ~]# docker -v
Docker version 24.0.5, build ced0996
[root@k8s-master ~]#

[root@k8s-master ~]# docker-compose --version
Docker Compose version v2.20.2
[root@k8s-master ~]#

名称IP
k8s-master192.168.234.20
k8s-node01192.168.234.21
k8s-node02192.168.234.22

2、初始化Swarm集群 Manager 节点

1、在要作为 Swarm Manager 的节点上执行以下命令来初始化 Swarm:

## 命令语法
docker swarm init --advertise-addr <MANAGER_IP>
[root@k8s-master ~]# docker swarm init --advertise-addr 192.168.234.20
Swarm initialized: current node (tgzgokeov6mrfip4q66kraiww) is now a manager.To add a worker to this swarm, run the following command:docker swarm join --token SWMTKN-1-599natjku2knn7p4wtvkkb0am201nowyvhpu7a73oj3m9wdksp-2sfgdfyr8yhivwjcsiry8a7ht 192.168.234.20:2377To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.[root@k8s-master ~]# 

在这里插入图片描述

3、添加Worker节点到Swarm集群

1、在其他节点上执行以下命令来加入 Swarm 集群:

## 命令语法
docker swarm join --token <TOKEN> <MANAGER_IP>:2377

这里 <TOKEN> 是在上一步初始化 Swarm 时生成的 token,<MANAGER_IP> 是 Swarm Manager 的 IP 地址。

docker swarm join --token SWMTKN-1-599natjku2knn7p4wtvkkb0am201nowyvhpu7a73oj3m9wdksp-2sfgdfyr8yhivwjcsiry8a7ht 192.168.234.20:2377

在这里插入图片描述
在这里插入图片描述

4、 Manager 节点查看集群状态

可以通过以下命令查看 Swarm 集群中所有节点的状态:

docker node ls

在这里插入图片描述

ID:节点的唯一标识符。
HOSTNAME:节点的主机名。
STATUS:节点的状态,包括Ready表示节点正常运行。
AVAILABILITY:节点的可用性状态,Active表示节点处于活动状态。
MANAGER STATUS:节点的管理者状态,Leader表示该节点是Swarm集群的Leader节点,负责管理集群。
ENGINE VERSION:Docker引擎的版本号。

4、Docker Swarm 中常用的一些命令

1、初始化和管理Swarm集群

初始化Swarm:docker swarm init --advertise-addr <MANAGER_IP>
加入节点到Swarm:docker swarm join --token <TOKEN> <MANAGER_IP>:2377
查看Swarm节点列表:docker node ls
查看Swarm服务列表:docker service ls

2、服务管理

创建服务:docker service create <SERVICE_NAME> <IMAGE>
查看服务详情:docker service inspect <SERVICE_ID>
扩容服务:docker service scale <SERVICE_NAME>=<REPLICAS>
更新服务:docker service update --image <NEW_IMAGE> <SERVICE_NAME>
删除服务:docker service rm <SERVICE_NAME>

3、容器管理

查看容器列表:docker ps
查看容器日志:docker logs <CONTAINER_ID>
进入容器:docker exec -it <CONTAINER_ID> /bin/bash
停止容器:docker stop <CONTAINER_ID>
删除容器:docker rm <CONTAINER_ID>

4、节点管理

提升节点为Manager:docker node promote <NODE_ID>
降级节点为Worker:docker node demote <NODE_ID>
从Swarm中删除节点:docker node rm <NODE_ID>

5、其他常用命令

查看Swarm信息:docker info
查看Swarm配置:docker swarm inspect
查看Swarm服务日志:docker service logs <SERVICE_NAME>

🍀🍀🍀 续下一篇:Docker进阶:Docker Swarm —弹性伸缩调整服务的副本数量

在这里插入图片描述


💖The End💖点点关注,收藏不迷路💖

http://www.mrgr.cn/p/00805258

相关文章

ICLR 2024 | FeatUp: A Model-Agnostic Framework for Features at Any Resolution

论文&#xff1a;https://arxiv.org/abs/2403.10516代码&#xff1a;https://github.com/mhamilton723/FeatUp 背景动机 深层特征是计算机视觉研究的基石&#xff0c;捕获图像语义并使社区即使在零或少样本情况下也能解决下游任务。然而&#xff0c;这些特征通常缺乏空间分辨率…

3.2324物理强基小记

物理强基课有人听强基课是听提高,有人听强基课是听水题,有人听强基课是听新课,怎么回事呢?弹簧 类SHMSHM 中,都可以规约成 \(E_p=\dfrac{1}{2}kx^2,E_k=\dfrac{1}{2}mv^2\)例1\(Q\) 固定,\(q\) 穿在绝缘光滑杆,总长 \(l\),一个小移动 \(x\),\(x<<l\)Trick:\((1…

URL编码:原理、应用与安全性

在网络世界中,URL(统一资源定位符)是我们访问网页、发送请求的重要方式。然而,URL 中包含的特殊字符、不安全字符以及保留字符可能会导致传输错误或安全风险。为了解决这些问题,URL 编码应运而生。本文将从概念介绍、编码规则、编码与解码、常见应用场景、历史演变、安全性…

KingbaseES V8R6集群运维案例之---级联备库upstream节点故障

KingbaseES V8R6集群运维案例之---级联备库upstream节点故障案例说明: 在KingbaseES V8R6集群,构建级联备库后,在其upstream的节点故障后,级联备库如何处理? 适用版本:KingbaseES V8R6 集群架构:案例一: 一、配置集群的recovery参数(all nodes) Tips: 关闭备库的aut…

让IIS支持.NET Web Api PUT和DELETE请求

前言 有很长一段时间没有使用过IIS来托管应用了&#xff0c;今天用IIS来托管一个比较老的.NET Fx4.6的项目。发布到线上后居然一直调用不同本地却一直是正常的&#xff0c;关键是POST和GET请求都是正常的&#xff0c;只有PUT和DELETE请求是有问题的。经过一番思考忽然想起来了I…

KingbaseES V8R6运维案例之---归档日志批量解析

案例说明: KingbaseES V8R6数据库的wal日志归档如果通过sys_rman工具执行,默认日志将归档在备份目录下,归档日志被压缩及日志文件名包含随机字符串,在执行sys_waldump时,必须解压缩和改名后才能被识别。 适用版本: KingbaseES V8R6 一、数据库归档及备份配置 1、归档配置…

KingbaseES V8R3集群运维案例之---ssh连接故障failover切换失败分析

案例说明: KingbaseES V8R3集群,主库data挂在目录只读了,failover切换失败。主库failover日志,如下图所示:适用版本:KingbaseES V8R3 集群架构:node 209 原主库node 210 原备库一、分析过程 1、查看主库recovery.log及sys_log,分析主库数据库服务down原因和时间点。 …

wordpress 折腾记

https://www.google.com/url?sa=i&url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FWordPress.com&psig=AOvVaw3Fyww5cObxxZpxCiT0VM2-&ust=1711794593681000&source=images&cd=vfe&opi=89978449&ved=0CBIQjRxqFwoTCKCU9vmhmYUDFQAAAAAdAAAAABAE今天…

计算机网络链路层

数据链路 链路是从一个节点到相邻节点之间的物理线路&#xff08;有线或无线&#xff09; 数据链路是指把实现协议的软件和硬件加到对应链路上。帧是点对点信道的数据链路层的协议数据单元。 点对点信道 通信的主要步骤&#xff1a; 节点a的数据链路层将网络层交下来的包添…

说说HTTP 常见的状态码有哪些,适用场景?

一、是什么 HTTP状态码(英语:HTTP Status Code),用以表示网页服务器超文本传输协议响应状态的3位数字代码 它由 RFC 2616规范定义的,并得到 RFC 2518、RFC 2817、RFC 2295、RFC 2774与 RFC 4918等规范扩展 简单来讲,http状态码的作用是服务器告诉客户端当前请求响应的状态…

Siemens S7-1500TCPU 运动机构系统功能简介

目录 引言&#xff1a; 1.0 术语定义 2.0 基本知识 2.1 运动系统工艺对象 2.2 坐标系与标架 3.0 运动机构系统类型 3.1 直角坐标型 3.2 轮腿型 3.3 平面关节型 3.4 关节型 3.5 并联型 3.6 圆柱坐标型 3.7 三轴型 4.0 运动系统的运动 4.1 运动类型 4.1.1 线性运动…

如何使用 ArcGIS Pro 制作三维建筑

三维地图已经逐渐成为未来地图的趋势&#xff0c;对于大范围应用&#xff0c;只需要普通的建筑体块就行&#xff0c;如果有高程数据&#xff0c;还可以结合地形进行显示&#xff0c;这里为大家介绍一下 ArcGIS Pro 制作三维建筑的方法&#xff0c;希望能对你有所帮助。 数据来…

MCU友好过渡MPU,米尔基于STM32MP135开发板裸机开发应用笔记

以前微处理器(MPU)与微控制器(MCU)是截然不同的两种设备,MPU支持丰富的软件系统,如Linux和相关的软件堆栈,而MCU通常将专注于裸机和RTOS。近年来,随着MCU的性能越来越高,MCU和MPU之间的区别变得越来越模糊。 STM32MP135是一款入门级的高性价比MPU,适用于MCU性能达不到…

【课件】ChatGPT+AI项目实战,打造多端智能虚拟数字人

ChatGPT+AI 技术项目实战,打造多端智能虚拟数字人分享课程——ChatGPT+AI 技术项目实战,打造多端智能虚拟数字人,附源码ChatGPT 全称为 Chat Generative Pre-trained Transformer,一个基于深度学习的大型语言模型,其模型结构使用了 Transformer 网络 。这个网络可以从输入…

2015年认证杯SPSSPRO杯数学建模A题(第二阶段)绳结全过程文档及程序

2015年认证杯SPSSPRO杯数学建模 A题 绳结 原题再现&#xff1a; 给绳索打结是人们在日常生活中常用的技能。对登山、航海、垂钓、野外生存等专门用途&#xff0c;结绳更是必不可少的技能之一。针对不同用途&#xff0c;有多种绳结的编制方法。最简单的绳结&#xff0c;有时称…

如何在极狐GitLab 配置 邮件功能

本文作者:徐晓伟GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。 本文主要讲述了在极狐GitLab 用户找回密码、流水线失败等需要提醒时…

代码随想录算法训练营第六十天 | 84.柱状图中最大的矩形

84. 柱状图中最大的矩形 已解答困难 相关标签相关企业 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。示例 1:输入:heights = [2,1,5,6,2,3] 输出:10 解释:最大的矩形为图中红色区域…

双端队列Deque——ArrayDeque的实现

Deque 接口表示一个双端队列(Double Ended Queue),允许在队列的首尾两端操作,所以既能实现队列行为,也能实现栈行为。Deque常用的两种实现ArrayDeque和LinkedList,这篇主要介绍下Deque的常用操作,并重点看下ArrayDeque的实现逻辑。 1、接口API 1.1、Queue接口Queue 的 A…