前言:之前都是采用rancher可视化管理工具进行管理K8S进一步管理容器,但是每次机器宕机后rancher中集群特别容易挂掉,出现的问题五花八门,在网上很难搜到解决方案,所以准备采用docker官方集群管理平台Swarm管理容器。

一、docker swarm集群搭建

环境:
主节点manager192.168.1.88
从节点node192.168.1.99
实际上manager也是一个node,manager获取客户端请求,对从节点进行调度工作

1.创建主节点

docker swarm init --advertise-addr 192.168.1.88

执行完成会出现一个注册从节点的命令

2.注册从节点
将上述命令在192.168.1.99上注册

docker swarm join  --token SWMTKN-1-3mhx8nr3g3w1gc6uxyztzoys1v49e8lhqndj6pindvirhzlylk-2ebgshiazezm66cfxhyr6pjth 192.168.1.88:2377

显示注册成功

二、使用集群

在使用之前先看看docker集群swarm的一些命令,其实它的命令和docker的某些命令非常相似,只是多加了一个service

docker service [commond]

命令 用途
create 创建新服务
inspect 展示一个或多个服务的详细信息
logs 查看服务的日志
ls 列出服务
ps 根据名称列出服务
rm 删除一个或多个服务
ps 缩放一个或多个复制服务
update 更新服务

1.查看当前节点信息

docker node ls

2.查看当前网络信息

docker network ls

3.创建一个私有网络,供不同节点互通使用

docker network create -d overlay new_network

4.使用创建的网络部署服务
此处创建一个使用net_network网络且名为my_nginx的服务
–replicas 参数来指定此服务在工作节点上运行的任务数。此处表示一个

docker service create --replicas 1 --network new_network --name my_nginx -p 80:80 nginx:latest

5.查看运行的服务列表

docker service ls


6.查看服务在哪个节点运行

docker service ps my_nginx


7.动态扩容服务数量

docker service scale my_nginx=2
等同于命令docker service update --replicas 3 my_nginx


8.下线/上线节点
下线节点,下线后不参与任务分派,但是如果它原本有容器,那么这些容器会转移到其他可用节点上

docker node update --availability drain node2

上线节点

docker node update --availability active node2

9.移除任务,删除所有容器

docker rm  my_nginx


10.节点离开集群

docker swarm leave (在要离开的节点上运行,在主节点执行则是删除集群,主节点需要在后面加上--force参数)

三、服务和容器的区别

以mysql搭建为例,正常我们使用docker,搭建命令如下:

docker run -p 3306:3306 --name mysql -v /home/mysql/conf:/etc/mysql -v /home/mysql/logs:/var/log/mysql -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

如果我们用服务创建,则命令如下:

docker service create --name=mysql -p 3306:3306 --mount type=bind,src=/home/mysql/logs,dst=/var/log/mysql --mount type=bind,src=/home/mysql/data,dst=/var/lib/mysql --mount type=bind,src=/home/mysql/conf,dst=/etc/mysql --env MYSQL_ROOT_PASSOWORD=123456 mysql:5.7

不难看出来,差别还是挺大的,对应命令下表:

docker swarm
docker run docker service create
-p -p
-v —mount type=bind,src=,dst=
-e –env

四、指定节点运行服务

mysql服务搭建好以后又来了一个问题,我部署服务的时候,它自动给我分配节点,可是我想要指定节点,就需要给每个节点打上标签,在运行服务的时候,指定标签。

1.打标签

docker node update --label-add func=node node1
#func=node是自己指定的键值对,也可以指定其他的,在调用的时候注意替换就好了,node1是我们集群中hostname的名称

2.使用标签指定主机
还是以mysql为例
加上–constraint ‘node.labels.func == node’

docker service create --name=mysql -p 3306:3306 --constraint 'node.labels.func == node'--mount type=bind,src=/home/mysql/logs,dst=/var/log/mysql --mount type=bind,src=/home/mysql/data,dst=/var/lib/mysql --mount type=bind,src=/home/mysql/conf,dst=/etc/mysql --env MYSQL_ROOT_PASSOWORD=123456 mysql:5.7

五、portainer可视化管理Swarm

到这一步集群搭建完成,用portainer容器管理集群更加方便
安装Portainer版本: portainer-ce:2.0.1

汉化地址:https://github.com/eysp/public/releases
采用docker部署:

docker volume create portainer_data
docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:2.0.1

portainer安装参考自:Docker集群可视化管理平台(Portainer)
如果你觉得,我都搭建好了集群,想把portainer加入集群,创建服务用如下命令(如果要指定节点请参考第四章,不指定则默认主节点):

docker service create --name=portainer -p 8000:8000 -p 9000:9000  --mount type=bind,src=//var/run/docker.sock,dst=/var/run/docker.sock --mount type=bind,src=/data/portainer/data,dst=/data --mount type=bind,src=/data/portainer/public,dst=/public portainer/portainer-ce:2.0.1

安装好以后访问IP:9000,输入新密码,进入后它会自动识别主机节点,识别集群的服务和容器

如果还想要添加从节点信息或者其它的docker集群等进行管理,进行配置其它节点或者环境。以下通过agent方式添加
1.进入http://ip:9000/#!/wizard/endpoints

2.在从节点上运行
容器:

docker run --name=portainer_agent -d --restart=unless-stopped \-v /var/run/docker.sock:/var/run/docker.sock \-v portainer_agent:/data/docker/volumes/ \-p 9001:9001 \portainer/agent:latest

