Linux入门教程:管理swarm(10) – swarm实践 – 滚动更新服务,在本文中,我们尝试部
Linux入门教程:管理swarm(10) – swarm实践 – 滚动更新服务,在本文中,我们尝试部
在上一篇文章中你更新了服务的实例数。在本文中,我们尝试部署一个Redis 3.0.6的容器服务。然后使用滚动更新把它升级到Redis 3.0.7。
1.登录manger1机器。
2.部署Redis 3.0.6到swarm和配置swarm为10秒更新延迟:
在服务部署时你配置了滚动更新策略。
–update-delay参数配置更新服务任务之间的延迟时间或一组任务之间的延迟时间。你可以以秒s,分m,时h单位来配置延迟时间。所以10m30s表示10分钟30秒的延迟。
默认情况下,调度程序一次执行一个更新任务。你可以传递–update-parallelism参数来配置调度程序同时执行的最大更新服务任务数。
默认情况下,当单个更新任务返回RUNNING的状态时,调度器调度继续其它任务直到所有任务更新完成。如果在更新任务期间的任何时候一个任务返回FAILED,调度器暂停更新。你可以在docker service create或docker service update时使用–update-failure-action来控制其行为。
3.查看redis服务:
4.现在开始更新redis容器。swarm管理器根据UpdateConfig策略来对节点应用更新:
$ docker service update --image redis:3.0.7 redis redis默认情况下调度器应用滚动更新的步骤如下:
停止第一个任务。 对已停止的任务执行更新。 启动已经完成更新的容器。 如果更新任务返回RUNNING,等待一个指定的延迟然后停止下一个任务。 如果在任何时候任务返回FAIlED,停止更新。5.执行docker service inspect –pretty redis命令来查看当前状态:
$ docker service inspect --pretty redis ID: 0u6a4s31ybk7yw2wyvtikmu50 Name: redis Mode: Replicated Replicas: 3 Placement: Strategy: Spread UpdateConfig: Parallelism: 1 Delay: 10s ContainerSpec: Image: redis:3.0.7 Resources:如果更新暂时,下面是service inspect的输出:
$ docker service inspect --pretty redis ID: 0u6a4s31ybk7yw2wyvtikmu50 Name: redis ...snip... Update status: State: paused Started: 11 seconds ago Message: update paused due to failure or early termination of task 9p7ith557h8ndf0ui9s0q951b ...snip...执行docker service update
6.执行docker service ps
在swarm更新完所有的任务前,你会看到有些节点运行着redis:3.0.6,而有些运行redis:3.0.7。
评论暂时关闭