由於要進行服務的微服務化部署,由於硬件限制,我們目前采用的是Swarm作為容器編排的工具。對應於k8s中的pod,swarm中有dab這種概念,即分布式應用包,目前還沒有去探索這個的使用,由於還是實驗性的特性,目前還不涉及,這裏主要還是通過docker-compose.yaml的方式將多個微服務統壹運維。
使用的是 docker stack deploy <args> 命令進行的部署。
官網上該命令有如下的參數:
由於使用的是docker-compose文件,這裏直接通過 compose-file 進行部署即可,例如官網的例子
甚至可以通過疊加compose文件,來修改前壹個文件中的配置
那麽再來看看其他的可選命令:
namespace 和 kubeconfig 是k8s的專屬命令,這裏就不做過多解釋,直接看swarm相關的。
目前覺得 prune 這個參數比較關鍵,可以把壹些down掉的service進行自動清理。
如何通過 docker-compose.yml 配置文件進行集群化部署呢?
首先需要知道的,docker-compose文件中哪個部分主要對應了swarm中的運維需求,答案就是 deploy 參數下的各種配置。
上圖中的配置壹個個來看;
首先來看,最下面標註的 docker stack deploy不支持的參數 ,具體可以參考下圖:
上面的參數,就算yaml中包含,在stack的時候也會被忽略,當然也可以為了 docker-compose up 留著這些配置。
這個命令是在 3.2 版本中開始引入的,主要是用於指定服務發現方法,以方便外部的客戶端連接到swarm
主要包含兩個:
標簽是用於service之上,並非附加在service中的容器上。
如果像將其附在所有容器上,則在 deploy 之外定義labels.
用於指定是以 副本模式(默認) 啟動還是 全局模式 ,如果是 全局模式 ,類似於開始於k8s中的DaemonSet,會在每個節點上啟動且只啟動壹個服務。
這個參數在運維的時候尤為關鍵 ,主要用於指定 容忍 和 偏好 ,這個在k8s中同樣有對應的概念
其中, 容忍 包含了:
至於 偏好 ,只有壹個參數,就是 spread ,其參數值為節點的屬性,即容忍表中的內容。
這個是3.8中添加的配置。
字面意思,就是控制每個節點上最多的副本數
用於指定副本數,只有mode為副本模式的時候生效。
這個參數在運維的時候尤為關鍵 ,主要用於限制服務的資源。
limit用於限制最大的資源使用數量,reservation為最低的資源占用量。
重啟策略
3.7版本加入
用於指定回滾的策略
用於指定升級的策略
以上。