容器云与DevOps流水线
1.龙腾出行的IT系统架构演变历程
2016年之前,我们有3种开发平台,java .net php,java和.net所占业务系统几乎各占一半,但.net平台在服务端架构方案比较欠缺,虽早已使用WCF进行分布式开发,但并不能跨平台,微软的闭源政策导致很多新技术不能友好兼容,在15年虽已实行开源政策,但时间还是太晚,且国内市场主流还是java系,因此决定全部转型java。
在dubbo时代,虽然开发业务效率有一定提升,但跟WCF一样,服务对平台敏感,难以简单复用,在提供对外服务时,都会以REST的方式提供出去,另外框架对服务侵入性较大,不能很好的支撑后续技术发展,期间我们也有根据thrift+zookeeper自研rpc框架,并且考虑支持多语言平台,但难度较高,团队规模也不允许,所以早早放弃,尽量使用开源平台,此时我们对docker、kubernetes进行调研,因此打开了另一扇大门,Kubernetes的功能足够炫!
2.利用kubernetes搭建容器云平台
kubernetes-容器编排的王者,容器云的首选方案,对虚拟化平台的革新功能:
- 资源调度
- 弹性伸缩、自动扩展
- 资源高利用率
- 负载均衡
- 资源基本监控
- 容灾备份
- 滚动更新
- 日志访问
- 自检和自愈
等等以上功能是在虚拟化平台中缺失或需要花时间实现的功能,但作为kubernetes平台的基础功能,大大简化了构建工作,提升开发运维效率,kubernetes各组件功能如图:
2017-2018年间IaaS/PaaS、docker、微服务、互联网架构等等各种概念侵袭,收到一波波的洗礼,我们完成了k8s从无到有并应用至生产,SOA/微服务的业务边界划分,并推行了前后端分离开发,奠定业务与人员架构基础,使前后端可并行开发,更好的支撑后续业务、技术发展,人员更精于自身专业方向。
目前我们的服务器在IDC环境中,已有VMware虚拟化平台,因此在虚拟机上搭建私有容器云是首选方案。
kubernetes 高可用采用官方推荐方案,整体搭建采用Keepalived+Nginx+Kubernetes+Calico,基于Kubeadm方式安装1.11.1版本,3Master+3Etcd+12Node节点,整体流程图:
高可用集群采用1主2热备,将k