目前主要的容器管理技術是以Docker為主流,其中Google Kubernetes雖是最盛行的容器調度平台,但另一方面,Docker Swarm卻占有Docker原生與組態設定較為簡單的優勢,所以也受到不少使用者的支持。本文將介紹Docker Swarm容器調度管理平台的特色,並實際示範如何部署及設定。
根據知名市調機構RightScale在最新一期的「2018 State of the Cloud Report」調查報告中指出,目前在企業和組織當中使用的容器技術,主要是以Docker做為主要的容器管理技術。
至於在容器「調度」(Orchestration)方面,調查報告則顯示是以Kubernetes(K8S)為首要,同時K8S也是成長最快速的容器調度平台,如圖1所示。
|
▲圖1 RightScale市調統計結果,企業用於管理容器技術的優先順序。(圖片來源:RightScale - 2018 State of the Cloud Report)
|
什麼是Docker Swarm
簡單來說,當企業和組織的IT管理人員要使用容器技術時,只要透過Docker容器管理技術即可使用。然而,隨著企業和組織使用容器的數量逐漸變多時,便需要有一個能夠管理及調度眾多容器的平台,而Docker Swarm就是Docker公司所推出原生的容器調度管理平台。
Docker Swarm特色功能介紹
雖然在目前市場上主流的容器調度平台為Google推出的K8S(Kubernetes),但是Docker Swarm擁有Docker原生與組態設定較為簡單的優勢,所以在市場上的容器調度管理平台中仍占有一席之地,下列便是Docker Swarm容器調度管理平台的特色功能:
原生內建
從Docker 1.12版本之後,在Docker Engine中便直接原生內建Docker Swarm Mode(免費使用的Docker CE社群版本也支援)。只要透過Docker Engine CLI/API即可建立及管理Docker Swarm叢集,無須額外安裝及組態設定。
分散式設計
在小架構規模中,可以在1台Docker Host上同時運作Docker Swarm Services和Standalone Container角色。在中大型架構和規模內,可在Docker Swarm叢集中規劃Manager/Worker角色,即便運作環境中沒有共享儲存資源也沒有問題。
宣告式服務模組
在Docker Swarm叢集運作架構中,Docker Engine將會透過此種方式來定義應用程式堆疊。
容器規模縮放機制
管理人員可透過Swarm Managers管理機制,視容器的工作負載需求,隨時調整容器的運作規模大小(增加或減少運作中的容器數量)。
預期狀態調節
在Docker Swarm叢集運作架構內,會透過Docker Host的Swarm Managers管理機制,持續監控叢集的運作狀態並調度容器。舉例來說,在Swarm Worker角色中總共運作10個容器,但其中有2個容器因為Swarm Worker主機發生故障而停止服務,此時Swarm Managers管理機制就會在其他「存活」的Swarm Worker主機上再啟動2個容器。
跨主機網路環境
透過內建的Docker Overlay Network網路機制,在Docker Swarm叢集運作架構中,達成跨多台Docker Host主機互相溝通的網路機制。
自動探索服務機制
在Docker Swarm叢集運作架構中,會為「每項服務」分配唯一的Unique DNS Name,以便將使用者的服務請求工作負載平均分配至每個容器。管理人員也可視工作負載需求,搭配外部負載平衡機制,將服務請求工作負載平均分配給每個容器。
預設啟用TLS安全機制
在預設情況下,每台Docker Swarm節點主機之間會採用TLS相互認證與加密,如圖2所示,管理人員也可以搭配「--external-ca」參數指定採用公開Root CA或自簽CA。同時,當Docker Swarm叢集初始化完成後,系統會自動產生Manager Token和Worker Token,以便後續新加入的Docker Swarm節點主機使用。
值得注意的是,採用預設的TLS憑證,將會「每3個月」更新憑證,管理人員可透過參數「docker swarm update --cert-expiry