说到容器大多数人想到的就是docker,docker的迅速崛起使得使用容器的门槛大大下降了,我第一次接触docker仍是14年,那时候做为一名运维部署应用还在大量使用虚拟化,从vmware、hyper-v、kvm、xen 在到后来很火openstack多多少少都有接触和使用,没使用虚拟化以前OS都是装到的笨重物理机上,把OS虚拟化出来就有不少文章能够作了,虚拟化的好处就不说了。web
刚接触docker的时候只会把docker装到本身的电脑上来下载一些镜像跑一下这样就不会修改系统原理的环境,当时还不知道容器能给运维的工做带来什么变化,人的进步都是问题带来,先看看一开始咱们遇到了什么问题docker
一、OS仍是太笨重,随便哪一个OS不是百万级别代码量,因此对OS级别的变动级别上都是分钟级别的服务器
二、由于OS太笨重因此就不想部署太多的OS,这就致使一个OS下常常跑多个应用,一荣俱荣一损俱损网络
三、开发常常说的一句话:在我电脑上是好的在大家的服务器上就很差了负载均衡
四、线上变动如临大敌,生怕环境不一致会出异常运维
解决方案:日志
docker---->docker-compose---->docker machine继承
可是吃饱了人们又想折腾了开发
一、容器都散布在各个地方,每一个docker都是独立王国,如何作到集群化管理文档
二、如何作到跨主机网络访问
三、应用变动时如何作到无感知
三、监控和日志应该怎么作
四、如何作到熔断、回滚、灰度发布
五、如何作容器的负载均衡、内部之间访问
六、如何大规模部署应用
等等。。。。。。
解决方案:
基于kubernetes的openshift
一开始咱们并无选择openshift,而是调研了比较灵活的rancher(当时rancher仍是1.x的版本)
当时的rancher有一下几个特色:
一、支持多个底层编排包括Cattle、Swarm、K8S、Mesos
二、能够快速部署多套独立的环境
三、简单的的部署方式
四、高度web化的管理,包括对容器主机的管理
不足之处:
一、当时刚出没多久还太冷门
二、对K8S支持的并很差(rancher2.x版本已经全面拥抱了k8s)
openshift的特色:
一、彻底继承k8s全部特性
二、出自红帽之手
三、文档丰富、社区活跃(k8s)
四、有公有云版本在稳定运行
缺点:
一、部署过于复杂
基于对红帽的信仰最后仍是选择了openshift