docker-swarm集群搭建
最近一直在忙公司应用docker化部署,所以很久没发博文了。今天刚好有空,就来介绍下swarm集群,在部署swarm集群之前我一直在考虑用那种集群方式,k8s还是swarm,最后选择了swarm,原因是公司分配的服务器性能有限,无法支持k8s容器,而且相对于k8s swarm比较好学。这里在了解下swarm的流程注意事项:当我没在swarm中create服务的时候,首先会把服务的镜像自动拉...
最近一直在忙公司应用docker化部署,所以很久没发博文了。今天刚好有空,就来介绍下swarm集群,在部署swarm集群之前我一直在考虑用那种集群方式,k8s还是swarm,最后选择了swarm,原因是公司分配的服务器性能有限,无法支持k8s容器,而且相对于k8s swarm比较好学。
这里在了解下swarm的流程注意事项:
当我没在swarm中create服务的时候,首先会把服务的镜像自动拉到运行的node的节点然后启动,如果有mount volume卷的时候 要保证该节点必须要该路径。并且在使用overlay 网络模式的时候必须保证内核版本大于3.16,不然会失效。我在overlay 网络模式主要用来解决跨主机容器的通信问题,还有一点swarm集群模式包含一项内部 DNS 组件,其负责自动为 Swarm 中的每项服务分配一条 DNS 入口,所以完全不用担心服务重启之后跑到其他节点之后如何通信,服务直接的通信通过dns得到解决。比如tomcat中的redis会话共享等都可以直接使用dns 内部解析
我在使用swarm集群的时候使用的是
接下来来了解如何去部署swarm集群
部署swarm集群大致分为3大块:
初始化管理节点
docker swarm init –listen-addr ip:port
蓝色框中就是生成的token 这个是node加入节点必须要使用到的
在node服务器加入节点
docker swarm join –token SWMTKN-1-1gr2cqf9nfwlusxqhc2b3z80keqjdynezw9og1fb1tjw24vyrq-2n11u0s0htrc3etdnqbvwddgb 10.1.1.194:8001
之后用docker node ls 去查看状态
其中leader为管理者,但是也可以当作node使用
之后可以来测试
在管理节点创建服务 PS:在swarm中使用service create创建容器相对于docker run
docker service create –replicas 1 –name helloworld alpine ping docker.com
在这里我创建了一个名字为helloworld的docker服务 服务内容为ping docker.com
查看服务
docker service ls
查看节点运行节点
docker service ps helloworld
可以看出这个服务运行在master分支上,在这里稍微提一下在swarm中创建的容器 其name是name.docker节点 ID
docker service scale web=6web表示服务名称,= 右边表示容器的数量,执行完,回到浏览器查看,会陆陆续续出现其他的5个容器,分别分布在3台机器上
删除service
docker service rm helloworld
查看service的配置
docker service inspect helloworld
节点下线:
docker node update –availability drain 3h5bpcvo8akrua6cek8syraji
3h5bpcvo8akrua6cek8syraji为id号
节点上线
docker node update –availability active 3h5bpcvo8akrua6cek8syraji
节点下线:
docker node update --availability drain 3h5bpcvo8akrua6cek8syraji
测试完swarm集群之后,目前只能通过命令去查看swarm的状态,现在我们来安装可视化swarm
安装Portainer,图形化管理docker
docker service create \ –name portainer \ –publish 9000:9000 \ –constraint ‘node.role == manager’ \ –mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \ portainer/portainer \ -H unix:///var/run/docker.sock
docker命令参数就不多加解释了
启动完成之后
新增子节点:
子节点docker服务需要修改docker启动文件
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
切换子节点:
在此swarm集群的部署就讲解完毕
更多推荐
所有评论(0)