首页 > 其他分享 >某制造企业基于 KubeSphere 的云原生实践

某制造企业基于 KubeSphere 的云原生实践

时间:2023-07-28 15:07:45浏览次数:97  
标签:原生 服务 Kubernetes 部署 KubeSphere 实践 监控 pod

背景介绍

随着业务升级改造与软件产品专案的增多,常规的物理机和虚拟机方式逐渐暴露出一些问题:

  • 大量服务部署在虚拟机上,资源预估和硬件浪费较大;
  • 大量服务部署在虚拟机上,部署时间和难度较大,自动化程度较低;
  • 开发人员和运维人员,由于开发和部署服务环境不同,服务不稳定经常报错,产生的隔阂问题较多,效率较低;
  • 排查问题原因不便利,开发没权限上生产环境,服务日志和服务监控状态无法定位。

在竞争日益激烈和不断变化的市场环境下,公司需要在产品上不停的迭代开发,来满足业务的需求,快速进行响应变化,所以解决上述问题变得愈发迫切。

选型说明

我们调研了两款开源产品。经过综合评估和比较,我们最终选择了 KubeSphere。KubeSphere 的定位是以应用为中心的容器平台,提供了简单易用的操作界面,一定程度上降低了学习成本,同时集成了原生 Istio 等功能,更加符合开发的使用习惯。

实践过程

加快开发对应用需求的响应,快速交付价值,快速响应变化。敏捷开发是用短的迭代周期来适应更快的变化,而且保持增量的持续改进的过程,Kubernetes + Docker 是 Dev 和 Ops 融合的一个桥梁,反过来说,敏捷开发与自动化运维,推动企业 DevOps 落地,提供端对端的从需求分析到部署监控的全流程开发运维一体化。

某制造企业基于 KubeSphere 的云原生实践_制造企业

基础设施与部署架构

KubeSphere 的搭建也非常简单,通过 KubeAdmin 安装 Kubernetes,然后用 KubeSphere 官网推荐的方式安装 KubeSphere。私有内部云平台环境来搭建 Kubernetes 与 KubeSphere。基础服务器采用的是 Linux Centos 7,内核版本是 5.6。

在搭建 Kubernetes 集群时,我们选择使用 Keepalived 和 HAproxy 创建高可用 Kubernetes 集群 master,其中包括负载均衡入口。

部署参考图:

某制造企业基于 KubeSphere 的云原生实践_Kubernetes_02

某制造企业基于 KubeSphere 的云原生实践_制造企业_03

存储与网络

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

某制造企业基于 KubeSphere 的云原生实践_Kubernetes_04

同时也用 NFS 存储做一些有状态的数据备份和日志备份文件的存储。

网络选择了 Calico 这种纯三层的 BGP 的网络。

平台和应用的日志、监控、APM

我们采用了 ELK 采集各种基础服务和业务服务的 log,并进行日志报警监控。

某制造企业基于 KubeSphere 的云原生实践_KubeSphere_05

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

某制造企业基于 KubeSphere 的云原生实践_Kubernetes_06

某制造企业基于 KubeSphere 的云原生实践_云原生_07

同时,我们使用 SkyWalking 来监控服务的 API 全链路性能。

CI/CD

我们使用的 KubeSphere 的 DevOps模块,里面集成了 Jenkins,流水线的构建,实现了项目从拉取代码,质量检查到项目部署一键化的流程,在 DevOps 模块中用的是自定义 GitLab 仓库。

参考图形如下:

某制造企业基于 KubeSphere 的云原生实践_KubeSphere_08

某制造企业基于 KubeSphere 的云原生实践_制造企业_09

有状态服务管理

我们目前管理了 Redis、RabbitMQ 和 Elasticsearch 等集群。

  • 唯一性——对于包含 N 个副本的 StatefulSet,每个 pod 会被分配一个 [0,N) 范围内的唯一序号。
  • 顺序性——StatefulSet 中 pod 的启动、更新、销毁默认都是按顺序进行的。
  • 稳定的网络身份标识——pod 的主机名、DNS 地址不会随着 pod 被重新调度而发生变化。
  • 稳定的持久化存储——当 pod 被重新调度后,仍然能挂载原有的 PersistentVolume,保证了数据的完整性和一致性。

使用效果

KubeSphere 是一个非常流行的容器编排工具,它可以帮助用户管理和部署容器化应用程序。使用 KubeSphere 可以提高应用程序的可靠性、可扩展性和安全性。

  • 开发人员几乎不用耗费时间在软件的部署和监控上,不需要关心过多的底层部署细节,节省约 30% 时间,产品迭代速度更快。
  • 按角色管理权限,开发人员排查服务的错误更加方便,直接在平台上查看 log、指标数据、监控报表都很快捷,节省约 20% 的时间。
  • 优化了资源利用率,降低了成本,在以前我们都是在 VM 上进行部署,服务器资源浪费比较大,经常也会进行资源利用率的检讨,上 KubeSphere 之后,资源利用率提高了 30% 以上。

