swarm 配置說明


manager node  192.168.0.11
worker node 192.168.0.12

 

安裝上docker環境
yum install wget -y
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce-18.06.1.ce-3.el7
systemctl enable docker && systemctl start docker
docker --version



swarn下的命令集,可以使用--help 逐層查看
docker swarm --help
    Commands:
        ca          Display and rotate the root CA
        init        Initialize a swarm
        join        Join a swarm as a node and/or manager
        join-token  Manage join tokens
        leave       Leave the swarm
        unlock      Unlock swarm
        unlock-key  Manage the unlock key
        update      Update the swarm



部署swarm manager
docker swarm init --advertise-addr 192.168.0.11
    執行后給出worker節點加入當前manager下的命令,也可以通過docker swarm join-token worker 查看下面信息。
    docker swarm join --token SWMTKN-1-3vgownewoyrqequep2a3y6cawjurd27kix8***************-b5iregazi33c107qeivgkdwc0 192.168.0.11:2377

 

docker info     #可以查看當前docker的swarm 節下面的信息
     Swarm: active
        NodeID: hjy4pruqeygmtrhktr4t8rmph
        Is Manager: true
        ClusterID: 6tfy8npit0ekv55scx0rwaq40
        Managers: 1
        Nodes: 1
        Default Address Pool: 10.0.0.0/8
        SubnetSize: 24
        Data Path Port: 4789
        Orchestration:
        Task History Retention Limit: 5

 

docker node ls 查看當前swarm 下的節點
    AVAILABILITY 三種狀態說明:
        active 可被指派task      
        pasue 不可被指派task,但是節點中的已存在task正常運行
        drain 不可被指派task,且節點中的已存在task將調度到其他的worker節點運行

 

通過docker swarm join-token woker  查看加入命令,然后在worker執行命令,加入swarm。

 

管理swarm manager node
    可以使用haproxy 來做多manage node 的高可用方案,Raft協議用來保證管理節點的數據一致性,容錯點數量是(n-1)/2
    常見的管理節點的操作:
        設置managernode 只提供管理,不作為worker 節點使用
        docker node update --availability drain manager節點主機名
        添加標簽
        docker node update --label-add 鍵名稱=值
        為節點設置標簽標記,一個節點可以多個標簽。
        docker node update --label-add foo --label-add bar worker1
        為節點指定類型標簽,來標識調度程序如何部署到哪個節點
        docker node update --label-add tyep=queue worker1
        提權到manage組
        docker node promote  worker1
        降權
        docker node demote workre1
        manager節點要退出swarm集群,在manager 機器上操作
        docker swarm node leave
        若集群中存在其他workernode 如果manager要退出swarm 可以強制退出
        docker swarm node leave --force
        worker節點要退出swarm ,在woker機器上操作
        docker swarm node leave

 

其他管理命令
docker node demote     從群集(swarm)管理器中降級一個或多個節點
docker node inspect    顯示一個或多個節點的詳細信息
docker node ls         列出群集(swarm)中的節點
docker node promote    將一個或多個節點推入到群集管理器中
docker node ps         列出在一個或多個節點上運行的任務,默認為當前節點
docker node rm         從群集(swarm)刪除一個或多個節點
docker node update              更新一個節點
    –availability           節點的可用性(有效/暫停/耗盡)
    –label-add              添加或更新節點標簽(key = value)
    –label-rm               刪除節點標簽(如果存在)
    –role                   節點的作用(worker / manager)



管理服務(在manager node 上完成)
docker service create --replicas 2 --name myredis redis
 # 創建2個名為myredis 的容器,源鏡像為redis
docker service ls
 # 查看已經部署了的服務
docker service ps myredis
 # 查看服務的詳細信息
docker service create --name helloworld \
  --env MYVAR=myvalue \
  --workdir /tmp \
  --user my_user \
  alpine ping docker.com
 # enc 設置化境變量,workdir設置工作目錄,user設置 用戶信息

 

擴容縮容服務
docker service scale 服務名=服務task總數
    例如 docker service scale myredis=3   從之前的2個擴容到3個
        docker service scale myredis=1   擴容到3個以后,再縮容到1個。

 

刪除服務
docker service rm myredis

 

滾動更新
docker service create \
    --replicas 3 \
    --name redis \
    --update-delay 10s \
    redis:3.0.6
 # 每成功部署一個,間隔十秒后再部署下一個,更新失敗則調度器停止
docker service update --images redis:3.0.7 redis  使用新版本redis 來升級當前版本。

 

添加overlay 網絡
docker network create --driver overlay mynetwork
 #創建名字為mynetwork 的網絡,在manager 上操作
docker service create \
    --replicas 4 \
    --network mynetwokr \
    --name myweb \
    nginx
 #指定mynetwork 網絡下創建4份名字叫myweb的服務,源鏡像用nginx





爬坑問題
將worker 提權之后,會導致status 為down ,重啟只有docker node rm worker1 然后重新加入。  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM