Swarm 是docker 公司推出的原生docker集群管理软件。主要实现了容器主机的集群管理,实现容器调度。主要实现方法是提供API来转发用户请求。因为SwarmAPI 基本兼容dockerAPI,所以用户可以直接使用docker客户端来访问Swarm,学习成本小。但是这种方法实质上还是使用单机docker,网络相对其他集群管理软件(如K8s)简单的多。

Shipyard是swarm 的GUI开源软件,界面非常小清新。通过shipyard,用户可以摒弃使用docker客户端,在图形界面操作swarm。Shipyard非常轻量级,除了swarm图形化功能外,实现的镜像库管理,容器资源监控,和简单的权限管理。

在容器资源监控方面,做的相当不错。但是主机资源监控还未实现。

在权限管理,Shipyard支持openLDAP,和非常简单的角色管理。但是目前容器未和用户绑定,如A,B有容器管理权限。B用户可以删除A用户启动的容器。

 

Shipyard 安装:

Shipyard  的官方安装教程在 https://shipyard-project.com/docs/deploy,但不管使用教程自动化安装还是手动安装,还是发现有点问题,安装的Shipyard 无法在主节点外的地方启动虚拟机,所以这里记录下我自己的安装过程。

安装节点:

10.254.169.47       swarm 管理节点,同时也是swarm 计算节点

10.254.174.27        swarm计算节点

 

安装过程:

1、 修改各节点docker启动参数。 官方教程使启动一个proxy容器,这个容器映射2375端口到 /var/run/docker.sock 的方法来暴露docker端口,我这里的方法是在启动参数上直接添加 -H tcp://0.0.0.0:2375 (添加方法在各linux 发行版本不同), 重启docker 后结果显示/usr/bin/docker daemon -H fd://-H tcp://0.0.0.0:2375  。

2、 swarm管理节点安装服务发现程序。建议和官方教程一样,使用etcd,可以使用其他方法(比如节点发现,文件发现,consul发现,zookeeper发现,IP地址范围等),可以使用容器程序或者直接安装程序。这里使用etcd容器 

docker run  -ti -d  -p 4001:4001  -p 7001:7001  --restart=always  --name shipyard-discovery  microbox/etcd -name discovery。

3、 swarm管理节点安装swarmmanger。注意暴露3375端口,否则以后自己没法进行swarm管理

docker run  -ti -d  --restart=always  -p 3375:3375 --nameshipyard-swarm-manager  swarm:latest  manage --host tcp://0.0.0.0:3375etcd://10.254.169.47:4001

4、 各节点安装swarmagent。

docker run    -ti   -d    --restart=always    --name shipyard-swarm-agent    swarm:latest    join --addr 10.254.169.47:2375etcd://10.254.169.47:4001

docker run    -ti   -d    --restart=always    --name shipyard-swarm-agent    swarm:latest    join --addr 10.254.174.27:2375etcd://10.254.169.47:4001

至此,swarm集群安装好了,运行docker–H 10.254.169.47:3375 info 可以查看集群信息。

5、 swarm管理节点安装 shipyard数据库。docker run  -ti  –d --restart=always  --name shipyard-rethinkdb  rethinkdb

6、 swarm管理节点安装 shipyard。

docker run   -ti   -d    --restart=always    --name shipyard-controller    --link shipyard-rethinkdb:rethinkdb  --link shipyard-swarm-manager:swarm    -p 80:8080    shipyard/shipyard:latest    server  -d tcp://swarm:3375

这里暴露的是80端口。

至此shipyard 安装完成。

Shipyard使用:

访问 10.254.169.47 ,默认用户名密码admin,shipyard。可以看到swarm集群上各节点的容器。

 

 

在节点页面可以看到个节点和节点labels. 节点label 用于进行容器调度时,容器主机的筛选,比如这里10.254.174.27节点。有labels是nodetype=87。(这个label来自docker启动参数,可配置)

               

在容器部署页面

可以通过SwarmConstraint选项里面填主机label来选择主机。

 

 

 

 

Logo

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

更多推荐