天天看點

Docker Swarm Mode簡介與核心概念

Docker Swarm是Docker官方的一種容器編排方案,用于管理跨主機的Docker容器,可以快速對指定服務進行水準擴充、部署、删除

一個Docker Swarm叢集通常由多個安裝有Docker且運作在Docker Swarm Mode的主機組成,角色包含Managers(管理者)、Workers(執行節點),一個節點可以兼擁有這兩個角色或之一

在Docker 1.12以前,Docker Swarm作為一個獨立的叢集容器編排軟體(Swarmkit)形式存在,在之後,它與Docker內建在了一起,可以稱之為Docker Swarm Mode

叢集管理與Docker內建 - 在Docker 1.12以後,Docker Swarm不再作為單獨的叢集管理軟體,而是直接內建到Docker Engine.

去中心化 - 你可以将Docker鏡像部署到一台或多台伺服器上

聲明式服務模式 - 你可以使用聲明式的方法定義一套應用stack

擴充 - 你可以指定task(Swarm的最小粒度) 的數量,簡單了解就是容器數

狀态自動調節 (Desired state reconciliation)- Swarm Manager角色會不斷地檢查服務與其副本的狀态,當有副本不可用時,會建立新的副本替換不可用副本,保證可用性

多主機網絡 - 當為Swarm叢集指定overlay網絡時,Swarm自動為容器指定overlay的網絡ip

服務發現 - Docker Swarm的管理節點會為服務配置設定唯一DNS名稱與負載均衡,Docker Swarm内置了DNS server

負載均衡 - 除了自動的負載均衡,你還可以使用自定義的負載均衡器轉發各服務的對外暴露的端口

預設安全通信 - 節點間通信預設強制使用TLS加密,可選使用自簽發的密鑰或CA組織發的證書

滾動更新 - 更新服務過程中,可以配置延遲部署的時間,如果出現問題時,可以快速還原之前的版本

每台加入Docker Swarm的主機即是一個節點,這是最簡單的了解,每個節點可以是管理節點(Manager Nodes),也可以是執行節點(Worker Nodes),亦可兼具這兩個角色

當部署服務到Swarm叢集的時候,你将一個Service送出到Manager Nodes,Manager Nodes會被服務拆分成Task(Swarm中最小粒度,可能僅包含一個容器),分發到Worker Nodes,Worker Nodes執行接收到的Task,完成部署,Manager Nodes監聽服務的狀态

一個Service定義了很多執行在Workers節點與Managers節點上的Task

建立一個Service時需要指定docker鏡像,以及執行的指令或參數,當使用replicated services 模式時,Manager節點分發你指定的scale因子數量的複制Task到一個Worker節點上;使用global services模式時,則為叢集中每一個Worker節點建立指定數量的複制Task

每個Task承載着一個運作着應用服務的容器,Manager節點通過設定的scale因子數配置設定Task到執行節點上,一個Task隻能運作在一個Worker節點中,隻有運作與失敗兩個狀态

Swarm Manager通過入口負載均衡( ingress load balancing)暴露的端口作為負載均衡政策

Manager預設會為Service會配置設定一個未被占用的端口,稱為PublishedPort(也可自行指定),範圍在30000-32767之間,外部服務通路Publishedport來通路運作中的Task

Swarm會将所有叢集内的請求,轉發到正常運作的節點上

文章内容來源于官方文檔翻譯與了解,如有錯誤,還請不吝留言指出,謝謝合作