来自社区用户(SRE运维手记)投稿

背景

在云原生的时代背景下,Kubernetes 已经成为了主流选择。然而,Kubernetes 的原生操作复杂性和学习曲线较高,往往让很多团队在使用和管理上遇到挑战。因此,市面上出现了许多对 Kubernetes 进行封装和优化的工具,其中 KubeSphere 是一个集成了多种开源工具、提供全方位解决方案的企业级容器管理平台。

我们团队早期在持续集成和持续交付(CI/CD)、微服务治理、多租户管理和 DevOps 自动化方面就遇到了不少挑战,如 Jenkins 的权限管理短板、开发调试交互困难、多集群管理分散增加运维成本等。为了提升开发效率和运维质量,我们决定评估和引入一个适合的 Kubernetes 平台工具。经过调研和比较,我们最终选择了 KubeSphere。

选型说明

我们选择了 KubeSphere 3.3.2 版本,在选型过程中,我们主要考量了以下几个因素:

  • 易用性:平台是否提供直观的用户界面和简单易懂的操作流程,能够降低学习成本。
  • 功能完备性:平台是否集成了 CI/CD、监控、日志管理、微服务治理等功能,能够满足我们现有和未来的需求。
  • 扩展性:平台是否支持插件机制,能够方便地集成第三方工具和服务。
  • 社区活跃度:平台的社区是否活跃,是否有及时的技术支持和丰富的文档资源。

在对比了几款主流的 Kubernetes 平台工具后,我们发现 KubeSphere 在上述几个方面表现得都非常出色。尤其是在易用性和功能完备性方面,KubeSphere 提供了用户友好的界面和全方位的功能集成,能够显著降低我们的运维难度和学习成本。

实践过程

基础设施与部署架构

我们使用的是公有云环境,划分了 3 个 VPC,分别为非生产网络、生产网络,以及运维网络,其中非生产和生产网络隔离,而运维网络与其他网络打通,我们在运维网络中部署了运维中控平台用于管理这 3 个 VPC 的资源,KubeSphere 则借助其联邦模式,以运维网络的集群为主,其余网络的集群为成员,实现多集群管理,为了方便运维中控平台的管理,服务器推行了标准化,保障规格和配置的一致性,统一采用 32 核 128G 的配置,操作系统为 Centos7.9。

KubeSphere 集群节点界面截图:

部署架构示意图:

相关业务与 KubeSphere 的契合点

在选择和使用 KubeSphere 的过程中,我们发现它与我们现有的业务需求有着高度的契合,具体表现在以下几个方面:

  • 持续集成与持续交付(CI/CD):我们的开发流程高度依赖于 CI/CD 流水线,以确保代码的快速构建、测试和部署。我们采用的是 Jenkins pipeline 的技术方案,恰好 KubeSphere 也集成了 Jenkins,支持 pipeline 的流水线发布,使我们能够快速迁移和集成现有的 CI/CD 流程。

  • 可观测性和日志管理:KubeSphere 集成了 Prometheus、Grafana 和 EFK(Elasticsearch、Fluentd、Kibana)等工具 ,与我们在用的运维技术框架非常相似,也方便我们快速迁移。

  • 易用性和用户体验:Kubernetes 的原生操作复杂性较高,而 KubeSphere 提供了直观的用户界面和简单易懂的操作流程,使得我们的开发和运维人员能够快速上手并高效使用。KubeSphere 的易用性大大降低了我们的学习成本,提升了团队的整体工作效率。

总的来说,KubeSphere 在多个方面与我们的业务需求高度契合,通过其全面的功能集成和优异的用户体验,显著提升了我们的开发和运维效率,确保了业务的持续稳定运行。

存储与网络

存储

因为是公有云环境,我们选择了阿里云 NAS 作为 K8s 集群的存储,走的是 NFS 协议,我们根据存储的性能(通用型和极速型)定义了两个 StorageClass,其中有状态应用使用的是极速型存储,延迟在 0.3ms 左右。另外还安装了 csi-provisioner 插件,赋予集群自动创建和删除卷的能力,提升运维效率。

网络

cni 插件用的是阿里云的 Terway 独占 ENI 模式,为每个 Pod 分配一个独立的 ENI 和 IP 地址,每个 Pod 都拥有自己的网络接口,并且网络性能更接近于传统虚拟机。

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

日志

