拉勾网基于UK8S平台的容器化改造实践

  

<强>写在前面

  

拉勾网于2019年3月份开始尝试将生产环境的业务从UHost迁移到UK8S,截至2019年9月份,QA环境的大部分业务模块已经完成容器化改造,生产环境中,后台管理服务已全部迁移到UK8S,部分业务模块也已完成容器化。迁移过程遇到很多问题,也积累了一些实践经验,同时深刻体会到k8给企业带来的好处,像资源使用率的提升,运维效率的提升,以及由于环境一致性带来的业务迭代的加速。

  

本文从拉勾网的业务架构,日志采集,监控,服务暴露/调用等方面介绍了其基于UK8S的容器化改造实践。

  

<>强业务架构

  

拉勾网基于UK8S平台的容器化改造实践“> </p>
  <p>如上图所示,拉勾网目前迁移到UK8S中的业务以后台管理服务为主,不过其依赖的基础组件部分依然部署在UHost,得益于UK8S扁平化的网络架构,Pod与VM可互联互通,因此在将业务迁移到UK8S的过程中并不需要对业务架构做改动。</p>
  <p>所有容器化的业务,均采用StatefulSet的方式来管理,而没有使用部署,一是因为StatefulSet的豆荚名称固定,通过配置中心做配置文件的下发容易处理,而基于部署做配置下发的话,不好做有状态发布。二是StatefulSet调用链条非常固定,通过调用链监控可以快速排查出是哪个吊舱出现问题,清晰明了。</p>
  <p> <强>日志采集</强> </p>
  <p>在容器化之前,拉勾网的业务日志都是分别写入到VM本地的日志文件。但随着业务迁移至UK8S,由于Pod(应用)与VM的关系并非固定,一旦豆荚被调度到其他VM,则会导致应用日志也随之散落在不同的VM,不便于统一采集,因此容器化部分的应用日志选择输出到统一的日志平台系统,不保留在VM本地。</p>
  <p>日志的收集方案,拉勾网选择的是双轮马车模式,每个业务豆荚中建一个filebeat容器,应用容器与filebeat容器共享emptyDir日志目录,filebeat容器负责收集主容器日志并传输到卡夫卡。</p>
  <p>选择这个方案的原因是应用程序的日志依然可以输出到文件,不需要改造成stdout和stderr,减小业务迁移到UK8S的负担,而filebeat作为一个轻量级的采集工具,也不会消耗太多的资源。另外的双轮马车方式相对于DaemonSet方式灵活性也更高,适合于大型,混合集群,且可以做到租户隔离,不同应用程序的日志可以输出到不同日志系统。</p>
  <p> <img src=拉勾网基于UK8S平台的容器化改造实践