云原生之容器化:Docker三剑客之Docker Swarm

1、何谓Docker Swarm?

Docker Swarm 是 Docker 的集群管理工具。它将 Docker 主机池转变为单个虚拟 Docker 主机。 Docker Swarm 提供了标准的 Docker API,所有任何已经与 Docker 守护程序通信的工具都可以使用 Swarm 轻松地扩展到多个主机。

支持的工具包括但不限于以下各项:

  • Dokku
  • Docker Compose
  • Docker Machine
  • Jenkins

2、原理

如下图所示,swarm 集群由管理节点(manager)和工作节点(work node)构成。

swarm mananger:负责整个集群的管理工作包括集群配置、服务管理等所有跟集群有关的工作。
work node:即图中的 available node,主要负责运行相应的服务来执行任务(task)。

在这里插入图片描述

3、使用

1、创建 swarm 集群管理节点(manager)

环境:

节点IP
manager192.168.1.200
node1192.168.1.211
node2192.168.1.212

初始化 swarm 集群,进行初始化的这台机器,就是集群的管理节点。

docker-machine ssh swarm-manager
docker swarm init --advertise-addr 192.168.1.200

以上输出,证明已经初始化成功。需要把以下这行复制出来,在增加工作节点时会用到:

docker swarm join --token SWMTKN-1-4oogo9qziq768dma0uh3j0z0m5twlm10iynvz7ixza96k6jh9p-ajkb6w7qd06y1e33yrgko64sk 192.168.1.200:2377

2、创建 swarm 集群工作节点(worker)

分别进入192.168.1.211和192.168.1.212两个机器里,指定添加至上一步中创建的集群,这里会用到上一步复制的内容。

运行的命令如下:

docker swarm join --token SWMTKN-1-4oogo9qziq768dma0uh3j0z0m5twlm10iynvz7ixza96k6jh9p-ajkb6w7qd06y1e33yrgko64sk 192.168.1.200:2377

3、查看集群信息

进入管理节点,执行:docker info 可以查看当前集群的信息。

docker info

在这里插入图片描述

通过上图知道当前运行的集群中,有三个节点,其中有一个是管理节点。

在管理节点查看集群信息

docker node ls

在这里插入图片描述

4、部署服务到集群中

注意:跟集群管理有关的任何操作,都是在管理节点上操作的

以下例子,在一个工作节点上创建一个名为 helloworld 的服务,这里是随机指派给一个工作节点:

docker service create --replicas 1 --name helloworld alpine ping docker.com

5、查看服务部署情况

查看 helloworld 服务运行在哪个节点上,可以看到目前是在 work1 节点:

docker service ps helloworld

查看 helloworld 部署的具体信息:

docker service inspect --pretty helloworld

6、扩展集群服务

我们将上述的 helloworld 服务扩展到两个节点。

docker service scale helloworld=2

查看是否扩展

docker service ps helloworld

7、删除服务

docker service rm helloworld

查看是否已删除:

docker service ps helloworld

8、滚动升级服务

以下实例,我们将介绍 nginx 版本如何滚动升级至更高版本。

创建一个 1.15.1 版本的 nginx。

docker service create --replicas 1 --name redis --update-delay 10s nginx:1.15.1

滚动升级 nginx 。

docker service update --image nginx:1.16.0 nginx

查看 nginx 的版本

docker service ps nginx

9、停止某个节点接收新的任务

查看所有的节点:

docker node ls

在这里插入图片描述

目前所有的节点都是 Active, 可以接收新的任务分配。

停止节点 work1:

docker node update --availability drain work1

注意:work1 状态变为 Drain。不会影响到集群的服务,只是 -work1 节点不再接收新的任务,集群的负载能力有所下降。

可以通过以下命令重新激活节点:

docker node update --availability active work1
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

湫一刀

希望大家多多支持

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

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

打赏作者

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

抵扣说明:

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

余额充值