公司简介

花生好车成立于 2015 年 6 月,致力于打造下沉市场汽车出行解决方案第一品牌。通过自建直营渠道,瞄准下沉市场,现形成以直租、批售、回租、新能源汽车零售,四大业务为核心驱动力的汽车新零售平台,目前拥有门店 600 余家,覆盖 400 余座城市,共设有 25 个中心仓库。目前已为超 40 万以上用户提供优质的用车服务,凭借全渠道优势和产品丰富度成功领跑行业第一梯队。

背景介绍

公司在自建 IDC 机房的物理服务器使用 kvm 作为底层虚拟机管理,随着业务增加,导致系统存在一些问题,故有了此次底层基础架构改造实践。

如:

  • 利用率不饱和:各类服务器的 CPU 利用率普遍不饱和,闲时利用率低下,且忙闲不均;
  • 耗能大:服务器需求量大,机柜、网络、服务器等利用率低;
  • 基础资源庞杂:底层标准化不一,无法传承;
  • 资源共享不足:烟筒式建设模式,资源相互隔离且固定投资成本高,为满足业务峰值,需采购大量数据扩容服务器产品等;
  • 存储容量不断上升,逻辑存储设备增加,管理复杂和强度增大;
  • 业务网缺乏总体发展规划,部分系统或平台的功能定位不清晰,跨部门、跨区域、跨系统的流程界面模糊;
  • 系统开发和上线周期长,后期维护和问题定位开销大,平台的独立建设多为烟筒式建设和孤岛化解决方案;
  • 业务流程,平台结构和接口缺乏统一规范和要求。

平台选型

作为 DevOps 运维团队,我们需要提供自助化的综合运维平台。在开源平台选型时,公司最终选择了 KubeSphere:

  1. 完全开源,无收费,可进行二次开发;
  2. 功能丰富,安装简单,支持一键升级和扩容,完善的 DevOps 工具链;
  3. 支持多集群管理,用户可以使用直接连接或间接连接导入 Kubernetes 集群;
  4. 集成可观测性,可按需添加想要监控的指标以及告警,以及日志查询;
  5. 自定义角色和审计功能,便于后续数据分析。

相比其他平台,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 发布!

花生好车基于 KubeSphere 的微服务架构实践的更多相关文章

  1. 基于 Docker 的微服务架构实践

    本文来自作者 未闻 在 GitChat 分享的{基于 Docker 的微服务架构实践} 前言 基于 Docker 的容器技术是在2015年的时候开始接触的,两年多的时间,作为一名 Docker 的 D ...

  2. 基于netty的微服务架构

    基于netty的微服务架构 微服务一篇好文章 http://san-yun.iteye.com/blog/1693759 教程 http://udn.yyuap.com/doc/essential-n ...

  3. 基于 Spring Cloud 的微服务架构实践指南(下)

    show me the code and talk to me,做的出来更要说的明白 本文源码,请点击learnSpringCloud 我是布尔bl,你的支持是我分享的动力! 一.引入 上回 基于 S ...

  4. 微服务架构实践 - 你只懂docker与spring boot就够了吗?

    微服务架构实践 - 你只懂docker与spring boot就够了吗? 作者 浮云发发 已关注 2017.02.27 02:50* 字数 2613 阅读 2583评论 6喜欢 35赞赏 2 微服务并 ...

  5. 基于.net的微服务架构的开发测试环境运维实践

    眼下,做互联网应用,最火的架构是微服务,最热的研发管理就是DevOps, 没有之一.微服务.DevOps已经被大量应用,它们已经像传说中的那样,可以无所不能.特来电云平台,通过近两年多的实践,发现完全 ...

  6. iUAP云运维平台v3.0全面支持基于K8s的微服务架构

    什么是微服务架构? 微服务(MicroServices)架构是当前互联网业界的一个技术热点,业内各公司也都纷纷开展微服务化体系建设.微服务架构的本质,是用一些功能比较明确.业务比较精练的服务去解决更大 ...

  7. 基于.net的微服务架构下的开发测试环境运维实践

    眼下,做互联网应用,最火的架构是微服务,最热的研发管理就是DevOps, 没有之一.微服务.DevOps已经被大量应用,它们已经像传说中的那样,可以无所不能.特来电云平台,通过近两年多的实践,发现完全 ...

  8. 基于容器与微服务架构的Web应用示例eShopOnContainers

    简介 微软官方提供了一个基于Docker和微服务的示例应用eShopOnContainers:它使用了面向服务的架构并且从服务端到客户端都是跨平台的:该架构使用通过http作为客户端与服务端直接的通信 ...

  9. 用友iuap云运维平台支持基于K8s的微服务架构

    什么是微服务架构? 微服务(MicroServices)架构是当前互联网业界的一个技术热点,业内各公司也都纷纷开展微服务化体系建设.微服务架构的本质,是用一些功能比较明确.业务比较精练的服务去解决更大 ...

  10. 基于OpenResty和Node.js的微服务架构实践

    什么是微服务? 传统的单体服务架构是单独服务包,共享代码与数据,开发成本较高,可维护性.伸缩性较差,技术转型.跨语言配合相对困难.而微服务架构强调一个服务负责一项业务,服务可以单独部署,独立进行技术选 ...

