07_apply rolling updates to a service

來源:互聯網
上載者:User

標籤: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


預設的變換步驟如下:

  1. 停止第一個任務

  2. 計劃更新停止的任務

  3. 啟動更新完畢的任務

  4. 如果更新的任務返回的是running,等待下一個延遲周期,更新下一個任務。

  5. 如果更新返回的是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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.