Docker容器虚拟化技术---Docker运维管理(Swarm集群管理)3

Docker容器虚拟化技术—Docker运维管理(Swarm集群管理)3



Swarm集群管理

docker swarm是docker官方提供的一套容器编排系统,是Docker公司推出的官方容器集群平台。

基于Go语言实现。它的架构如下:
在这里插入图片描述

1 Swarm的核心概念

1.1 集群

一个集群由多个 Docker 主机组成,这些Docker主机以集群模式运行,并充当管理者(用于管理成员资格和委派)和工作人员(运行集群服务)

与独立容器相比,集群服务的主要优势之一是,可以修改服务的配置,包括它所连接的网络和卷,而无需手动重新启动服务。

独立容器和集群服务之间的主要区别在于,只有集群管理器可以管理集群,而独立容器可以在任何守护程序上启动。

1.2 节点

swarm是一系列节点的集合,而节点可以是一台裸机或者一台虚拟机。一个节点能扮演一个或者两个角色,manager或者worker

manager节点
Docker Swarm集群需要至少一个manager节点,节点之间使用 Raft consensus protocol 进行协同工作。 通常,第一个启用docker swarm的节点将成为leader,后来加入的都是follower。

当前的leader如果挂掉,剩余的节点将重新选举出一个新的leader。 每一个manager都有一个完整的当前集群状态的副本,可以保证manager的高可用

worker节点
worker节点是运行实际应用服务的容器所在的地方。理论上,一个manager节点也能同时成为worker节点,但在生产环境中,我们不建议这样做。 worker节点之间,通过 control plane 进行通信,这种通信使用 gossip 协议,并且是异步的

1.3 服务和任务

集群中的stacks, services, tasks的关系,如下图:
在这里插入图片描述
services(服务)
swarm service是一个抽象的概念,它只是一个对运行在swarm集群上的应用服务,所期望状态的描述。它就像一个描述了下面物品的清单列表一样:

  • 服务名称
  • 使用哪个镜像来创建容器
  • 要运行多少个副本
  • 服务的容器要连接到哪个网络上
  • 应该映射哪些端口

task(任务)
在Docker Swarm中,task是一个部署的最小单元,task与容器是一对一的关系

stack(栈)
stack是描述一系列相关services的集合。我们通过在一个YAML文件中来定义一个stack

1.4 负载均衡

集群管理器使用入口负载平衡将要从集群外部获取的服务公开给集群。
集群管理器可以自动为服务分配一个已发布端口,也可以为该服务配置一个已发布端口。
可以指定任何未使用的端口。如果未指定端口,则集群管理器会为服务分配 30000-32767 范围内的端口。

集群模式具有一个内部DNS组件,该组件自动为群集中的每个服务分配一个DNS条目。
集群管理器使用内部负载平衡根据服务的DNS名称在群集内的服务之间分配请求。

2 Swarm安装

对于Docker 1.12+版本,Swarm相关命令已经原生嵌入到了Docker Engine中

2.1 下载镜像
	docker pull swarm

在这里插入图片描述

	docker images

在这里插入图片描述

2.2 查看版本
# 查看版本 
	docker run --rm swarm -v

在这里插入图片描述

3 Swarm集群

3.1 创建新集群
	docker swarm init --advertise-addr 192.168.80.60 

在这里插入图片描述

上面命令执行后,该机器自动加入到swarm集群。这个会创建一个集群token,获取全球唯一的 token,作为集群唯一标识。后续将其他节点加入集群都会用到这个token值。

其中,–advertise-addr参数表示其它swarm中的worker节点使用此ip地址与manager联系。命令的输 出包含了其它节点如何加入集群的命令。

# 将节点强制驱除集群 
	docker swarm leave --force
3.2 查看集群状态和节点信息
	docker info 

在这里插入图片描述

	docker node ls

在这里插入图片描述

3.3 添加工作节点到集群

创建了一个swarm集群与管理器节点,就可以添加工作节点。

  • 新创建虚拟机dockerManager
  • 在工作节点192.168.80.70上安装docker和docker swarm

在这里插入图片描述

在工作节点192.168.80.70上添加工作节点到集群命令:

docker swarm join --token SWMTKN-1-0i3j7ach1qm8feoewpka6lg84judwrzt5z762hhn9a40dq5xj2-56blivoil7tr4dgef1vwcwglf 192.168.146.60:2377

在这里插入图片描述

如果忘记了token的值,在管理节点192.168.80.60上执行下述命令(在管理节点上运行)

	docker swarm join-token manager 
	docker swarm join-token worker 

在这里插入图片描述

在管理节点192.168.80.60上查看节点信息(在管理节点上运行)

	docker node ls

在这里插入图片描述

3.4 发布服务到集群(在管理节点上运行)

在管理节点192.168.80.60上

	docker service create  -p 80:80  --replicas 2 --name nginx1 nginx 
	
	# 参数介绍
		-p :端口映射
		--replicas:运行实例个数
		--name:服务名
		nginx : 镜像名称

在这里插入图片描述

在这里插入图片描述
查看哪些节点正在运行服务(在管理节点上运行)

	docker service ps nginx1

在这里插入图片描述

停止并删除发布的服务(在管理节点上运行)

	docker service rm nginx1

在这里插入图片描述

在工作节点上运行的命令

	docker ps

在这里插入图片描述

3.5 扩展一个或多个服务

在这里插入图片描述

	docker service scale mynginx=3
	
		
	docker service ls
	docker service ps mynginx

在这里插入图片描述

3.6 更新服务
	docker service update --publish-rm 80:80 --publish-add 88:80 nginx1

在这里插入图片描述

3.7 节点管理
命令名称说明
docker node demote从群集(swarm)管理器中降级一个或多个节点
docker node inspect显示一个或多个节点的详细信息
docker node ls列出群集(swarm)中的节点
docker node promote从群集(swarm)管理器中升级一个或多个节点
docker node ps列出在一个或多个节点上运行的任务,默认为当前节点
docker node rm从群集(swarm)删除一个或多个节点
docker node update更新一个节点
#给工作节点(localhost.localdomain,可以设置主机名更改节点名称)添加worker1标签
	docker node update --label-add  myworker1 localhost.localdomain

在这里插入图片描述

#给工作节点(localhost.localdomain)节点停用 
	docker node update --availability drain localhost.localdomain 

在这里插入图片描述

#停止工作节点(localhost.localdomain)
	docker systemctl stop docker 

在这里插入图片描述

#删除工作节点(localhost.localdomain),需要先停止工作节点,才能删除
	docker node rm localhost.localdomain

在这里插入图片描述

3.8 如果添加工作节点到集群中报错

在这里插入图片描述

解决:防火墙没关

		管理节点关闭防火墙

在这里插入图片描述

	工作节点关闭防火墙,重新加入swarm集群

在这里插入图片描述



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

穿城大饼

你的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值