docker-swarm 节点增加、删除、权限提升、降低、服务部署、配置可视化界面、stack等一系列操作

一、部署环境准备

系统版本:centos :7.8
docker-swarm 至少需要三个节点 所以需要准备三台机器(本文使用虚拟机 虚拟三台 centos机器)配置如下
节点信息

#修改主机名
hostnamectl set-hostname manager-01
主机ip地址说明
manager-01192.168.198.106swarm-manager节点
work-01192.168.198.107swarm-work01节点
work-02192.168.198.108swarm-work02节点

硬件要求:

硬件资源最小配置推荐配置
CPU1CPU2CPU
内存1G2-4G
硬盘20G50G

docker版本:20.10.10

二、初始化docker-swarm 管理节点

#advertise-addr 来指定其他节点连接m0时的地址
#来指定其他节点连接m0时的地址 来指定其他节点连接m0时的地址
#来指定其他节点连接m0时的地址
docker swarm init --advertise-addr 192.168.198.106:2377 --listen-addr
192.168.198.106:2377
#查看节点信息
docker node ls
#查看网络信息 docker-swarm 初始化时会创建一个类型为overlay的网络
docker network ls

执行docker node ls 命令结果如下:
在这里插入图片描述

执行 docker netwok ls 命令结果如下:
在这里插入图片描述

三、节点 添加、删除、权限提升、降低

3.1 添加manager 节点 –token 会失效 时效为24小时 以后添加节点时 执行 docker swarm join-token 获取最新的token 标记文本

#在manager节点执行。可以作为manager节点加入集群
docker swarm join-token manager