未来规划

在未来,我们计划进一步发展和改进我们的基础设施环境和 DevOps 全流程效率,覆盖自动化测试流程。我们将继续关注新的技术趋势(服务网格,服务治理等)和最佳实践,并根据业务需求进行相应的升级和优化。我们也将继续加强团队的培训和技术能力,以更好地支持公司的业务发展。

标签:原生,服务,Kubernetes,部署,KubeSphere,实践,监控,pod
From: https://blog.51cto.com/u_15533008/6882811

相关文章

  • 云原生|kubernetes|安全漏扫神器trivy的部署和使用
    前言:云原生领域内的安全漏扫工具有clair和trivy是比较常用的,而安全漏扫工具是可以和harbor这样的私有仓库集成的,自harbor-1.21版以后都是默认使用trivy这个漏扫工具的,而在此之前是使用clair的。那么,本文将就什么是trivy,trivy如何正确的部署,如何正确的使用做一个简单的探讨。一,......
  • # mac 使用 Docker 部署Python服务和web app服务最佳实践~保姆级教程
    目录部署Python后端服务部署python服务最佳实践部署web前端应用Docker同步到另一台设备部署Python后端服务部署python服务拉取python镜像dockerpullpython:3.9.13查看镜像dockerimages运行容器dockerrun-p9000:8080-it--namepytest-v~/PycharmPr......
  • 最后的组合:K8s 1.24 基于 Hekiti 实现 GlusterFS 动态存储管理实践
    前言知识点定级:入门级GlusterFS和Heketi简介GlusterFS安装部署Heketi安装部署Kubernetes命令行对接GlusterFS实战服务器配置(架构1:1复刻小规模生产环境,配置略有不同)主机名IPCPU内存系统盘数据盘用途ks-master-0192.168.9.912450100KubeS......
  • 【实践篇】推荐算法PaaS化探索与实践
    作者:京东零售崔宁1.背景说明目前,推荐算法部支持了主站、企业业务、全渠道等20+业务线的900+推荐场景,通过梳理大促运营、各垂直业务线推荐场景的共性需求,对现有推荐算法能力进行沉淀和积累,并通过算法PaaS化打造通用化的推荐能力,提升各业务场景推荐赋能效率,高效赋能业务需求。......
  • HBase Compaction 原理与线上调优实践
    作者:vivo互联网存储技术团队-HangZhengbo本文对HBaseCompaction的原理、流程以及限流的策略进行了详细的介绍,列举了几个线上进行调优的案例,最后对Compaction的相关参数进行了总结。一、Compaction介绍HBase是基于一种LSM-Tree(Log-StructuredMergeTree)体系架构的存储模......
  • Zabbix Server 6.0 LTS 原生高可用HA集群部署 - On Debian11
    官方文档里面说明,ZabbixServerHA最少需要两个节点,多台Zabbixserver作为集群中的节点运行。当集群中的一个Zabbixserver处于active时,其他服务器处于standy,随时准备在必要时接管。无论集群的节点数量有多少,只有一个节点实例是出于Active状态,Standby节点不收集监控数据或者......
  • DevOps|服务治理与服务保障实践指南
    朱晋君@君哥聊技术 我自己为了消化里边的内容,整理了一个脑图,希望对你有帮助。   凌晨四点被公司的监控告警叫醒了,告警的原因是生产环境跑批任务发生故障。即刻起床处理故障,但还是花了不少时间才解决。这次故障是一次数据校验的跑批任务,校验前面跑批任务的数据是否正确......
  • Mockito单元测试最佳实践
    Mockito可以帮助我们模拟创建对象,经常用于模拟外系统、数据库、及其它方法中调用的对象 使用mockito时,单元测试类需要加上注解@RunWith(MockitoJUnitRunner.class),在@Before方法中加上MockitoAnnotations.openMocks(this);使用spring框架时,经常使用@Autowired注解,在这里被注......
  • JVM系统优化实践(23):GC生产环境案例(6)
    您好,这里是「码农镖局」51CTO博客,欢迎您来,欢迎您再来~在互联网大厂中,对每天亿级流量的日志进行清洗、整理是非常常见的工作。在某个系统中,需要对用户的访问日志做脱敏处理,也就是清洗掉姓名、身份证号、手机号等个人隐私信息后在保存到数据库中或者交付给其他应用使用。系统的设计者......
  • 浏览器web原生播放 rtmp,rtsp(h264, h265),flv, hls 的解决方案
    一、liveweb简述liveweb是一款超低延时(150-200毫秒)、秒启动、无插件web实时视频播放器,h5视频播放器,支持egde、firefox、Chrome、safari等常见浏览器。支持h264、h265、AAC、G711等常见音视频格式。支持协议:RTSP、RTMP、HLS、HTTP-FLV、WebSocket-FLV、GB28181、HTTP-TS、WebSocke......