某制造企业基于 KubeSphere 的云原生实践
背景介绍
随着业务升级改造与软件产品专案的增多,常规的物理机和虚拟机方式逐渐暴露出一些问题:
- 大量服务部署在虚拟机上,资源预估和硬件浪费较大;
- 大量服务部署在虚拟机上,部署时间和难度较大,自动化程度较低;
- 开发人员和运维人员,由于开发和部署服务环境不同,服务不稳定经常报错,产生的隔阂问题较多,效率较低;
- 排查问题原因不便利,开发没权限上生产环境,服务日志和服务监控状态无法定位。
在竞争日益激烈和不断变化的市场环境下,公司需要在产品上不停的迭代开发,来满足业务的需求,快速进行响应变化,所以解决上述问题变得愈发迫切。
选型说明
我们调研了两款开源产品。经过综合评估和比较,我们最终选择了 KubeSphere。KubeSphere 的定位是以应用为中心的容器平台,提供了简单易用的操作界面,一定程度上降低了学习成本,同时集成了原生 Istio 等功能,更加符合开发的使用习惯。
实践过程
加快开发对应用需求的响应,快速交付价值,快速响应变化。敏捷开发是用短的迭代周期来适应更快的变化,而且保持增量的持续改进的过程,Kubernetes + Docker 是 Dev 和 Ops 融合的一个桥梁,反过来说,敏捷开发与自动化运维,推动企业 DevOps 落地,提供端对端的从需求分析到部署监控的全流程开发运维一体化。

基础设施与部署架构
KubeSphere 的搭建也非常简单,通过 KubeAdmin 安装 Kubernetes,然后用 KubeSphere 官网推荐的方式安装 KubeSphere。私有内部云平台环境来搭建 Kubernetes 与 KubeSphere。基础服务器采用的是 Linux Centos 7,内核版本是 5.6。
在搭建 Kubernetes 集群时,我们选择使用 Keepalived 和 HAproxy 创建高可用 Kubernetes 集群 master,其中包括负载均衡入口。
部署参考图:


存储与网络
目前我们主要对接的是 Ceph 的分布式存储,服务于各种持久化服务,比如我们会做一些 Harbor 的镜像,主要是 Rabbitmq、Redis、MySQL 等,生产环境主要是一些无状态的开发的服务,比如 Springboot、SpringCloud 开发的微服务,还有 Python 服务。Python 服务主要是用来做 AI 模型的简单分析。

同时也用 NFS 存储做一些有状态的数据备份和日志备份文件的存储。
网络选择了 Calico 这种纯三层的 BGP 的网络。
平台和应用的日志、监控、APM
我们采用了 ELK 采集各种基础服务和业务服务的 log,并进行日志报警监控。

我们使用 Prometheus+grafana,进行 OS、K8s 系统组件和 Pod 服务的采集和监控。


同时,我们使用 SkyWalking 来监控服务的 API 全链路性能。
CI/CD
我们使用的 KubeSphere 的 DevOps模块,里面集成了 Jenkins,流水线的构建,实现了项目从拉取代码,质量检查到项目部署一键化的流程,在 DevOps 模块中用的是自定义 GitLab 仓库。
参考图形如下:


