KubeSphere 在互联网电商行业的应用实践

news2024/11/8 13:50:22

来自社区用户(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 发布!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1861728.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

轮播图的制作大全

例如该样式: 1.Vue的方法(可实现自动轮播和左右按钮和下方原点按钮轮播) <div id="app"><div class="a" ref="b" @mouseenter="MouseFun(c)" @mouseleave="MouseFun(d)">//1.图片显示盒子<div class=&qu…

F5《企业DNS建设白皮书》中的DNS解析服务器最佳实践

在这个数字化转型加速的时代&#xff0c;DNS&#xff08;域名系统&#xff09;的重要性不言而喻。每一次重大事件都凸显了DNS的可靠性和安全性问题。对企业而言&#xff0c;它不仅关系到业务连续性&#xff0c;更是提供永续数字服务的关键。本文根据F5公司发布的《企业DNS建设白…

一款强大的上位机模拟通讯工具----HslCommunicationDemo

目录 引言 工具概述 官网下载链接 安装步骤 使用教程 引言 在工业自动化和机器人控制领域&#xff0c;上位机模拟通讯工具是工程师和开发者日常工作中不可或缺的一部分。这些工具不仅能帮助我们验证设备间的通信状态&#xff0c;还能在设备调试和集成过程中提供极大的便利。…

Jenkins+K8s实现持续集成(三)

接上面一篇JenkinsK8s实现持续集成&#xff08;二&#xff09;&#xff0c;K8s创建秘钥。 看secret kubectl get secret 删除secret kubectl delete secret hello-secret -n train 创建secret kubectl create secret docker-registry hello-secret --docker-server镜像仓库…

【日常记录】【JS】优雅检测用户是否在指定元素的外部点击

文章目录 1、界面基本布局2、代码实现3、参考链接 1、界面基本布局 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">…

Qt案例-ApplicationExamples-Calqlatr

项目 一个Qt Quick应用程序设计的横向和纵向设备&#xff0c;使用自定义组件&#xff0c;响应式布局和JavaScript的应用程序逻辑。 项目路径&#xff1a; Qt\Examples\Qt-6.7.1\demos 环境&#xff1a;Qt6.7.1 MSVC 2019 64位 项目目录&#xff1a; calqlatr--CMakeList.txt…

网工内推 | 深圳网工,国企,最高20k,六险一金,NA以上认证

01 沛顿科技&#xff08;深圳&#xff09;有限公司 &#x1f537;招聘岗位&#xff1a;网络工程师 &#x1f537;岗位职责&#xff1a; 1、负责网络设备管理及维护&#xff0c;确保网络系统的稳定运行&#xff1b; 2、负责有效规划及实施网络布线系统&#xff1b; 3、负责服务…

学习C++第三天——对引用的深入了解

引用 引用不是新定义一个变量&#xff0c;而是给已存在变量取了一个别名&#xff0c;编译器不会为引用变量开辟内存空 间&#xff0c;它和它引用的变量共用同一块内存空间。 一个变量可以有多个引用&#xff1a; int main() {//一个变量可以有多个引用int a 10;int& b …

ubuntu的不同python版本的pip安装及管理

ubuntu的不同python版本的pip安装及管理_ubuntu 安装两个pip-CSDN博客https://blog.csdn.net/qq_32277533/article/details/106770850

老板舍不得买库存管理软件❓一招解决

在当今快节奏的商业环境中&#xff0c;仓库管理是企业运作中不可或缺的一环。对于许多中小型企业而言&#xff0c;简易且高效的库存管理系统尤为重要。搭贝简易库存管理系统针对仓库的出入库进行有效管理&#xff0c;帮助企业实现库存的透明化和流程的自动化。 客户的痛点 1. …

Java面试八股之Mybatis可以映射到枚举类吗

Mybatis可以映射到枚举类吗 Mybatis 可以映射到 Java 的枚举类型。默认情况下&#xff0c;Mybatis 会使用枚举类型的名称来进行映射。例如&#xff0c;如果你有一个如下的枚举类型&#xff1a; public enum UserStatus { ACTIVE, INACTIVE } Mybatis 会将数据库中的字符串值…

【Linux】进程间通信_4

文章目录 七、进程间通信1. 进程间通信分类systeam V共享内存消息队列信号量 未完待续 七、进程间通信 1. 进程间通信分类 systeam V共享内存 进程间通信的本质就是让不同进程看到同一份资源。而systeam V是通过让不同的进程经过页表映射到同一块内存空间&#xff08;操作系…

强化学习-RLHF-PPO入门

一、定义 强化学习微调分类RM模型 数据集格式训练流程Reward 模型训练流程(分类模型&#xff0c;积极为1&#xff0c;消极为0) AutoModelForSequenceClassificationReward 模型训练案例PPO模型训练流程PPO模型训练案例 二、实现 强化学习微调分类 RLHF:基于人类反馈对语言模型…

深度学习 —— 1.单一神经元

深度学习初级课程 1.单一神经元2.深度神经网络3.随机梯度下降法4.过拟合和欠拟合5.剪枝、批量标准化6.二分类 前言 本套课程仍为 kaggle 课程《Intro to Deep Learning》&#xff0c;仍按之前《机器学习》系列课程模式进行。前一系列《Keras入门教程》内容&#xff0c;与本系列…

eNSP中三层交换机的配置和使用

一、拓扑图 1.新建拓扑图 2.PC端配置 PC1: PC2&#xff1a; 二、基本命令配置 1.S1配置 <Huawei>system-view [Huawei]sysname S1 [S1]vlan 10 //在交换机 S1 上创建 VLAN 10 [S1-vlan10]vlan 20 // 在交换机 S1 上创建 VLAN 20 [S1-vlan20]quit //退出 VLAN 配置…

基于JSP的在线教育资源管理系统

开头语&#xff1a; 你好呀&#xff0c;我是计算机学长猫哥&#xff01;如果你对在线教育资源管理系统感兴趣或者有相关需求&#xff0c;欢迎在文末找到我的联系方式。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;JSP技术 工具&#xff1a;IDE、N…

基于Java仓储出入库管理系统设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f;感兴趣的可以先收藏起来&#xff0c;还…

代码随想录第34天|贪心算法

59.合并区间 class Solution { public:struct cmp{bool operator()(vector<int>& a, vector<int>& b) {return a[0] < b[0];}};vector<vector<int>> merge(vector<vector<int>>& intervals) {if (intervals.size() 1)retu…

六款顶级原型设计工具推荐,满足你所有需求!

即时设计作为一款专业原型工具&#xff0c;无论是从功能还是插件库配备情况来看&#xff0c;都是毫无疑问可以进行原型图设计的&#xff0c;而且&#xff0c;即时设计内设海量资源库&#xff0c;可以支持大家通过关键词进行搜索相关资源&#xff0c;并且在线编辑使用&#xff0…

Zookeeper:分布式系统中的协调者

Zookeeper&#xff1a;分布式系统中的协调者 前言&#xff1a;引言Zookeeper是什么&#xff1f; 基本概念Zookeeper 数据模型Znode 类型会话Watcher 应用场景分布式锁配置维护组服务名字服务 典型应用场景数据发布/订阅负载均衡命名服务分布式协调/通知集群管理Master选举 工作…