编辑推荐: |
本文主要从集团内容器云平台从选型、架构设计、方案设计到平台从0开始建设及最终落地实践全过程,伴随平台落地投产的同时推动业务应用进行云原生改造,加速业务应用上容器云并且让云上业务利用容器云的优势获取更大的业务价值,同时通过可观测性平台实时监测可业务的连续性和可用性,全力为云上业务保驾护航。
本文来自于微信公众号架构师技术联盟,由Linda编辑、推荐。 |
|
一、建设背景
全面上云和朝云端迁移将成为趋势,当前保险行业的一个普遍共识之一就是通过科技驱动引领企业进行数字化转型升级。传统的虚拟化技术,在资源使用率、灵活性和弹性方面提升度并不高,因此云计算、大数据、AI技术,成为各企业的重点建设领域,在引领全面面向云原生技术建设方向,主要覆盖弹性计算、AI+GPU、边缘计算、Serveless等主流架构,我司从技术上选取主流K8S平台,在技术底座的基础运维保障上引入SRE,科学的提高系统可用性,提高资源利用率,降低总体TCO的同时,为上层应用的创新、快速迭代和稳定运行提供有效支撑。在微服务、DevOps、分布式等方面容器虚拟化技术天生具备优势,因此成为数据中心新一代云基础架构的选择。
1、企业业务应用系统分层
企业软件开发的一个发展阶段,简单点梳理可以为:
企业的应用软件开发、设计、环境运行全部在公司内部私有云环境和数据中心;
软件开发、设计、测试等在企业内部,但是最终部署在公有云环境运行;
软件的开发、设计、测试、整个构建和部署、持续集成过程全部在公有云环境进行。
2、基于PaaS平台的IT架构加速企业业务系统敏捷
容器技术是形成PaaS平台的新契机。容器是2016年软件行业七大趋势之首,以Docker为代表的容器技术是一种轻量级虚拟化技术,实现应用封装标准化,形成混合云部署标准。
微服务架构引领企业软件架构的变革,将应用分割成一系列细粒度服务的应用架构模式,它与容器成就了企业应用开发、部署和性能伸缩的敏捷。围绕企业业务的关联性拆分微服务,使IT敏捷带动业务敏捷。
二、容器云PaaS的建设目标
Kubernetes作为容器编排技术标准为PaaS技术演进,PaaS与IaaS融合提供了基础,云原生为企业生产环境运行容器应用而设计。
以K8s为技术核心的容器云PaaS平台的建设主要包括:云管平台建设、CI/CD对接、容器镜像(应用商城)管理、日志与监控对接、应用编排、资源调度、网络存储等。为企业业务提供高可用高性能可伸缩的容器应用管理服务,促进业务价值的快速交付。
三、容器平台建设架构设计及实践经验
1、技术选型
我们从2019年年初开始进行技术调研,候选的产品包括:Kubersphere 、RancherLab、Kubernetes、OpenShift。我们对每个方案都进行了深度的预研究和技术评估,最终选择了OpenShift。
选择OpenShift的原因,主要是OpenShift是一个私有的基于Kubernetes的企业级PaaS(Platform-as-a-Service)解决方案,主要用来在容器中搭建、部署以及运行应用程序。对于当初容器技术及人员储备还处于起步阶段的我们来说,建设周期相对较短,在引入平台并且进行落地定制的过程中可以参考同类企业的应用案例。
2、OpenShift组件架构
OpenShift 的核心组件包括Master节点、Node节点、容器仓库(Container Registry)、路由层(Routing
Layer)、服务层(Service Layer)、Web Console和CLI。
各组件之间的层级关系如下图所示:
3、技术支撑
容器云PaaS,是基于 Kubernetes(OpenShift) 构建的分布式、多租户、企业级容器管理平台,做为下一代云计算技术,对支撑我司数字化转型和新技术研究有重要意义。
l企业级PaaS平台能力:高可用集群,弹性伸缩,多租户安全隔离;
l高效开发运维能力:物理机直接部署,完善的运维和监控体系;
lDevOps能力:CI / CD 、微服务治理、应用管理等功能,快速构建、部署及运维容器架构,实现应用的敏捷开发与全生命周期管理。
4、技术堆栈
容器云PaaS平台涉及的技术栈主要包括:webconsole、GitLab CI、K8s、ETCD、CRI-O等。基于底层的红帽CoreOS操作系统运行OpenShift的核心组件功能。
5、逻辑架构
容器云PaaS平台是一套对容器化应用进行管理的分布式平台,可以提供高可用、高性能、可伸缩的容器应用管理服务。底层是基础设施资源层,包括主机计算节点、网络、存储等资源共同构建的容器集群。
整体逻辑架构设计如下:运维人员针对容器集群内的基础节点、控制节点以及计算节点的调度管理(比如资源分配、限额、调度管理等)进行整体架构设计以及运维管理,开发人员通过GitLab提交代码后,CICD流水线打包构建镜像部署到容器集群。
同时,遵从我司的IT技术规范和运维要求,容器云PaaS平台对接的系统主要包括LDAP统一身份验证平台、统一日志平台、统一监控及告警平台、DevOps平台、云管平台、现有网络架构、对象存储、堡垒机等。
6、容器集群部署流程
当前容器集群部署流程如下图所示:流水线从GitLab拉取代码进行CICD过程(支持两种方式:Jenkins流水线、GitLab
CI)生成制品,构建镜像,部署(部署支持三种方式:Helm部署、手动部署、GitLab部署)到容器集群。
7、容器云PaaS平台与内部DevOps平台
目前集团内部存在DevOps平台和容器云PaaS平台。
根据实际业务场景进行应用划分,DevOps平台主要用于支持传统虚拟机的自动化部署(以Jenkins
pipeline为底座,流水线部署到传统虚拟机,也可以支持传统应用部署到容器云PaaS),容器云PaaS平台重点支持云原生应用的快速部署(云原生应用通过GitLab
CI流水线部署到容器云平台 )。
8、容器云日志收集
当前容器平台的日志输出进行了标准化定义且对接外部日志平台-ELK统一日志平台,由日志平台进行运行时日志收集。目前也在同步搭建独立的可观测性平台,进行整个DevOps工具链链条(包括容器云平台)的日志收集以及指标分析展示,同时为我们的AIOps提供基础支撑。
9、监控方案
传统基于IP的CPU、mem、磁盘等监控项不在适用于容器,需针对服务探针增加健康检查,主要监控包括:集群监控、分区监控、节点监控、组件监控、应用监控和Etcd监控。容器云平台Master和Node计算资源(CPU、内存、SWAP、磁盘、日志关键字等)通过Zabbix进行基础监控,OCP中运行的Pod(CPU、内存)通过Prometheus进行监控,相关监控数据使用Grafana仪表盘进行展示。
10、基础架构
支撑容器云平台的服务器有两种类型,一种是虚拟机,一种是裸金属服务器。和虚拟化服务器相比,裸金属服务器(Bare
Metal Server)极大地规避了虚拟化服务器的性能损失以及嘈杂邻居效应。本质上裸金属服务器就是物理服务器,不过又和云服务的结合,以达到云计算的弹性,因此是一种硬件和软件结合的产物。
英特尔也曾发表了一篇文章来定义裸金属即服务:“裸”,即要求它本身可以提供物理机级别的性能和安全隔离;“即服务”则意味着它还能实现物理机体验、以及基于云的资源管理和调配能力的高度融合。选择裸金属服务器还是虚拟机,由数据中心的实际情况而定。由于应用系统种类不一,对基础设施的资源需求也不一样,例如偏计算型就需要更多CPU,而裸金属服务器可灵活配置和维护。
同时,裸金属部署也是一种趋势的容器部署方案,有更好性能,更能充分发挥容器技术优势。恰如来自Twitter的OCI(开放容器标准)执行董事Chris
Aniszczyk曾提到的,“如果比较那些来自CNCF和OCI的使容器更加标准化的项目,你会发现它们确实更容易在裸金属上运行。我认为一段时间后你将看到更多的使用裸金属的容器,因为相比一个非常复杂的OpenStack环境,它确实更容易在裸金属环境中创建。”
综合考虑下,容器云平台选择裸金属服务器部署。裸金属容器部署的兼顾优势无法通过部分硬件或软件的更新换代能实现,需要从整体架构入手,包括计算、存储和网络硬件的选择、搭配和平衡,再到基础设施管理和应用层软件的开发和调优,到最后平台的部署和运维方式优化,都要考虑到位。在基础设施选型时,考虑硬件成本固然很重要,但这只是整体性能和性价比的一部分,选对生态系统很关键。英特尔?至强?可扩展处理器架构是当前广泛应用在云计算场景上的处理器架构,其广泛的可用性为客户提供了关键业务应用程序所需的一致性和可靠性。
随着容器云技术的日趋标准以及生态日趋成熟,容器云向上发展更多聚焦于微服务化应用的设计和实现;向下发展更多利用IA新硬件平台特性,通过标准化的接口适配更多的计算、存储、网络方案。英特尔近年来推出的一系列基于IA新硬件特性的计算、存储、网络、安全解决方案,赋能容器云不断助力企业降本增效,成功完成数字化转型。
英特尔也在和红帽积极构建一体化解决方案,两家公司针对多云架构下云原生参考架构中参考如下:
容器云裸金属服务器采用的是Dell PowerEdge R740,处理器是英特尔?至强?金牌6230CPU@2.10GHz及以上保障处理性能。
四、应用场景的实践
1、业务应用使用GitLab CI 部署到OpenShift 的云原生改造全过程实例
1)业务应用技术债改进
除了代码,技术文档、工具配置、数据库脚本、CI 等尽量统一使用源代码管理。
能够用工具、自动化解决的问题不要简单依赖文档、口口相传。
在开发环境尽量减少外部依赖,方便环境搭建。
开发框架、技术栈升级,偿技术债。
之后才是具体的云原生改造点。
2)云原生改造,关键动作包括:
创建 Dockerfile 用于构建应用的容器镜像。
创建 Helm Chart 用于部署到 OpenShift。
创建 .gitlab-ci.yml 用于自动化以上工作。
具体的改造过程如下图所示:
通过GitLab CI流水线进行容器化部署如下图所示:
2、可观测性平台搭建:
1)技术:
基于微服务技术:Thanos +Loki+Minio;
2)可观测性平台的建设目标:
集中式日志中心(将日志标准化输出和统一存储),统一分析。统一展示和多维关联(形成统一的监控视图,并可根据主题做关联分析)。
3)整体设计框架:
4)可观测性平台部署架构:
LB 为外部部署,主要用于 SSL Termination。由于 LB 是外部控制,因此使用 Nginx
自主配置分发到多个服务。Nginx 直接连接了 Prometheus、Thanos Querier
实例暴露相应 WebUI。
使用 OAuth2 Proxy 作为 Prometheus 等未内置权限管理的应用的代理,采用 Sidecar
模式。
以上的 Prometheus 主要是监控 DevOps 产品链如 GitLab、JFrog、Jenkins
等,OCP 有自己的 Prometheus,两个 Prometheus 实例抓取同样的数据。
5)Thanos
Thanos聚合Prometheus多数据源并进行自动去重后,给用户提供多维数据查看。
6)Loki
通过Loki获取日志,在grafana上进行展示。
7)Prometheus监控展示
可观测性平台会从DevOps工具链(GitLab、Jenkins、Sonar、Jfrog)及OpenShift容器平台收集所有日志信息,并且设计相应的指标,最终通过可观测性平台进行展示,交付给用户进行服务状态查看,日志信息查询,帮助问题排查诊断,提升平台整体运维体验。
五、业务效果
当前某些核心应用(比如集团三大APP之一的重点业务APP,子公司的部分to C应用,集团的内部管理类系统等)已经跑在容器云,快速交付尤其在业务节点期间容器云帮助业务应用实现快速伸缩容优势充分发挥了优势。比如从之前业务跑在传统虚拟上是业务节点期间遇到未可期的扩容可能会出现扩容前业务拥堵,扩容过程中业务等待等情况。接入容器云之后实现了资源的自助秒级获取,获取可用资源从之前的4h(最理想情况)降到了秒级。同时使用GitLab
CI进行部署可以实现快速回滚,保障业务的连续性和可用性。
在基础架构层面,选择裸金属部署,可以避免损耗提高资源的利用率,提升 ROI ,同时通过英特尔?至强?可扩展处理器、英特尔?傲腾?持久内存等技术,更高效地利用硬件级别的创新,加速计算、降低延迟,实现PaaS平台整体交付效能大大提升。
六、挑战及展望
我们在容器云建设推广、迁移过程中面临的最大挑战来自于技术人员的理念转变,容器技术改变了软件交付的生态,需要技术人员以新的理念构建应用,所以我们花了大量的时间精力在对技术人员进行云原生理念的宣导培养,然后筛选适合的业务应用进行云原生改造。
后续我们将逐步推动微服务架构引入,实现应用架构和基础架构转型,持续推动三大APP逐步接入容器平台。
容器云PaaS平台的建设是涵盖应用、软件和基础设施多类型技术栈的创新项目。关键业务容器化决策时,对整体架构设计会更为审慎,需要重视对基础设施资源的评估与选型。 |