服务:

docker service create --name portainer_agent --mode global --mount type=bind,src=//var/run/docker.sock,dst=/var/run/docker.sock --mount type=bind,src=//var/lib/docker/volumes,dst=/var/lib/docker/volumes portainer/agent

然后再页面输入ip:9001,点击添加完成,页面会出现绿色提示成功并刷新集群

如果你打算用服务来管理所有程序,个人觉得一般情况下不用再把从节点注册进来,因为就算注册了,在portainer里面也只有主节点可以看到所有服务。当然,把从从节点注册进去以后可以直接通过界面对从节点的容器和镜像以及存储卷等信息进行管理。更多用法正在完善中。

Docker Swarm集群搭建以及服务命令等操作相关推荐

  1. 【Docker】docker swarm集群搭建和相关命令分享

    Docker swarm 集群通过 docker cli 来创建,并通过docker cli来实现应用的部署和集群的管理. Docker swarm集群的搭建相对简单,这里使用三台虚拟机(一个管理节点 ...

  2. docker swarm 集群搭建与服务更新

    title: "docker swarm 搭建与服务更新"date: 2021-12-15T17:54:53+08:00Description: ""Tags: ...

  3. 正式环境docker部署hyperf_应用部署 - Docker Swarm 集群搭建 - 《Hyperf v1.1.1 开发文档》 - 书栈网 · BookStack...

    Docker Swarm 集群搭建 现阶段,Docker容器技术已经相当成熟,就算是中小型公司也可以基于 Gitlab.Aliyun镜像服务.Docker Swarm 轻松搭建自己的 Docker集群 ...

  4. docker swarm集群搭建及使用Portainer、shipyard

    一.规划 1.swarm01作为manager节点,swarm02和swarm03作为worker节点. # cat /etc/hosts 127.0.0.1 localhost 192.168.13 ...

  5. Docker Swarm集群搭建

    Docker Swarm提供Docker容器集群服务,可以将多个Docker主机封装为单个单行的虚拟Docker主机,快速打造一套容器云平台. DockerSwarm提供很多新特性,如 具有容错能力的 ...

  6. 持续集成docker—第三篇(docker swarm集群搭建)

    一.规划 1.net-master作为manager节点,net-salve作为worker节点. cat >>/etc/hosts<<EOF 47.96.65.70 yund ...

  7. Docker swarm集群搭建教程

    一.什么是Swarm Swarm这个项目名称特别贴切.在Wiki的解释中,Swarm behavior是指动物的群集行为.比如我们常见的蜂群,鱼群,秋天往南飞的雁群都可以称作Swarm behavio ...

  8. Docker swarm 集群搭建

    Swarm是Docker公司在2014年12月初发布的一套较为简单的工具,用来管理docker集群,它将一群Docker宿主机变成一个单一的,虚拟的主机.Swarm使用标准的Docker API接口作 ...

  9. Docker Swarm集群仓库和可视化管理

    Docker Swarm集群仓库和可视化管理 1 背景 2 环境 3 安装操作 3.1 registary部署 3.1.1 下载 3.1.2 部署 3.2 portainer部署 3.2.1 下载 3 ...

最新文章

  1. 关于xilinx fir use reloadable coefficient的用法
  2. Intellij IDEA(Android Studio)好用的插件和软件
  3. c语言和其他高级语言一样也要经过编译,C语言和其他高级语言的最大的区别是什么?...
  4. pandas中drop用法_如何使用drop方法对数据进行删减处理
  5. 委托、Lambda表达式和事件
  6. 攻防世界 适合做桌面_空间“狭小”的二人世界,适合情侣们做浪漫的事情
  7. android 充电动画_iPhone 12充电测试:18/20W并无明显区别
  8. 企业网站 源码 服务邮箱:_后来才知道:温州腾讯企业邮箱定制服务
  9. python的核心理念_python核心基础 - 草稿
  10. php如何输出换行,PHP怎样才能让输出的内容自动换行
  11. autocad不能画图_最新AutoCAD软件+插件合集+视频讲解,高效实用,限时领
  12. 行业报告归档 2019.2.8
  13. 【离散数学】高级计数技术
  14. windows 优化详解
  15. adf的主要功能之一是_ADF 入门第一步系列
  16. oa系统 云服务器配置,oa系统云服务器配置
  17. CLion 的 Debug 模式是怎么回事
  18. 16个tomcat面试题
  19. 探索 Flutter 模拟事件触发 | 开发者说·DTalk
  20. Pycharm——取消自动保存

热门文章

  1. 【win10小技巧】解决windows 10睡眠后再唤醒,就会自动关机并重启的问题(仅限Dell)
  2. 国仁网络资讯:快手小店通投放转化效果怎么样;快手小店通的优势好处有什么。
  3. 他们是你学生时期的噩梦,但现在你可以把他们按在墙上摩擦了……
  4. linux php curl 升级,ubuntu14.04升级php curl,支持http2发送APNs
  5. ORB特征提取详解 BRUEF rBRIEF steered BRIEF
  6. 本地使用 Docker Compose 与 Nestjs 快速构建基于 Dapr 的 Redis 发布/订阅分布式应用...
  7. 大学毕业生到底要不要选择3D建模?
  8. MySQL基础篇 | 聚合(分组)函数 、分组查询
  9. prop和attr的区别
  10. 什么是Web浏览器?