Docker發佈集羣工具SwarmKit

轉自infoq

最近Docker公司開源了Docker集羣管理和容器編排工具SwarmKit,其主要功能包括節點發現、基於raft算法的一致性和任務調度等。

基本概念

服務器上運行SwarmKit工具的swarmd命令後,即可將其加入到服務器集羣中,該服務器就成爲集羣中的一個節點。SwarmKit將節點分爲兩類:

  • 工作節點 負責通過執行器運行任務。SwarmKit的默認執行器爲Docker容器執行器(Docker Container Executor);
  • 管理節點 負責接收和響應用戶的請求,將集羣狀態調節成最終狀態。
    用戶可以動態調整節點的角色。

任務被組合成爲服務,服務定義了任務類型和任務運行和更新的方式(如任務運行數量、啓動間隔等)。

特性

服務編排

SwarmKit在服務編排方面的特性主要有:

  • 服務狀態一致性:SwarmKit會不斷對比服務期望狀態和實際狀態,發現二者不符時(如服務擴容、節點失效),SwarmKit會自動將服務中的任務調度到其他節點。
  • 服務類型:目前SwarmKit支持兩種服務類型
    1. 複製型服務(Replicated Services),針對這類服務SwarmKit會在節點上啓動期望數量的副本;
    2. 全局服務(Global Services),這類服務SwarmKit會在所有可用幾點上啓動一個任務;
  • 配置項升級:用戶可以在任何時候修改服務的一個或多個配置。當配置被修改後,SwarmKit會協調升級服務中的所有任務,默認的升級策略是批量同時升級。目前支持的升級策略選項有:
    1. 並行度:定義並行更新的任務數量;
    2. 延遲:設置一組更新完成之後的最小等待時間。當配置升級時,SwarmKit會重啓任務,並且等待任務狀態爲運行中,再等待配置的延遲後,繼續執行後續的更新批次;
  • 重啓策略:用戶可以定製重啓的條件、延遲和最大嘗試次數。SwarmKit會檢測任務狀態,並按照這些配置進行重啓,同時SwarmKit會決定是否在不同節點啓動任務,避免失效節點對服務產生影響。

調度

SwarmKit在調度功能上功能有:

  • 資源感知:SwarmKit能夠感知節點上的資源,並以此分配和執行任務。
  • 資源約束:用戶可以通過約束表達式,將任務約束到符合表達式的節點上。對節點的約束條件包括節點ID、名稱和標籤等。
  • 調度策略:目前SwarmKit實現的調度策略是在滿足約束條件的前提下,儘可能的分配到負載最低的節點。

集羣管理

SwarmKit對於集羣及其節點的管理支持:

  • 狀態存儲:SwarmKit在內存中維護集羣的狀態,並能夠在集羣狀態發生異常時迅速作出調整;
  • 拓撲狀態管理:SwarmKit支持通過API或者命令行動態修改節點角色;
  • 節點管理:SwarmKit API支持用戶修改節點狀態。例如可以將節點狀態設置爲中止(Paused),以避免在該節點上創建新的任務;或者設置爲枯竭(Drained)狀態,除了禁止創建新任務外,當前節點上的其他任務也會被調度到其他節點上。

總結

相比於之前的Swarm,這次發佈的SwarmKit使用更加方便,無需再依賴外部協調軟件進行服務發現。同時對容器運行進行了抽象,API更加間接。SwarmKit特性和其他服務編排框架如mesos,kubernetes等比較類似,目前SwarmKit還在活躍開發中,能否攻城略地,讓我們拭目以待吧。

發佈了112 篇原創文章 · 獲贊 11 · 訪問量 45萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章