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 然后重新加入。  
原文地址:https://www.cnblogs.com/plefan/p/13744866.html