平台架构图:
平台六大模块:
- K8S自动化运维容器平台(Rancher + Kubernetes);利用Rancher对K8S系统进行统一化部署维护和管理,解决K8S平台使用门槛高的问题。同时利用K8S系统统一管理底层硬件系统,提供容器环境;使得微服务开发者无需关注底层硬件,只需在平台上注册发布应用。同时K8S具有自动维护,自动修复的特性,可以实现高度自动化运维,极大减轻了微服务发布者的运维压力。同时系统支持多种更新方式,利用ServiceMesh网络架构,轻松实现蓝绿发布,滚动发布和灰度发布;帮助位服务开发者轻松实现业务迭代。
- CI/CD自动构建自动部署平台(Jenkins + Harbor + Helms);开发者只需要提交代码到Jenkins上(无状态服务为佳,有状态服务需要额外配置存储资源)。Jenkins自动监控到代码变化,再到Helms(镜像商城)里面提取基础配置文件,通过基础配置文件把环境和代码构建打包成统一镜像上传到测试环境的镜像仓库Harbor里存储。Jenkins会检测到镜像的变化,首先将新镜像推送到测试环境,发邮件提醒测试人员测试。当测试通过后,Jenkins会把镜像挪动到正式环境的Harbor上,并通知K8S部署新的镜像。全流程自动化管理,无需开发人员手动操作,大大提高了开发和部署效率。
- 监控告警平台(Prometheus+Grafana)
K8S提供统一的API接口给第三方程序提取监控数据,Prometheus系统从API接口中调取运行状态数据,存入自带时序数据库中。Prometheus有完备的监控与告警功能,方便系统运维人员实时监控PAAS平台的运行状态。同时后端可以连接Grafana绘图系统,随时定制Dashboard监控系统上的各类指标。
- 微服务ServiceMesh平台(Lstio)
微服务平台由于微服务之间复杂的网络连接,通过网络配置文件来实现网络互通非常困难。此时引入的ServiceMesh服务,Istio,用以实现微服务的自动发现,自动组网。开发人员只需要在Istio上配置简单的服务组网信息,Istio就会调用K8S来完成微服务的组网。
- 共享存储系统(Ceph/GlusterFS)
由于容器内部存储在容器生命周期结束后就会销毁回收,因此需要外挂存储做PV来承载有状态的应用。通过共享存储,将所有服务器上的冗余硬盘绑定成一个大的存储池。将存储池里的存储做成一个个PV绑定给需要存储资源的K8S服务。
- 日志统一管理系统(EFK)
由于容器在不停的生成和回收,因此程序日志需要统一收集和存储。在这里需要引入日志统一管理系统,在容器端部署Fluentd收集程序产生的日志,然后统一推送到Elasticsearch数据库中,通过Elasticsearch的高效索引机制,可以很方便的查询不同的程序和服务的日志。
- 平台架构搭建方案:
硬件环境:服务器/虚拟机 * 15 CPU: Intel Xeon E5-2682v4 MEM: 256G STORAGE:RAID1 500G(系统盘)RAID10 2T(共享存储)
Rancher管理节点 *2(高可用)
K8S中心节点*3
K8S容器运行平台*8
- 首先准备好Centos7的系统环境,部署好SSH互信免密。在中心节点上安装好灵雀云平台之后,执行自动化脚本,在所有机器上自动安装基础环境。
- 启动灵雀云平台,设置基础集群设施。并可以开始安装和部署基本的容器应用。
- 安装Helms到K8S平台上,与K8S平台做集成,通过Helms存储服务和中间件的配置文件信息;导入大部分中间件的配置到Helms上,安装中间件通过Helms通用配置进行。
- 安装listo,Harbor,Promethus,Grafana,Ceph,Jenkins到K8S平台上,配置通过Helms拉取。
- 配置Ceph共享存储池,所有的PV都通过Ceph来调取存储资源。
- 配置Jenkins和Helms,Harbor集成,实现CI/CD的自动化流水线配置。所需要的持久化存储资源通过PV配置从Ceph调取。
- 配置Prometheus,实现对K8S集群的监控,后端数据库
需要的PV从Ceph调取。然后配置Grafana的dashboard,实现对系统的可视化分析。
- 配置Iisto,实现ServiceMesh的自动微服务组网架构,当发布新的微服务时,可以利用Iisto实现服务自动发现,自动组网。
- 部署容器化EFK平台到K8S上,配置Fluentd收取每个应用的日志,统一收集到Elasticsearch里面做存储。可以收敛到前端的灵雀云WEB上统一展示。也可以针对单个应用使用Kibana或者Grafana单独做日志分析。
- 以上步骤完成之后,就可以自行部署微服务和应用到K8S容器平台之上。