docker swarm核心概念

2021-08-15 14:44:20 字數 1150 閱讀 3025

翻譯自docker官方文件,原文:

本節介紹了docker1.12中集群管理和編排特性的特有概念。

節點是swarm中的乙個docker引擎例項。你也可以把它想成是乙個docker節點。你可以在乙個物理機或雲伺服器上執行多個節點,但生產環境中的swarm部署通常包括分布在多個物理機和雲平台上的docker節點。

要把你的應用發布到集群,你要向管理者節點提交乙個服務定義。管理者會把叫做task的工作單元分配給工作節點(worker nodes)。

管理者節點還作為維持集群的期望狀態所需的編排者和集群管理者的角色。管理節點(多個)會選舉乙個領導者(leader)來進行任務編排。

工作節點接收並執行管理節點分配的任務。預設的,管理節點也是工作節點,也會執行服務,但你可以配置他們只執行管理任務,並且只作為管理節點。每個工作節點上都有乙個**,它會監視分配到它這的任務。工作節點會通知管理節點它所負責的任務的當前狀態,管理器由此可以維持每個工作者的期望狀態。

服務(service)是執行在管理或工作節點上的任務的描述。它是swarm系統的核心結構並且是使用者和swarm互動的主要基礎。

當你建立服務時,你要指定使用的容器映象和容器內部要執行的命令。

在副本服務模式(replicated services model),集群管理器會基於你在期望狀態中設定的規格把指定數量的副本任務分發到多個節點。

對於全域性服務(global services),集群會在集群中所以可用節點上執行乙個任務。

任務(task)包含乙個docker容器和執行在該容器中的命令。它是swarm排程的基本單位。管理節點根據服務描述中設定的副本數把任務分配該工作節點。一旦乙個任務被分配給了乙個節點,它就不能被移到其他節點了。它只能執行在指定節點上或失敗。

集群管理器用內部的負載均衡器來暴露你想在集群外部訪問的服務。集群管理器能自動給服務分配乙個公開的埠,你也可以給服務配置乙個公開埠。你可以指定任意沒被占用的埠。如果你沒指定埠,管理器會給服務分配乙個30000-32767範圍內的埠。

外部元件,比如雲負載均衡器,可以在集群中的任意節點上用公開的埠訪問服務,不管該節點有沒有執行服務所需的任務。集群中的所以節點會把連線路由到執行著所需任務的例項上。

swarm模式有乙個內建的dns元件,可以自動給集群中的每個服務分配乙個dns例項。集群管理器會根據服務的dns名,用內建的負載均衡器來分發請求。

Docker Swarm排程策略

swarm在用命令swarm manager啟動swarm manager時,可用 strategy指定排程策略。swarm提供了三種排程策略計算節點的排名,在排程 例如選擇哪乙個節點執行容器時 時,取排名最前的節點。這三種排程策略是 spread binpack random random策略 隨...

docker swarm 管理服務

docker swarm中服務的概念是 乙個服務包含swarm集群中多個節點,每個節點都可以部署服務,每個服務也包含多個相關的容器。docker service help commands create create a new service inspect display detailed in...

docker swarm新增機器

僅作為個人備忘錄記錄遇見的問題。docker剛入門。錯誤之處歡迎指正。背景 線上環境為多台伺服器上執行docker,不同機器上的容器內部需要網路互通。為已搭建好的環境 伺服器a swarm的管理節點 伺服器b 需新加入的機器 登入伺服器a 檢視swarm的token docker swarm joi...