Docker SwarmMode筆記

swarm基本概念

  • Swarm是去中心化的,並集成進了Docker Engine,經過Docker CLI管理。
  • swarm集羣包含兩類節點
    • Manager Node —— 負責調度Task(不推薦超過7個,其有兩種狀態:leader、reachable,集羣操做需在管理節點)
    • Worker Node —— 接受Manager Node調度並指派的Task
  • 每一個swarm nodeavailability包括:
    • Active:接受task
    • Pause:不接受task,已有task仍運轉
    • Drain:不接受task,已有task被交接
  • 經過routing mesh策略(基於lvs),swarm集羣全部節點都會監聽服務端口(沒有啓動服務的節點會自動將流量路由到服務駐留節點)
  • 集羣內服務開放到外部端口後,節點由preparing轉爲running狀態
  • 一個集羣節點上能夠駐留多個重複服務

swarm變遷

  • Docker1.6引入Swarm
    • 獨立於Docker engine
    • 使用Docker CLI
  • Docker 1.12前幾周發佈了Swarm Kit
    • 使用本身的CLI(swarmd負責管理,swarmctl用於控制)
    • 是Swarm mode的基礎
  • Docker 1.12發佈了Swarm Mode(功能較完整的容器編排工具)
    • 集成到了Docker engine中(docker swarm子命令)
    • 使用Docker CLI,引入服務的概念
    • 基於Swarmkit編寫

構建swarm集羣

# 轉入SwarmMode(當前機即做爲集羣管理節點)
docker swarm init --advertise-addr Manager節點ip:端口

# 新建token
docker swarm join-token worker|manager

# node加入集羣成爲一個工做副本
docker swarm join --token 令牌 Manager節點ip:端口

# 查看集羣節點
docker node ls

# 檢查指定節點
docker node inspect self|NODE

# 節點狀態變動
docker node update --availability drain manager # 設置Manager Node只具備管理功能

# 節點打標籤
docker node update --label-add 鍵名稱=值

# 節點提權/降權
docker node promote 節點 # 升級爲manager node
docker node demote 節點 # 降級爲worker node

# 節點退出集羣
docker swarm node leave [--force]

構建集羣網絡

  • 集羣構建時,節點通訊默認2377端口
  • 集羣負載均衡網絡的服務發現工做在端口:
    • 7946 TCP/UDP:集羣的服務發現
    • 4789 UDP:集羣服務的路由網絡
docker network create --driver overlay 網絡名 #建立網絡(網絡是隔離和安全加密的,同一網絡節點才能互訪)
docker network ls #列表網絡
docker network inspect 網絡名 #監控網絡
相關文章
相關標籤/搜索