Swarm容器叢集部署與節點管理
阿新 • • 發佈:2018-12-26
使用Swarm前提:
Docker版本1.12+
叢集節點之間保證TCP 2377(叢集管理)、TCP/UDP 7946(容器網路發現)和UDP 4789(Overlay網路)埠通訊
節點規劃:
作業系統:CentOS7.4_x64
Manager Worker
Manager 192.168.1.39
Worker01 192.168.1.40
Worker02 192.168.1.42
docker swarm COMMAND 管理Swarm
在192.168.1.39上:
管理節點初始化Swarm:
docker swarm init --advertise-addr 192.168.1.39
此時會生成一串加入叢集的命令:
docker swarm join --token SWMTKN-1-1fu2e5tl80ptxasw95l3l18il0pk5ns4o6augwmkdbyxz8gxj2-3ku5u2q94ckshrpky25f8rkya 192.168.1.39:2377
現在我們可以將命令複製到工作節點加入Swarm:
docker swarm join --token SWMTKN-1-XXX 192.168.0.211:2377
節點管理
建立一個副本數為1的busybox映象
docker service create - -replicas 1 --name hello busybox ping baidu.com
其中ping baidu.com是代表保持busybox的容器程序一直在活動
顯示服務詳細資訊
docker service inspect --pretty hello # 易於閱讀顯示
docker service inspect hello # json格式返回
擴充套件服務例項數
docker service scale hello=3
檢視服務任務
docker service ls
docker service ps hello
只檢視running狀態的hello
docker service ps -f 'desired-state=running' hello
滾動更新服務
docker service create \
--replicas 3 \
--name redis \
--update-delay 10s \
--update-failure-action continue \
redis:3.0.6
update-delay 10s 代表更新時間間隔
update-failure-action continue 代表更新失敗繼續
更新版本:(update-parallelism 3 代表每次執行副本3個)
docker service update --update-parallelism 3 --image redis:3.0.7 redis
檢視更新後版本:
docker service ps -f 'desired-state=running' redis
回滾到上個版本:
docker service update --rollback redis
查看回滾後版本:
docker service ps -f 'desired-state=running' redis
其中比較完善的回滾策略:
建立服務時設定回滾策略
docker service create \
--name redis \
--replicas 10 \
--rollback-parallelism 2 \
--rollback-monitor 20s \
--rollback-max-failure-ratio .2 \
redis:3.0.6