標籤:docker swarm
在上一個小節,我們在一個服務中,擴容了多個執行個體。
在這個小節,我們來部署一個服務,基於redis3.0.6容器鏡像。
然後通過滾動升級,升級到redis3.0.7
docker machine ssh manager1
在swarm中部署 redis3.0.6 ,並配置swarm 10秒的更新延遲
$ docker service create --replicas 3 --name redis --update-delay 10s redis:3.0.60u6a4s31ybk7yw2wyvtikmu50
你可以在部署的時候配置變換的策略
--update-delay 參數用來配置更新服務或者配置任務的延遲時間
T 用來描述 時間的值
Ts 表示多少秒
Tm 表示多少分鐘
Th 表示多少小時
例如 10m30s 表示 10分鐘30秒的延遲
預設情況下,計劃任務在同一時間只更新一個任務。
--update-parallelism 參數可以配置同時更新服務的最大數量
預設情況下,當一個更新一個任務,返回的狀態是 running .計劃任務會計劃更新下一個,直到所有的任務都更新完畢。如果有其他更新的任務返回 failed ,計劃任務將會停止該更新。
你可以通過 --update-failure-action 來控制該行為。
在使用 docker service create 或者是 docker service update 的時候
$ docker service inspect --pretty redisID: 0u6a4s31ybk7yw2wyvtikmu50Name: redisService Mode: Replicated Replicas: 3Placement: Strategy: SpreadUpdateConfig: Parallelism: 1 Delay: 10sContainerSpec: Image: redis:3.0.6Resources:Endpoint Mode: vip
現在你可以更新swarm 叢集中的鏡像了
$ docker service update --image redis:3.0.7 redisredis
預設的變換步驟如下:
停止第一個任務
計劃更新停止的任務
啟動更新完畢的任務
如果更新的任務返回的是running,等待下一個延遲周期,更新下一個任務。
如果更新返回的是failed ,停止更新
$ docker service inspect --pretty redisID: 0u6a4s31ybk7yw2wyvtikmu50Name: redisService Mode: Replicated Replicas: 3Placement: Strategy: SpreadUpdateConfig: Parallelism: 1 Delay: 10sContainerSpec: Image: redis:3.0.7Resources:Endpoint Mode: vip
如果更新失敗,會返回如下的資訊:
$ docker service inspect --pretty redisID: 0u6a4s31ybk7yw2wyvtikmu50Name: 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 <SERVICE-ID>
docker service update redis
為了避免重複更新失敗,你可以需要通過下列的參數來重新設定服務
docker service updatte .
通過以下命令來查看變換
docker service ps <SERVICE-ID>
$ docker service ps redisNAME IMAGE NODE DESIRED STATE CURRENT STATE ERRORredis.1.dos1zffgeofhagnve8w864fco redis:3.0.7 worker1 Running Running 37 seconds \_ redis.1.88rdo6pa52ki8oqx6dogf04fh redis:3.0.6 worker2 Shutdown Shutdown 56 seconds agoredis.2.9l3i4j85517skba5o7tn5m8g0 redis:3.0.7 worker2 Running Running About a minute \_ redis.2.66k185wilg8ele7ntu8f6nj6i redis:3.0.6 worker1 Shutdown Shutdown 2 minutes agoredis.3.egiuiqpzrdbxks3wxgn8qib1g redis:3.0.7 worker1 Running Running 48 seconds \_ redis.3.ctzktfddb2tepkr45qcmqln04 redis:3.0.6 mmanager1 Shutdown Shutdown 2 minutes ago
在所有任務被更新之前,你可以看到有些任務是跑redis:3.0.6, 有些是 redis:3.0.7
本文出自 “清風柳絮” 部落格,請務必保留此出處http://binuu.blog.51cto.com/801317/1942406
07_apply rolling updates to a service