有状态服务管理
我们目前管理了 Redis、RabbitMQ 和 Elasticsearch 等集群。
- 唯一性——对于包含 N 个副本的 StatefulSet,每个 pod 会被分配一个
[0,N)范围内的唯一序号。 - 顺序性——StatefulSet 中 pod 的启动、更新、销毁默认都是按顺序进行的。
- 稳定的网络身份标识——pod 的主机名、DNS 地址不会随着 pod 被重新调度而发生变化。
- 稳定的持久化存储——当 pod 被重新调度后,仍然能挂载原有的 PersistentVolume,保证了数据的完整性和一致性。
使用效果
KubeSphere 是一个非常流行的容器编排工具,它可以帮助用户管理和部署容器化应用程序。使用 KubeSphere 可以提高应用程序的可靠性、可扩展性和安全性。
- 开发人员几乎不用耗费时间在软件的部署和监控上,不需要关心过多的底层部署细节,节省约 30% 时间,产品迭代速度更快。
- 按角色管理权限,开发人员排查服务的错误更加方便,直接在平台上查看 log、指标数据、监控报表都很快捷,节省约 20% 的时间。
- 优化了资源利用率,降低了成本,在以前我们都是在 VM 上进行部署,服务器资源浪费比较大,经常也会进行资源利用率的检讨,上 KubeSphere 之后,资源利用率提高了 30% 以上。
未来规划
在未来,我们计划进一步发展和改进我们的基础设施环境和 DevOps 全流程效率,覆盖自动化测试流程。我们将继续关注新的技术趋势(服务网格,服务治理等)和最佳实践,并根据业务需求进行相应的升级和优化。我们也将继续加强团队的培训和技术能力,以更好地支持公司的业务发展。
本文由博客一文多发平台 OpenWrite 发布!
某制造企业基于 KubeSphere 的云原生实践的更多相关文章
- [转帖]从 SOA 到微服务,企业分布式应用架构在云原生时代如何重塑?
从 SOA 到微服务,企业分布式应用架构在云原生时代如何重塑? 2019-10-08 10:26:28 阿里云云栖社区 阅读数 54 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权 ...
- 从 SOA 到微服务,企业分布式应用架构在云原生时代如何重塑?
作者 | 易立 阿里云资深技术专家 导读:从十余年前的各种分布式系统研发到现在的容器云,从支撑原有业务到孵化各个新业务,企业的发展离不开统一的.与时俱进的技术架构.本篇文章从企业分布式应用架构层面介绍 ...
- 藏书馆App基于Rainbond实现云原生DevOps的实践
我们需要的不是精通Kubernetes的工程师,我们需要一款小白都能用好的管理工具. -- 厦门正观易知科技有限公司运维负责人 郭传壕 大家好,我是厦门正观易知科技有限公司运维负责人郭传壕. 藏书馆是 ...
- 订单峰值激增 230%,Serverless 如何为世纪联华降本超 40%?|双11 云原生实践
作者 | 朱鹏 导读:2020 年 双11,世纪联华基于阿里云函数计算 (FC) 弹性扩容,应用于大促会场 SSR.线上商品秒杀.优惠券定点发放.行业导购.数据中台计算等多个场景,业务峰值 QPS 较 ...
- 宙斯盾 DDoS 防护系统“降本增效”的云原生实践
作者 tomdu,腾讯云高级工程师,主要负责宙斯盾安全防护系统管控中心架构设计和后台开发工作. 导语 宙斯盾 DDoS 防护系统作为公司级网络安全产品,为各类业务提供专业可靠的 DDoS/CC 攻击防 ...
- 传统保险企业基于 Dubbo 的微服务实践
本文整理自中国人寿保险(海外)股份有限公司深圳中心技术总监家黄晓彬在 Dubbo 社区开发者日深圳站的现场分享. 中国人寿保险(海外)股份有限公司负责香港.澳门.新加坡和印尼的业务开发,和国内业务不同 ...
- 飞猪基于 Serverless 的云+端实践与思考
作者 | 王恒飞(承荫) 本文整理自飞猪旅行前端技术专家--王恒飞(承荫)在[阿里云 Serverless Developer Meetup 上海站]上的分享.点击查看直播回放:https://dev ...
- NodeJS 基于 Dapr 构建云原生微服务应用,从 0 到 1 快速上手指南
Dapr 是一个可移植的.事件驱动的运行时,它使任何开发人员能够轻松构建出弹性的.无状态和有状态的应用程序,并可运行在云平台或边缘计算中,它同时也支持多种编程语言和开发框架.Dapr 确保开发人员专注 ...
- 【转】从SOA到微服务,企业分布式应用架构在云原生时代如何重塑
摘要: SOA 采用中心化的服务总线架构,解耦了业务逻辑和服务治理逻辑:微服务架构回归了去中心化的点对点调用方式,在提升敏捷性和可伸缩性的同时,也牺牲了业务逻辑和服务治理逻辑解耦所带来的灵活性. 为了 ...
- 云原生实践之 RSocket 从入门到落地:Servlet vs RSocket
技术实践的作用在于:除了用于构建业务,也是为了验证某项技术或框架是否值得大规模推广. 本期开始,我们推出<RSocket 从入门到落地>系列文章,通过实例和对比来介绍RSocket.主要围 ...
随机推荐
- 解决Python使用matplotlib绘图时出现的中文乱码问题
原文地址: https://blog.csdn.net/qq_33254766/article/details/120304721 全文略,详细见原文. 解决方法: # 设置字体的属性 # plt.r ...
- 全球最大开源模型Grok-1 —— 马斯克的大模型
Grok官网: https://grok.x.ai/
- 树莓派3b+ ubuntu mate18.04系统下的kodi软件 实现airplay投屏
1. 更新资源 sudo apt-get update 2. 安装kodi sudo apt-get install kodi 安装成功后系统菜单中的音影一栏中有kodi 这一项,进入kod ...
- 在docker 容器开启ssh , 并映射22端口到物理载体机上以使外网访问
1. 运行某镜像以启动容器 docker run -it -p 127.0.0.1:5000:22 c7fe6d9267f8 /bin/bash -p 为指定端口, 127.0.0.1 为映射到的物 ...
- 【转载】 PyTorch下训练数据小文件转大文件读写(附有各种存储格式对比)
版权声明:本文为CSDN博主「Liekkas Kono」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明.原文链接: https://blog.csdn.net/s ...
- 英语.Net多语言开发中的问题
问题与现象 多语言开发是一件成本很高的事情. 很多公司会退而求其次选择只开发英文版本的软件分发到不同国家,但这里仍存在不同问题. 我们就遇到了这样的问题,参考下面的代码. CultureInfo cu ...
- 如何利用HMMER鉴定基因家族成员
通常我们用的都是通过blast比对来确定我们需要的家族成员,首先是比对序列,再次是需要目标物种的蛋白序列,来进行比对,通常比对的时候我们都需要设定e-value值.今天我们来学习一下利用HMMER来鉴 ...
- 【Linux驱动】充电芯片bq24735调试详解
一.bq24735简介 bq24735 是一款高效率同步电池充电器. 当系统供电需求暂时高于适配器最大供电水平的时候, bq24735 使用智能加速技术来允许电池向系统中释放能量,这样的话将保护适配器 ...
- 【原创】VSCode 快捷键汇总(已整理成一张 A4 纸大小,方便打印)
由于经常记不住 VSCode 的快捷键,每次查找不方便,于是乎做了一份 VSCode 快捷键汇总,已整理成一张 A4 纸大小,方便打印,这样查找就直观多了~ 直接保存图片,横向打印即可.
- draw.io 输入数学公式
首先我们要把数学排版功能打开: 然后输入数学公式: AsciiMath 公式由 ` 包裹,如:`a2+b2 = c^2` LaTeX 公式由 $$ 包裹,如:$$\sqrt{3×-1}+(1+x)^2 ...