1.docker swarm简介

  docker swarm是docker 自带的服务编排工具,可以简单实现多台主机的docker容器集中管理,较k8s使用更简单。Swarm 集群中每台  主机称为一个节点。其中主动初始化一个 Swarm 集群的节点称为管理节点leader(Manager leader),加入一个Swarm 集群的节点称为工作节点(Worker Node)。工作节点是任务执行节点,管理节点将任务下发至工作节点执行。管理节点默认也作为工作节点。一个 Swarm 集群可以有多个管理节点,但只有一个管理节点可以成为 leader,节点重启后服务可自动恢复。整体架构图:

2.docker swarm集群基本管理

2.1初始化集群

选择一个节点执行docker swarm init --advertise-addr 192.168.203.134,成为manager leader;其它主机要加入该集群只需要执行leader节点提示的命令

2.2集群管理 

节点列表:docker swarm node ls

过滤查询:docker node ls --filter id=74 或docker node ls -f  id=74,根据节点ID/name等,根据自定义label过滤

查看节点:docker node inspect  节点ID/name

退出集群:docker swarm leave --force

提升节点角色:docker node promote 节点ID/name,只是有机会成为manger leader,提升后便能执行管理节点命令

修改节点角色(包括提升/较低角色):docker node update 节点ID/name --role=worker

3.服务集群部署

部署服务(类似docker run,可能报超时等错误,会自动重试):docker service create --replicas 3 -p 8888:80 --name mynginx nginx ;

单个节点服务列表查看(每个节点看到的不一样):docker node ps  ;

服务列表查看(每个节点看到的一样): docker service ls ;

删除服务:docker service  rm  ID/name

注:因为只有两个节点,其中一个节点会部署两个mynginx容器,命名为mynginx.1,mynginx.2,myngin.3;访问curl 192.168.203.134:8888或curl 192.168.203.135:8888

docker service  logs  -f --tail 111  mynginx  日志查看,随便哪个节点看到都是一样的。

集群通信网络查看docker service inspect mynginx

4.不同docker swarm服务集群通信

4.1.首先需要指定共用的overlay网络(创建:docker network create --driver overlay mynetwork  查看:docker network ls),

4.2 mynginx与registry服务都是有自定义网络

     docker service create --replicas 2  --name registry --network=mynetwork registry

     docker service create --replicas 3 -p 8888:80 --name  mynginx  --network=mynetwork nginx ;(先docker  service rm mynginx)

  4.3 随便进入一个nginx容器,使用ping registry或curl registy:5000;当然如果registry把5000暴露出来,不走自定义网络也可以通信

   

  4.4 docker stack(类似docker-compose,docker create 类似docker run),一次启动多个服务集群,相等于docker service分组。不需要指定自定义网络即可通信。

  启动:docker stack  deploy  -c docker-compose.yml mynginx_registry(先删除原服务集群)

  查看:docker stack ls  ;docker stack ps mynginx_registry

version: "3"

services:
  mynginx:
    image: nginx
    ports:
      - 8888:80
    deploy:
      mode: replicated
      replicas: 3
  registry:
    image: registry
    deploy:
      mode: replicated
      replicas: 2

其它命令

docker swarm --help

docker node --help

docker service --help

docker node --help

 

5. 可视化docker swarm服务集群管理

5.1安装

docker service create     --name portainer     --publish 9000:9000     --replicas=1     --constraint 'node.role == manager'     portainer/portainer

5.2 web管理页面使用 

访问http://192.168.203.134:9000;输出并确认初始密码admin/portainer;通过docker的2375端口连接.注意打开2375端口

1. vim /usr/lib/systemd/system/docker.service
在ExecStart=/usr/bin/dockerd-current \ 后追加 -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock\
2.重新加载配置,重启docker服务
systemctl daemon-reload
systemctl start docker

服务阔缩容,会保证负载均衡,另外还可进行images,network,container,volume,service,stack进行管理,如container管理页面强行杀掉一个容器,swarm马上会重新创建一个新的容器。点击add service还可以动态创建新的swarm服务集群,类似通过命令创建。

 

 

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