为了保持业务埋点数据采集流程不受影响,我们采用 Filebeat+Logstash+Elasticsearch+Kibana 的日志采集和分析方案,在 k8s 集群部署 filebeat deamonset 采集日志至外部 Logstash 集群,经过日志加工处理后存入 Elasticsearch 集群,Elasticsearch 集群采用冷热分层存储,最近 14 天的日志数据会被存储在热节点,超过 14 天的日志数据会被转移到冷节点。

日志告警使用 elastalert2,根据自定义的规则实现日志告警,为了方便规则配置和管理,我们在运维平台开发了 elastalert2 可视化管理界面

监控

使用 KubeSphere 平台集成的 Prometheus-operator+Grafana,多集群采集的监控指标数据通过 RemoteWrite 的方式传给 Thanos-Receive,再由 Alertmanager 根据策略进行告警,告警的数据会经过我们自主开发的 NotifyCenter 进行数据格式化、告警分组等,最终推送到电话或者聊天会话。

APM

前端使用 Sentry,后端使用 Skywalking,二者之间通过 RequestId 进行打通实现全链路监控,用于异常定位和性能分析。

CI/CD

在 KubeSphere 中,我们通过集成 DevOps 流水线功能和 Jenkins Shared Libraries 提高了 pipeline 的可管理性和代码的可复用性。Shared Libraries 的引入有效地解决了我们以往流水线杂乱和难以管理的局面,使得 CI/CD 流程更加高效和一致。

此外,为了进一步统一和管理 Kubernetes 配置,我们采用了 Kustomize 来管理 K8s YAML 文件。Kustomize 允许我们通过不同的 overlay 轻松管理各种环境的配置差异,确保配置的一致性和可维护性。

这种整合使得我们在 KubeSphere 中只需创建一个简单而高效的流水线,Jenkinsfile 的复杂度也大大降低,示例如下:

有状态服务管理

我们已经将 Mysql、Redis、Clickhouse、Zookeeper、Etcd 等有状态服务部署到 K8s,使用有将近一年多,很是稳定,同时也避免了传统服务器部署的单点隐患。

使用效果

使用效果主要总结为以下五点:

  • 稳定可靠:KubeSphere 在使用过程中表现出极高的稳定性,未出现任何异常。
  • 效率提升:KubeSphere 的自动化部署和流水线管理功能显著提升了开发和运维效率。通过集成 CI/CD 流程,减少了手动操作和人为错误,加快了代码发布和部署速度。
  • 用户体验:KubeSphere 的直观用户界面简化了操作,降低了学习曲线。统一的管理平台使团队成员能够更高效地进行日常运维和监控管理,提升了整体工作体验。
  • 安全管理:KubeSphere 提供了细粒度的权限控制和全面的审计日志功能,增强了系统的安全性。通过统一的安全策略管理,我们能够更好地保护敏感数据和关键应用。
  • 降低成本:通过 KubeSphere 的便捷可视化管理,运维可以将部分工作实现开发人员自助化管理,有效降低了运维成本。

未来规划

随着 AI 智能领域的崛起,出现了不少优秀的 AI Agent,也让我们不得不去思考和探索 AIOPS,我们希望未来的运维场景可以跟 AI 有更多的结合,如故障分析、告警自愈和预测分析等等,同时也希望 KubeSphere 有 AI 功能的出现,相信未来的运维会更加精彩。

本文由博客一文多发平台 OpenWrite 发布!

