Docker Swarm
Docker Swarm 优点
任何规模都有高性能表现
灵活的容器调度
服务的持续可用性
和 Docker API 及整合支持的兼容性
Docker Swarm 为 Docker 化应用的核心功能(诸如多主机网络和存储卷管理)提供原生支持。
docker swarm 相关概念
节点分为管理 (manager) 节点和工作 (worker) 节点
任务 (Task)是 Swarm 中的最小的调度单位,目前来说就是一个单一的容器。
服务 (Services) 是指一组任务的集合,服务定义了任务的属性。
Docker Swarm实践
创建 Swarm 集群
- 初始化集群: docker swarm init (会生成一串码,每台主机不同)
- 根据提示在其他docker节点上执行命令:12、13端
[root@server12 ~]# docker swarm join --token SWMTKN-1-11juqh1qu4uo43sgqaqmplpj1b9dnrrws76d028rb70mxpp72g-7pm7zjheh0hwdqze6fdhfxkv0 172.25.11.11:2377
This node joined a swarm as a worker.
[root@server13 yum.repos.d]# docker swarm join --token SWMTKN-1-11juqh1qu4uo43sgqaqmplpj1b9dnrrws76d028rb70mxpp72g-7pm7zjheh0hwdqze6fdhfxkv0 172.25.11.11:2377
This node joined a swarm as a worker.
- 查看swarm集群节点:
[root@server11 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
6sa0dqsbc4jrrdd71tq1jgg5k * server11 Ready Active Leader 20.10.2
e9o42ykja0ydtwjiyu5q6jxl1 server12 Ready Active 20.10.2
xxzx1eib068bqxxxmtm9yb29f server13 Ready Active 20.10.2
在三台机子上拉取此镜像,来做负载均衡测试docker pull ikubernetes/myapp:v1
[root@server11 ~]# docker tag ikubernetes/myapp:v1 myapp:v1
[root@server11 ~]# docker service create --name my_cluster --replicas 2 -p 80:80 myapp:v1
[root@server11 ~]# docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
zcdpqdv68wji my_cluster replicated 2/2 myapp:v1 *:80->80/tcp
[root@server11 ~]# docker service ps my_cluster
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
mn7cp55l48c1 my_cluster.1 myapp:v1 server13 Running Running 31 seconds ago
lmihx9y8425i my_cluster.2 myapp:v1 server11 Running Running 20 seconds ago
访问测试:
[root@foundation0 Desktop]# curl 172.25.11.11
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>
[root@foundation0 Desktop]# curl 172.25.11.11
Hello MyApp | Version: v1 | <a href="hostname.html">Pod Name</a>
[root@foundation0 Desktop]# curl 172.25.11.11/hostname.html
3e51201d10ef
[root@foundation0 Desktop]# curl 172.25.11.11/hostname.html
041bbedef164
[root@foundation0 Desktop]# curl 172.25.11.11/hostname.html
3e51201d10ef
[root@foundation0 Desktop]# curl 172.25.11.11/hostname.html
041bbedef164
- 部署swarm监控:(各节点提前导入dockersamples/visualizer镜像)
拉取监控镜像 docker pull dockersamples/visualizer
docker service create --name=viz --publish=8080:8080/tcp --constraint=node.role==manager --mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock dockersamples/visualizer
[root@server13 ~]systemctl stop docker.service
- waiting…