花生好车基于 KubeSphere 的微服务架构实践
公司简介
花生好车成立于 2015 年 6 月,致力于打造下沉市场汽车出行解决方案第一品牌。通过自建直营渠道,瞄准下沉市场,现形成以直租、批售、回租、新能源汽车零售,四大业务为核心驱动力的汽车新零售平台,目前拥有门店 600 余家,覆盖 400 余座城市,共设有 25 个中心仓库。目前已为超 40 万以上用户提供优质的用车服务,凭借全渠道优势和产品丰富度成功领跑行业第一梯队。
背景介绍
公司在自建 IDC 机房的物理服务器使用 kvm 作为底层虚拟机管理,随着业务增加,导致系统存在一些问题,故有了此次底层基础架构改造实践。
如:
- 利用率不饱和:各类服务器的 CPU 利用率普遍不饱和,闲时利用率低下,且忙闲不均;
- 耗能大:服务器需求量大,机柜、网络、服务器等利用率低;
- 基础资源庞杂:底层标准化不一,无法传承;
- 资源共享不足:烟筒式建设模式,资源相互隔离且固定投资成本高,为满足业务峰值,需采购大量数据扩容服务器产品等;
- 存储容量不断上升,逻辑存储设备增加,管理复杂和强度增大;
- 业务网缺乏总体发展规划,部分系统或平台的功能定位不清晰,跨部门、跨区域、跨系统的流程界面模糊;
- 系统开发和上线周期长,后期维护和问题定位开销大,平台的独立建设多为烟筒式建设和孤岛化解决方案;
- 业务流程,平台结构和接口缺乏统一规范和要求。
平台选型
作为 DevOps 运维团队,我们需要提供自助化的综合运维平台。在开源平台选型时,公司最终选择了 KubeSphere:
- 完全开源,无收费,可进行二次开发;
- 功能丰富,安装简单,支持一键升级和扩容,完善的 DevOps 工具链;
- 支持多集群管理,用户可以使用直接连接或间接连接导入 Kubernetes 集群;
- 集成可观测性,可按需添加想要监控的指标以及告警,以及日志查询;
- 自定义角色和审计功能,便于后续数据分析。
相比其他平台,KubeSphere 更好地规避了 Kubernetes 本身的复杂性,也减少了集成各类开源工具的工作量。这使得我们可以更专注于运维自动化与自助化平台建设,而不需要单独管理底层基础架构与服务。提供全栈的 IT 自动化运维的能力,简化企业的 DevOps 工作流。因此 KubeSphere 成为我们满足公司需求的最佳选择。
实践过程
基础设施建设与规划
Kubernetes 集群
因业务需要,我们将测试、生产两套环境独立开,避免相互影响。生产如上图所示是三个 Matsre 节点,目前为十三个 Node 节点,这里 Master 节点标注污点使其 Pod 不可调度,避免主节点负载过高等情况发生。
生产环境使用了官方推荐的 Keepalived 和 HAproxy 创建高可用 Kubernetes 集群 高可用 Kubernetes 集群能够确保应用程序在运行时不会出现服务中断,这也是生产的需求之一。
上图为官方文档,详细介绍可参考。
发版工作流示意图:
底层存储环境
底层存储环境,我们并未采用容器化的方式进行部署,而是以传统的方式部署。这样做也是为了高效,而且在互联网业务中,存储服务都有一定的性能要求来应对高并发场景。因此将其部署在裸机服务器上是最佳的选择。
MySQL、Redis、NFS 均做了高可用,避免了单点问题,Ceph 是作为 KubeSphere StorageClass 存储类通过 cephfs 挂载,目前大部分为无状态应用,后续部署有状态应用会对存储进一步优化。
监控平台
为日常高效使用 KubeSphere,我们将集成的监控告警进行配置,目前大部分可满足使用,至于 node 节点,通过单独的 PMM 监控来查看日常问题。
告警示例:
监控示例:
使用效果
引入 KubeSphere 很大程度的减轻了公司研发持续集成、持续部署的负担,极大提升了整个研发团队生产里项目交付效率。研发团队只需自行在本地实现 function 修复 Bug,之后 Commit 提交代码至 git,然后基于 Jenkins 发布测试环境/生产环境的工程,此时整套 CI/CD 持续集成交付的工作流程就彻底完成了,剩余的联调工作就交给研发。
基于 KubeSphere 实现 DevOps,给我们带来了最大的效率亮点如下:
-
平台一体化管理:在服务功能迭代方面,只需要登录 KubeSphere 平台,点击各自所负责的项目即可,极大的减轻了部署工作量,可以通过 Jenkins 结合 KubeSphere,同样能实现项目交付工作,但整套流程相对繁琐,既要关注 Jenkins 平台的构建情况,同时也要关注 KubeSphere 交付结果;造成了诸多不便,也背离了我们交付的初衷,后续我们可能通过 KubeSphere 自带的自定义流水线来统一管理。
-
资源利用率显著提高:KubeSphere 和 Kubernetes 相结合,进一步优化了系统资源利用率,降低了使用成本,最大限度增加了 DevOps 资源利用率。
未来规划(改进)
目前通过这次生产项目中引入 KubeSphere 云原生平台实践,发现确实给我们解决了微服务部署和管理的问题,基于 KubeSphere 平台的能力进行云原生架构的迁移,极大的提高我们的便捷性。负载均衡、应用路由、自动扩缩容、DevOps 等
在平台助力下,我们的研发和运维效率显著提升。我们相信运用 KubeSphere 的云原生平台,服务网格治理、金丝雀、灰度发布、链路追踪必将为公司下一步业务增长提供坚实基础。
本文由博客一文多发平台 OpenWrite 发布!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
MySQL字段的字符类型该如何选择?千万数据下varchar和char性能竟然相差30%?
MySQL字段的字符类型该如何选择?千万数据下varchar和char性能竟然相差30%? 前言 上篇文章MySQL字段的时间类型该如何选择?千万数据下性能提升10%~30%🚀我们讨论过时间类型的选择 本篇文章来讨论MySQL中字符类型的选择并来深入实践char与varchar类型的最佳使用场景 字符类型 我们最经常使用的字符串类型应该是char与varchar,它们作为本篇文章的主角,对于它们的描述我们放在后文详细介绍 文本字符串 当需要存储长文本时,可以使用文本类型 先来看看存储文本字符串的类型,从小到大依次为TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT 它们分别用于存储不同大小的文本,读取文本时(由于文本可能较大),因此是从磁盘中读取的 文本类型的查询会慢,但是可以存放的内容多 类型 范围(单位字符) TINYTEXT 0到2^8-1(255B) TEXT 0到2^16-1(64KB) MEDIUMTEXT 0到2^24-1(16MB) LONGTEXT 0到2^32-1 (4GB) 字节串 当存储二进制数据流时,可以选择二进制类型 它们从小到大依次是:T...
- 下一篇
13.3k Star! 别让NAS吃灰了! 一款导航聚合控制面板 — Dashy
对于NAS爱好者来说,导航页面并不陌生。在安装各种套件和Docker应用后,如何快速找到所需的应用一直是一个挑战。通常有三种方式:依赖记忆、使用收藏夹或利用导航页。前两种方法大家都熟知,但今天我们要介绍一款新的导航页应用——Dashy 应用简览 Dashy 是一款非常酷炫并且科技感十足的面板系统(不单单是导航页)。集成了多个网站的页面,在这个页面上,你可以快速访问你经常使用的网站。Dashy具有高度的自定义性,你可以自己添加和删除网站,也可以自己更换主题和背景。 主要功能 📃 支持多页面 🚦 每个应用程序/链接的实时状态监控 📊 使用小部件显示来自自托管服务的信息和动态内容 🔎 按名称、域名或标签进行即时搜索 + 可自定义的热键和键盘快捷键 🎨 许多内置颜色主题,带有 UI 颜色编辑器并支持自定义 CSS 🧸 许多图标选项 - Font-Awesome、homelab 图标、自动获取 Favicon、图像、表情符号等。 💂 具有多用户访问、可配置权限和 SSO 支持的可选身份验证 🌎 多语言支持,包括 10 多种人工翻译的语言,以及更多即将推出的语言 ☁ 提供可选的、加...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19