KubeSphere 在互联网电商行业的应用实践的更多相关文章

  1. JAVAEE——宜立方商城01:电商行业的背景、商城系统架构、后台工程搭建、SSM框架整合

    1. 学习计划 第一天: 1.电商行业的背景. 2.宜立方商城的系统架构 a) 功能介绍 b) 架构讲解 3.工程搭建-后台工程 a) 使用maven搭建工程 b) 使用maven的tomcat插件启 ...

  2. JAVAEE——淘淘商城第一天:电商行业的背景和技术特点,商城的介绍、技术的选型、系统架构和工程搭建

    1. 学习计划 1.电商行业的背景. 2.电商行业的技术特点 3.商城的介绍 a) 常用的名词介绍 b) 系统功能介绍 4.淘淘商城的系统架构 a) 传统架构 b) 分布式架构 c) 基于服务的架构 ...

  3. 原创:《Excel在零售及电商行业数据化管理中的应用》之“什么是数据化管理?

    <Excel在零售及电商行业数据化管理中的应用>之“什么是数据化管理?”                     各位: “随着全零售时代的到来,传统商业的每一个供应链细节都离不开数据的支 ...

  4. HR,OA,CRM,DRP,ERP什么意思?电商行业的特点?电商行业模式?专业术语?

    HR,OA,CRM,DRP,ERP HR----Human Resource人力资源管理 OA----Office Automation办公自动化 CRM---Customer Relationshi ...

  5. 转)SSO单点登录在互联网电商应用中的解决方案(基于CAS的改造)

    电商平台中无论是前端还是后端会存在大量的业务应用,在整个交易的过程中请求是在各个业务应用中流转的,对于用户来讲只需要登录一次就可以访问所有的业务,这就是单点登录SSO. 单点登录开源有很多的解决方案, ...

  6. Docker部署大型互联网电商平台

    1.Docker简介 1.1虚拟化 1.1.1什么是虚拟化 在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器.网络.内存及存储等,予以抽象 ...

  7. day68_淘淘商城项目_01_电商介绍 + 互联网术语 + SOA + 分布式 + 集群介绍 + 环境配置 + 框架搭建_匠心笔记

    课程计划 第一天: 1.电商行业的背景介绍--电子商务 2.淘淘商城的系统架构 a) 功能介绍 b) 架构讲解 3.工程搭建--后台工程 a) 使用maven搭建工程(工程大) b) 使用maven的 ...

  8. HMS Core电商与游戏行业解决方案,全流程赋能开发者创新

    2021年12月29日,"华为云&华为终端云服务创新峰会2022"在北京柏悦酒店成功举办.华为HMS Core电商与游戏行业解决方案亮相本次峰会的线下展区,为行业开发者们解 ...

  9. 谈B2B电商平台与大数据

    数据为王,服务为本——谈B2B电商平台与大数据 2013-06-27 11:10:41 作者:B2B行业资讯 标签:                             大数据           ...

  10. 电商app开发新趋势!如何突显竞争力?

    2017年是电商变化最大的一年,同时,也是最多机遇的一年,更是电商最好的时代,如最近所看到的亚马逊的市值已经超过了美国8大零售商的总和,带领美国率先走向了新零售时代;马云也在做改变,试图与线下的大卖场 ...

随机推荐

  1. 【Layui】16 表单元素 Form

    文档地址: https://www.layui.com/demo/form.html 表单元素: 1.输入框 2.密码框 3.下拉列表 4.单选框 5.复选框 6.文档域 7.富文本 8.开关 单行输 ...

  2. 视觉测距和SLAM —— Visual Odometry / SLAM

    地址: https://www.cvlibs.net/datasets/kitti/eval_odometry.php

  3. Jax计算框架的NamedSharding的reshape —— namedsharding-gives-a-way-to-express-shardings-with-names

    官方文档参考: https://jax.readthedocs.io/en/latest/notebooks/Distributed_arrays_and_automatic_parallelizat ...

  4. .Net Aspire初体验

    今天参加了Post Microsoft Build & AI Day深圳的集会,众多大佬分享了非常优质前沿的技术和实践,实在受益良多,为了消化吸收关于张队分享的.Net Aspire的内容,特 ...

  5. 【问答23】Linux移植:如何制作rootfs?

    粉丝问题 如何制作rootfs? 安排! 想直奔主题的,直接跳到第四章. 一.分析 1. 文件系统简介 理论上说一个嵌入式设备如果内核能够运行起来,且不需要运行用户进程的话,是不需要文件系统的,文件系 ...

  6. RabbitMQ 基础概念与架构设计及工作机制学习总结

    什么是RabbitMQ MQ全称为Message Queue,即消息队列. 它也是一个队列,遵循FIFO原则 .RabbitMQ则是一个开源的消息中间件,由erlang语言开发,基于AMQP协议实现的 ...

  7. centos7.3离线安装和配置NFS

    概述 # NFS为 Network FileSystem 的简称,它的目的就是想让不同的机器.不同的操作系统可以彼此分享个别的档案啦! 目前在 Unix Like 当中用来做为文件服务器是相当不错的一 ...

  8. Java是值传递还是引用传递,又是怎么体现的

    关于Java是值传递还是引用传递,可以从代码层面来实现一下拿到结果 执行下面的代码: public static void main(String[] args) { int num = 10; St ...

  9. Go实现常用的排序算法

    一.插入排序 1.从第一个元素开始,该元素可以认为已经被排序 2.取出下一个元素,在已经排序的元素序列中从后向前扫描 3.如果该元素(已排序)大于新元素,将该元素移到下一位置 4.重复步骤3,直到找到 ...

  10. Figma 学习笔记 – Comment

    步骤 按 c 键 -> 点击区域 -> 写 comment -> post 它不仅仅在 design 的 page 可以写 comment 哦, 在预览 prototype 页面也是 ...