龙腾出行基于Kubernetes的DevOps流水线实战

伴随着微服务架构的普及,龙腾内部很多业务线从单体架构转向微服务架构,在根据业务边界进行拆分时,带来的服务实例数目成倍数增长,这给开发、运维、测试增加了不少复杂度和工作量,...
摘要由CSDN通过智能技术生成

640?wx_fmt=jpeg

伴随着微服务架构的普及,龙腾内部很多业务线从单体架构转向微服务架构,在根据业务边界进行拆分时,带来的服务实例数目成倍数增长,这给开发、运维、测试增加了不少复杂度和工作量,此时我们利用Kubernetes来搭建容器云平台,并实现DevOps简易流水线,来减轻开发和运维工作,提升整体工作效率,下面将分享一下我们的实践过程,希望可以给大家在构建整体平台时带来一点思路。龙腾出行的IT系统架构演变历程

640?wx_fmt=png


640?wx_fmt=png2016年之前,我们有3种开发平台,Java、.NET、PHP,Java和.NET所占业务系统几乎各占一半,但.NET平台在服务端架构方案比较欠缺,虽早已使用WCF进行分布式开发,但并不能跨平台,微软的闭源政策导致很多新技术不能友好兼容,在15年虽已实行开源政策,但时间还是太晚,且国内市场主流还是Java系,因此决定全部转型Java。
在Dubbo时代,虽然开发业务效率有一定提升,但跟WCF一样,服务对平台敏感,难以简单复用,在提供对外服务时,都会以REST的方式提供出去,另外框架对服务侵入性较大,不能很好的支撑后续技术发展,期间我们也有根据Thrift + ZooKeeper自研rpc框架,并且考虑支持多语言平台,但难度较高,团队规模也不允许,所以早早放弃,尽量使用开源平台,此时我们对Docker、Kubernetes进行调研,因此打开了另一扇大门,Kubernetes的功能足够炫!


利用Kubernetes搭建容器云平台

640?wx_fmt=png

Kubernetes——容器编排的王者,容器云的首选方案,对虚拟化平台的革新功能:
  • 资源调度

  • 弹性伸缩、自动扩展

  • 资源高利用率

  • 负载均衡

  • 资源基本监控

  • 容灾备份

  • 滚动更新

  • 日志访问

  • 自检和自愈


等等,以上功能是在虚拟化平台中缺失或需要花时间实现的功能,但作为Kubernetes平台的基础功能,大大简化了构建工作,提升开发运维效率,Kubernetes各组件功能如图:
640?wx_fmt=png2017-2018年间IaaS/PaaS、Docker、微服务、互联网架构等等各种概念侵袭,收到一波波的洗礼,我们完成了Kubernetes从无到有并应用至生产,SOA/微服务的业务边界划分,并推行了前后端分离开发,奠定业务与人员架构基础,使前后端可并行开发,更好的支撑后续业务、技术发展,人员更精于自身专业方向。
目前我们的服务器在IDC环境中,已有VMware虚拟化平台,因此在虚拟机上搭建私有容器云是首选方案。
Kubernetes高可用采用官方推荐方案,整体搭建采用Keepalived + Nginx + Kubernetes + Calico,基于Kubeadm方式安装1.11.1版本,3 Master + 3 etcd + 12 Node节点,整体流程图:
640?wx_fmt=png高可用集群采用1主2热备,将Keepalived的VIP绑定到VM网卡上,当Master因故障宕机,另外两个Master会根据Keepalived配置的优先级接管VIP,从而起到灾备作用,另外将kube-proxy的serverIP换成Keepalived生成的VIP和自定义端口号,通过Nginx转发至3个kube-apiserver,实现3 Master参与负载。
kubeadm-ha已经完全可以在生产环境使用,当Master故障无法恢复时,可以快速加入一个新Master节点,保障集群可靠性。
etcd采用集群内3节点方案,Kubeadm新版本可以友好支持etcd-SSL的操作,当etcd故障时,通过Kubeadm可以快速将新节点加入集群。
平台经过多次灾备演练,目前稳定可靠,如图大家应该比较熟悉:
640?wx_fmt=png我们采用ingress-nginx来取代VM上面的Nginx,服务内部通讯采用Kubernetes推荐的CoreDNS,通过ConfigMap方式配置DNS域名解析,取代原来挂载宿主机/etc/hosts方式。
外网访问,内网集群将Service以NodePort方式暴露端口,通过负载均衡器进行转发。


开发框架的变迁

640?wx_fmt=png

根据Kubernetes优秀的设计思想,开发也有相应的调整,新业务统一采用React+Spring Boot进行开发,因此我们的开发平台如下:
  1. Node.js负责Web/H5前端

  2. Android 、iOS移动端

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值