swarm的使用和滚动升级

1. 开启 docker

systemctl start docker

2. 创建 swarm 集群

docker swarm init

Swarm initialized: current node (6sn1m12dlxmaj090ge4b4zf1l) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join \
    --token SWMTKN-1-2v9j04bc95yfxchueu7zi4fs56w07ob57wr29vk29m6nwiyg4q-9ia9c2xrzfohpa0wx6vd8n0v0 \
    192.168.126.129:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

添加节点到集群

    docker swarm join \
    --token SWMTKN-1-2v9j04bc95yfxchueu7zi4fs56w07ob57wr29vk29m6nwiyg4q-9ia9c2xrzfohpa0wx6vd8n0v0 \
    192.168.126.129:2377

将上面的复制粘贴到你要添加的节点(主机)上去运行,这样就完成了将节点添加到集群

在manager节点上查看节点的命令
docker node ls

发布服务

在 manager 上执行如下命令

[vagrant@centos01 ~]$ docker service create --replicas 1 --name helloworld alpine ping docker.com
6gxhvlwx8uqbio7fn2yxnw1yg

docker service create --replicas 2 -p 8099:80 --name MyfirstDevops nginx
  • docker service create 命令创建一个 service
  • –name 标签命名 service 为 helloworld / MyfirstDevops
  • –replicas 标签来详细声明 1 / 2 个运行实体
  • 参数alpine ping docker.com定义执行ping docker.com作为alpine容器的服务.

使用docker service ls查看服务

[vagrant@centos01 ~]$ docker service ls
ID            NAME        SCALE  IMAGE   COMMAND
6gxhvlwx8uqb  helloworld  1      alpine  ping docker.com

使用docker service inspect审查服务

[vagrant@centos01 ~]$ docker service inspect --pretty helloworld
ID:     6gxhvlwx8uqbio7fn2yxnw1yg
Name:       helloworld
Mode:       REPLICATED
 Replicas:      1
Placement:
 Strategy:  SPREAD
UpateConfig:
 Parallelism:   1
ContainerSpec:
 Image:     alpine
 Args:  ping docker.com

使用docker service tasks 查看服务运行在哪个节点上

[vagrant@centos01 ~]$ docker service tasks helloworld
ID                         NAME          SERVICE     IMAGE   LAST STATE          DESIRED STATE  NODE
30nkhczhr8g1ot6jh9couixed  helloworld.1  helloworld  alpine  Running 10 minutes  Running        centos01
[vagrant@centos01 ~]$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
8b1e88baadfd        alpine:latest       "ping docker.com"   10 minutes ago      Up 10 minutes                           helloworld.1.30nkhczhr8g1ot6jh9couixed

docker service scale 修改 service 规模

docker service scale MyfirstDevops=5

开启 5 个 MyfirstDevops 的 service 规模

删除 service

docker service rm MyfirstDevops

删除 MyfirstDevops 服务

离开(删除)节点

docker swarm leave --force

滚动升级

Swarm 将按照如下步骤执行滚动更新:

1、停止第一个副本。

2、调度任务,选择 worker node。

3、在 worker 上用新的镜像启动副本。

4、如果副本(容器)运行成功,继续更新下一个副本;如果失败,暂停整个更新过程。

docker service ps 查看更新结果。

默认配置下,Swarm 一次只更新一个副本,并且两个副本之间没有等待时间。我们可以通过 --update-parallelism 设置并行更新的副本数目,通过 --update-delay 指定滚动更新的间隔时间。

比如执行如下命令:

docker service update --replicas 6 --update-parallelism 2 --update-delay 1m30s my_web
service 增加到六个副本,每次更新两个副本,间隔时间一分半钟。

docker service inspect 查看 service 的当前配置。

docker service ps 确保6个副本处于正常状态。

docker service update --image httpd:2.4.16 my_web

Swarm 还有个方便的功能是回滚,如果更新后效果不理想,可以通过 --rollback 快速恢复到更新之前的状态。

docker service updata -rollback my_web

请注意,--rollback 只能回滚到上一次执行 docker service update 之前的状态,并不能无限制地回滚。

滚动更新就讨论到这里,下一节我们学习 Docker Swarm 如何管理数据。

node 下线

有些时候需要维护一个节点,此时此节点可能会网络断开或者需要关机,造成节点上服务可用。使用docker node update --availability drain 将节点下线,swarm会将当前节点上的容器关闭并在其他节点上启动。当维护完成,需要上线是,将节点状态修改为active状态即可,命令如下:docker node update --availability active

猜你喜欢

转载自blog.csdn.net/qq_33236487/article/details/83830996
今日推荐