Docker-swarm 集群

集群列表
主机名IP地址备注
k8s1192.168.18.111主节点
k8s2192.168.18.112node1
配置docker启动参数

vim /usr/lib/systemd/system/docker.service
只需要修改复制出来的这一行,其他的不要做任何改变,节点每台机器都要做该修改

ExecStart=/usr/bin/dockerd -H 0.0.0.0:2375 -H unix:///var/run/docker.sock
初始化主节点

主节点上运行

[root@k8s1 ~]# docker swarm init --advertise-addr 192.168.18.111
Swarm initialized: current node (3gm03pwvewfrihkvqq9fqvpfq) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-60xixrsu01m0q5v0i5wq00f1klkrm058obsiltsujeujkei3z5-00vbgmqrfdaxhiahy1x5vvo96 192.168.18.111:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
从节点加入集群

复制上面命令命令,到从节点上运行,从节点可以多台机器

[root@k8s2 ~]# docker swarm join --token SWMTKN-1-60xixrsu01m0q5v0i5wq00f1klkrm058obsiltsujeujkei3z5-00vbgmqrfdaxhiahy1x5vvo96 192.168.18.111:2377
This node joined a swarm as a worker
主节点上查看节点运行情况
[root@k8s1 ~]# docker node ls 
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
3gm03pwvewfrihkvqq9fqvpfq *   k8s1                Ready               Active              Leader              18.03.0-ce
jqf5b6kao9cnv7xv01yctpjya     k8s2                Ready               Active                                  18.03.0-ce

更多 node相关命令,使用 docker node –help

启动service

使用 docker service create 启动容器,这里那nginx作为测试

[root@k8s1 ~]# docker service create --replicas 1  --name nginx1 nginx                                 
cu380b0g7cwcuv0kx83luehxo
overall progress: 1 out of 1 tasks 
1/1: running   [==================================================>] 
verify: Service converged 

## 命令相关说明
--replicas 启动容器个数,多少个分片(多个分片后,自动负载均衡,这一功能应该是参考k8s功能实现)
--name  指定创建服务的名称
service 一键扩容
docker service scale nginx=10
service 在指定机器上创建容器
docker service create --replicas 1 --constraint node.hostname==k8s2 --constraint node.hostname==k8s1 --name nginx nginx
--constraint 指定容器创建的位置,参数值可以是多个 
service 在指定多台机器上运行
# 给节点机器新增标签
docker node update --label-add func=docker k8s2
docker node update --label-add func=docker k8s1

# 启动servcie
docker service create --replicas 2 --constraint node.labels.func==docker -p 80:80 --name nginx nginx
挂载目录

1、创建volume

docker volume create nginx #创建
docker volume ls # 查看
docker volume inspect nginx #目录详情

2、挂载容器

--mount type=volume,source=redis,target=/usr/share/nginx/html/,readonly=false 

完整命令:
docker service create --replicas 2 --constraint node.labels.func==docker --mount type=volume,source=redis,target=/usr/share/nginx/html/,readonly=false -p 80:80 --name nginx nginx

3、挂载目录

--mount type=bind,source=/data,target=/data,readonly=false 
完整命令:
docker service create --replicas 2 --constraint node.labels.func==docker --mount type=bind,source=/data,target=/usr/share/nginx/html/,readonly=false -p 80:80 --name nginx nginx

4、容器互联(overlay)

# 创建网络(overlay)
docker network create -d overlay dnet
# 查看网络信息
docker network inspect dnet
## 这样指定同一网络后,两个容器中可以相互ping通
docker service create --name test --network dnet nginx
容器升级
docker service update --image nginx:1.13.12 nginx
更多命令总结
# 将某个worker节点设置为manage节点
docker node promote k8s2
# 将某个manage节点设置为worker节点
docker node demote k8s2
# service 新增端口映射
docker service update --publish-add 81:81 nginx
# service 删除端口映射
docker service update --publish-rm 81:81 nginx
# 容器新增集群网络
docker service update --network-add lnet nginx
# 容器删除集群网络
docker service update --network-rm lnet nginx
# 指定容器使用的cpu和内存数量
docker service update --reserve-cpu 1 --reserve-memory 256m nginx
# 批量更惨容器,如果多余1个scale,课这样设置更新,让服务可用
 docker service update --update-parallelism 2 --image nginx nginx
 # 指定容器更新的间隔,单位(ns|us|ms|s|m|h)
 docker service update --update-parallelism 1 --update-delay 10s --image nginx nginx
 # 指定容器失败后,执行的动作("pause"|"continue"|"rollback")
 -update-failure-action 
docker-swarm + compose结合

docker-compose.yml文件内容

version: "3.5"
services: 
  mysql:
    ports:
     - "3306:3306"
    image: mysql
    volumes:
     - /var/lib/mysql:/var/lib/mysql
    environment:
     - MYSQL_ROOT_PASSWORD="123456"
    deploy:
      replicas: 1
      placement:
        constraints:
         - node.hostname==docker1

创建命令:(volumes挂载目录,必须存在)

docker stack deploy -c docker-compose.yml m
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值