最近一直在忙公司应用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集群的部署就讲解完毕

Logo

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

更多推荐