swarmkit的預設執行器為docker容器執行器(docker container executor);
管理節點負責接收和響應使用者的請求,将叢集狀态調節成最終狀态。
使用者可以動态調整節點的角色。任務被組合成為服務,服務定義了任務類型和任務運作和更新的方式(如任務運作數量、啟動間隔等)。特性服務編排swarmkit在服務編排方面的特性主要有:服務狀态一緻性:swarmkit會不斷對比服務期望狀态和實際狀态,發現二者不符時(如服務擴容、節點失效),swarmkit會自動将服務中的任務排程到其他節點。
服務類型:目前swarmkit支援兩種服務類型
複制型服務(replicated services),針對這類服務swarmkit會在節點上啟動期望數量的副本;
全局服務(global services),這類服務swarmkit會在所有可用幾點上啟動一個任務;
配置項更新:使用者可以在任何時候修改服務的一個或多個配置。當配置被修改後,swarmkit會協調更新服務中的所有任務,預設的更新政策是批量同時更新。目前支援的更新政策選項有:
并行度:定義并行更新的任務數量;
延遲:設定一組更新完成之後的最小等待時間。當配置更新時,swarmkit會重新開機任務,并且等待任務狀态為運作中,再等待配置的延遲後,繼續執行後續的更新批次;
重新開機政策:使用者可以定制重新開機的條件、延遲和最大嘗試次數。swarmkit會檢測任務狀态,并按照這些配置進行重新開機,同時swarmkit會決定是否在不同節點啟動任務,避免失效節點對服務産生影響。
排程swarmkit在排程功能上功能有:資源感覺:swarmkit能夠感覺節點上的資源,并以此配置設定和執行任務。
資源限制:使用者可以通過限制表達式,将任務限制到符合表達式的節點上。對節點的限制條件包括節點id、名稱和标簽等。
排程政策:目前swarmkit實作的排程政策是在滿足限制條件的前提下,盡可能的配置設定到負載最低的節點。
叢集管理swarmkit對于叢集及其節點的管理支援:狀态存儲:swarmkit在記憶體中維護叢集的狀态,并能夠在叢集狀态發生異常時迅速作出調整;
拓撲狀态管理:swarmkit支援通過api或者指令行動态修改節點角色;
節點管理:swarmkit api支援使用者修改節點狀态。例如可以将節點狀态設定為中止(paused),以避免在該節點上建立新的任務;或者設定為枯竭(drained)狀态,除了禁止建立新任務外,目前節點上的其他任務也會被排程到其他節點上。
總結相比于之前的swarm,swarmkit使用更加友善,無需再依賴外部協調軟體進行服務發現。同時對容器運作進行了抽象,api更加間接。swarmkit特性和其他服務編排架構如mesos,kubernetes等比較類似,目前swarmkit還在活躍開發中,能否攻城略地,讓我們拭目以待吧。
本文轉自d1net(轉載)