复制以下内容在其他两台worker主机 上执行 即可将执行的主机 以manager 权限添加到doker-swarm 集群中
![在这里插入图片描述](https://img-blog.csdnimg.cn/f6c71ed223bf4c138554b163c42577b1.png

3.2 添加worker 节点 –token 会失效 时效为24小时 以后添加节点时 执行 docker swarm join-token 获取最新的token

#在manager节点执行。可以作为worker节点加入集群
docker swarm join-token worker

复制以下内容在其他两台worker主机 上执行 即可将执行的主机 以worker 权限添加到doker-swarm 集群中
在这里插入图片描述
节点添加成功后 如下图所示(59.16 59.17 为manager 节点,59.18为worker节点)

MANAGER STATUS列说明:
Leader 意味着该节点是使得群的所有群管理和编排决策的主要管理器节点。
:Reachable 意味着节点是管理者节点正在参与Raft共识。如果领导节点不可用,则该节点有资格被选为新领导者。
:Unavailable 意味着节点是不能与其他管理器通信的管理器。如果管理器节点不可用,您应该将新的管理器节点加入群集,或者将工作器节点升级为管理器。
AVAILABILITY列说明:
Active 意味着调度程序可以将任务分配给节点。
Pause 意味着调度程序不会将新任务分配给节点,但现有任务仍在运行。
Drain 意味着调度程序不会向节点分配新任务。调度程序关闭所有现有任务并在可用节点上调度它们。

在这里插入图片描述

3.3 节点权限提升降低

#将worker节点提升为manager节点,在manager节点执行如下命令:
docker node promote work-01
docker node ls
#将manager节点降低为worker节点,在manager节点执行如下命令:
docker node demote work-02
docker node ls

3.4 脱离集群

#想要那个节点脱离集群就在那个节点下执行以下命令
docker swarm leave

在这里插入图片描述

3.5 删除已经脱离集群的节点

#删除已经脱离集群的work-02节点 ps:如果是多个manager节点中的其中一个节点需要先将节点降为worker节点才能删除
docker node rm work-02
#manager节点只能强制退出 manager退出后意味着整个swarm不复存在。
docker swarm leave --force

在这里插入图片描述

四、安装图形界面

4.1 拉取visualizer 镜像

docker pull dockersamples/visualizer:latest

4.2 创建容器并运行(需要运行在manager节点的主机上)

 docker run -itd --name visualizer -p 8099:8080 -e HOST=192.168.59.16 -e PORT=8080 -v /var/run/docker.sock:/var/run/docker.sock dockersamples/visualizer:latest
 #或者使用以下命令  可以通过集群中所有ip+port进行访问
 docker service create \
--name=viz \
--publish=8080:8080/tcp \
--constraint=node.role==manager \
--mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
dockersamples/visualizer

4.3 安装完成后通过 http://ip:8099 访问
在这里插入图片描述

五、创建服务(安装nginx)

5.1 三台主机都下载以下nginx镜像

docker pull nginx:1.18.0-alpine
docker pull nginx:1.19.3-alpine

5.2 部署nginx(通过任意集群内节点的ip+port都可访问)

#在manager节点中创建overlay网络:
docker network create -d overlay nginx-net
#创建5个nginx:alpines容器的集群:
docker service create --name nginx --network nginx-net -p 80:80 --replicas 5 nginx:1.18.0-alpine
#在manager节点使用docker service ls 命令查看服务情况,worker节点无法查看:
docker service ls
#在manager或者worker节点都可以执行docker ps命令查看本虚拟机容器情况:
docker ps
#manager节点只用于管理集群,不希望部署服务。
docker node update --availability drain manager-01
#使用docker service scale nginx=2命令将服务缩减为2个容器:
docker service scale nginx=2

在这里插入图片描述
5.3 升级nginx版本

docker service update --image nginx:1.19.3-alpine nginx

在这里插入图片描述
5.4 添加过更新一个对外暴露接口

docker service update --publish-add 8090:80 nginx

5.5 删除服务

#删除服务
docker service rm nginx
#删除网络
docker network rm nginx-net

六、stack命令

6.1 创建docker-compose.yml 文件 内容如下:

#stack 最低支持版本为 3
version: "3"
  services:
    nginx-web: # 服务名称
    image: nginx:1.19.3-alpine  # 镜像名称
    container_name: nginx # 容器名称
  networks: 
  - nginx-net #指定网络
  restart: always #重启策略
  ports:
  - 81:80 #挂载端口
  deploy:
    replicas: 5  #生成实例数量
networks:
  nginx-net: #需要创建的网络名称
    driver: overlay #指定网络类型

6.2 运行nginx

#在manager节点中创建docker-compose.yml文件。执行如下命令:
docker stack deploy nginx-stack --compose-file=docker-compose.yml 或者是
docker stack deploy nginx-stack -c docker-compose.yml
#查看stack服务运行情况。执行如下命令:
docker stack services nginx-stack
#查看5个容器运行在哪个节点中。执行如下命令:
docker service ls #查看到NAME中的服务名为:nginx-stack_nginx-web
docker service ps nginx-stack_nginx-web

七、常用命令如下:

swarm命令

命令描述
docker swarm join初始化一个 swarm 群集
docker swarm join加入群集作为节点或管理器
docker swarm join-token管理用于加入群集的令牌
docker swarm leave离开 swarm 群集
docker swarm unlock解锁 swarm 群集
docker swarm unlock-key管理解锁钥匙
docker swarm update更新 swarm 群集

node命令

命令描述
docker node demote从 swarm 群集管理器中降级一个或多个节点
docker node inspect显示一个或多个节点的详细信息
docker node ls列出 swarm 群集中的节点
docker node promote将一个或多个节点推入到群集管理器中
docker node ps列出在一个或多个节点上运行的任务,默认为当前节点
docker node rm从 swarm 群集删除一个或多个节点
docker node update更新一个节点

service 命令

命令描述
docker service create创建服务
docker service inspect显示一个或多个服务的详细信息
docker service logs获取服务的日志
docker service ls列出服务
docker service rm删除一个或多个服务
docker service scale设置服务的实例数量
docker service update更新服务
docker service rollback恢复服务至update之前的配置

stack命令

命令描述
docker stack deploy部署新的堆栈或更新现有堆栈
docker stack ls列出现有堆栈
docker stack ps列出堆栈中的任务
docker stack rm删除一个或多个堆栈
docker stack services列出堆栈中的服务
  • 1
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值