随机推荐

  1. windows11系统NVIDIA显卡驱动自动升级导致2070 Super显卡失效 —— 552.22版本自动升级到560.70版本后2070 Super型号显卡停止工作

    操作系统 Windows11,旧版本显卡驱动是552.22,由于安装的是NVIDIA Geforce Experience后显卡驱动自动升级到560.77版本,然后显卡不再工作. 重新安装显卡驱动56 ...

  2. chatgpt的api联网报错问题解决:openai公司的api联网报错解决

    chatgpt是啥,这里不讲,openai是啥这里也不讲.要知道我们不论是通过网页web使用chatgpt还是使用api方式通过客户端使用chatgpt都是需要使用外国IP的, 为啥我们不能访问ope ...

  3. vscode中使用ssh进行远程项目开发时无法连接远端服务器——如何解决

    找到vscode中的ssh扩展(Visual Studio Code Remote - SSH),然后卸载,再重新安装,即可解决. PS: 重新安装时需要较长时间的等待. ============== ...

  4. [SDOI2012] 走迷宫 题解

    前言 题目链接:洛谷:Hydro & bzoj. 题意简述 有向图中,求起点到终点的期望步数.若期望不存在,输出 INF. 保证强连通分量的大小不超过 \(100\). 题目分析 首先来想想什 ...

  5. 为什么大部分的 PHP 程序员转不了 Go 语言?

    大家好,我是码农先森. 树挪死,人挪活,这个需求我做不了,换个人吧.大家都有过这种经历吧,放在编程语言身上就是 PHP 不行了,赶紧转 Go 语言吧.那转 Go 语言就真的行了?那可不见得,我个人认为 ...

  6. Sentry 开源版与商业 SaaS 版的区别

    您会在官方的文档中找到大量对 sentry 和 getsentry 的引用.两者都是 Django 应用程序,但 sentry 是开源的, getsentry 是闭源的.里面有什么? https:// ...

  7. Ubuntu 安装基于 DEB 的 Firefox

    自从 Canonical 推出了 Snap 之后,在所有新推出的 Ubuntu 发行版中都预装了 Snap 版的 Firefox,并将 APT 中的 Firefox 包指向了 Snap 的 Firef ...

  8. 【Appium】之自动化定位总结

    一.同级定位时,先定位上级 我想定位[必填]框,我先定位[姓名]的同一个上级 self.driver.find_element(MobileBy.XPATH,"//*[contains(@t ...

  9. [项目] 在openharmony上跑CV

    板子资料 瑞星微 rk3568, CPU: RK3568四核64位Cortex-A55 处理器,采用全新ARM v8.2-A架构 Cortex A55 基于64位Armv8.2-A指令集设计,支持64 ...

  10. 【Azure Developer】上手 The Best AI Code "Cursor" : 仅仅7次对话,制作个人页面原型,效果让人惊叹!

    AI Code 时代早已开启,自己才行动.上手一试,让人惊叹.借助这感叹的情绪,把今天操作Cursor的步骤记录下来,也分享给大家. 推荐大家上手一试,让你改变! 准备阶段 下载 Cursor(htt ...