背景说明:
随着docker使用的逐步深入,docker的管理变得越来越麻烦,单纯的通过docker命令行的方式进行管理已经不能满足需求,同时也存在效率低下的问题。所以急需一个docker集群管理工具,要求是开源、稳定、持续发展。从上网看,开源的项目有很多,大部分都比较陈旧,个人感觉shipyard比较合适,简单实用,但是shipyard最近在github上通知关闭项目,不再维护,本来还想既然这个是开源项目,那就拿到源码自己改造也行,结果是用go写的,只会python,go搞不定。所以放弃了。
目前最大的应该就是谷歌的kubernetes了,也就是k8s,但是这个有一个公认的难题,集群搭建极其复杂,并且由于某些原因,国内访问不了goole,很多资料和源码也不好下载,形成第一道门槛,为此,个人花了一周的时间,研究k8s的搭建,做了如下两个部署包,实现一键部署。包中包含了k8s程序以及依赖,可以直接执行。说明如下:
环境说明:
Kubernetes版本:v1.8.3
操作系统:centos7
docker版本:17.03ce
集群环境:
3台虚拟机(提前安装好docker)
######docker安装方式#################
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce
#####################################
master主机:192.168.1.107
node1节点:192.168.1.110
node2节点:192.168.1.111
#k8s的程序包未经过任何改动,是官方原版的1.8.3包。个人写了安装脚本
kubernetes-master下载链接
链接: https://pan.baidu.com/s/1slyrxut 密码: 7y96
kubernetes-node下载链接
链接: https://pan.baidu.com/s/1skEWmNN 密码: wtgd
使用方式:
master安装:
1,下载kubernetes-master包,解压到任意目录,执行readme_and_install.sh脚本,根据提示输入master ip地址
node安装:
2,下载kubernetes-node包,解压到任意目录,执行readme_and_install.sh脚本,根据提示输入master和node的ip地址
3,都安装完成之后,在master执行(如提示kubectl命令未找到,执行source /etc/profile后再执行)
kubectl get nodes
应该能看到两个节点,表示集群安装成功。
总结:
经过本次研究k8s,个人感觉这个东西暂时不敢用在正式项目上,原因如下:
1,k8s是goole的项目,所有资料和源码都在goole上存放(虽然在github上也有,但是真正下载的时候还是链接谷歌服务器),导致国内下载和查询很困难,出了问题不好查资料。
2,k8s过于复杂,虽然提供的功能很多,编排、自动部署、持续集成。但是正是由于过于丰富的功能,导致部署和使用非常复杂,单靠个人力量,出了问题搞不定。
3,目前互联网公司大部分使用公有云,比如阿里云,aws和微软云,他们都提供了docker管理工具,相较于自己研究k8s,不如直接使用公有云提供的管理工具,比如aws的ecs(管理工具不收费,只按照真实的ec2使用收费)。
后记
shipyard停止维护挺可惜的,shipyard满足了现阶段对docker管理的所有需求,界面还可以,同时又能够管理docker集群。不过通过shipyard的设计思路倒是给我了不少灵感,如果个人时间充足,我感觉我宁愿自己写一套类似于shipyard的docker管理工具,也不愿意使用k8s,毕竟个人开发的管理工具能够针对具体业务进行有重点的设计,而且docker提供了所有需要的接口,技术上没有什么难度,就看个人愿不愿意做了。