蜘点云原生之 KubeSphere 落地实践过程

news2024/9/28 23:23:41

作者:池晓东,蜘点商业网络服务有限公司技术总监,从事软件开发设计 10 多年,喜欢研究各类新技术,分享技术。 来源:本文由 11 月 25 日广州站 meetup 中讲师池晓东整理,整理于该活动中池老师所分享的同名议题内容。

公司平台介绍

蜘点成立于 2016 年 4 月,致力于打造社区电商业务(解决最后 3 公里的配送问题)。当初通过自建直营渠道、自建仓库、自建大型社区仓、和采用加盟仓的方式,实现在社区的电商业务的发展,配送本地化。最多的时候在全国各个省都有分公司及下属子公司,在每个省都有省仓,在南北的主要城市都建有大型仓。

后面随着电商行业的落幕,公司又转型做企业数字化整体解决方案(产业互联网方向)。整体发展如下图:

平台背景介绍

公司通过购买服务器组建了一个内部云,托管在 IDC 机房中,一直使用 VMware 的虚拟化技术,来实现虚拟机的管理。随着业务增加,项目从单体架构向分布式架构演进,虚拟机数量也随着增加,给开发与运维管理来了不少问题,随着微服务技术的发展,采用容器化架构成为了解决公司底层架构的问题。

  • 业务快速发展,不新增虚拟主机,环境搭建复杂,早期通过虚拟机模板解决;
  • 各个项目组之间的业务调用,都是通过 HTTP 接口交互,效率不高;
  • 部署靠人工编译打包上传,测试/上线,无 CI/CD,开发效率低;
  • 运维压力大,运维资源缺乏,各个服务、中间件的监控不到位,虽有 Zabbix,但管理不过来,缺少统一的监控面板;
  • 虚拟机的资源难以动态分配利用,资源被固定化;
  • 缺少专业的运维人员,环境安装、监控不够完善,资源使用情况难可视化(运维人员就一个);
  • 前端组也想采用容器化部署,不要在本地打包,通过 FTP 上传静态文件的方式;
  • 运维人员想减少虚拟机数量,新上线业务不需要创建很多虚拟机,只需要增加少量节点就可以。

平台选型

业务痛点

从前面的介绍,在从单体架向分布式架构的演变过程中,伴随着业务的快速发现,与快速响应,基础模块及业务模块越来越多,团队都忙在打包部署的过程中。

  • 修 Bug 打包部署。
  • 上线打包部署。
  • 每次上线全团队 StayBy, 折腾至深夜。
  • 效率低下,版本延迟。

引入 Jenkins 半自动化部署

为解决团队的效率问题,首先引入 Jenkins,通过 Jenkins 解决大部分部署问题。

引入 Kubernetes(K8s)

Jenkins 的引入,已经能很大的提高效率,但还是存在一些问题:

  • 服务太多,每次部署要排队。
  • 虚拟机太多,维护 Shell 脚本成本高。
  • 资源利用率低,没有用到点上。

自建 K8s 集群,可以解决繁锁的 Shell 脚本问题,结合 Jenkins 的 K8s 的插件,通过 Dockerfile + yaml 的方式进行部署。

自建 K8s 维护痛点:

  • 运维集群困难,缺乏简单方便的可视化工具,团队大多是开发人员,运维经验有限。
  • 操作 K8s 都是纯脚本形式,维护比较困难,由于缺乏可视化工具,应用部署与配置修改全是依靠命令脚本手动执行。
  • 还是达不到回收服务器权限的目的,排查问题还是要上 K8s,缺少资源监控与调度。

选择 KubeSphere 原由

在 K8s 可视化管理工具的调研过程中,发现 KubeSphere 比较适合公司,对比国外开源的 Kubernetes Dashboard、Rancher,KubeSphere 还是比较适合国内的使用。

  • 可视化的 K8s 管理工具,包含了所有 K8s 的功能。
  • 一体化的 DevOps,降低部署复杂度,应用生命周期。
  • 多租户管理,满足不同子公司的业务隔离需求。
  • 集成角色权限管理功能,满足对不同人员分配不同权限的需求。
  • 在线日志查看功能,降低对服务器用户的管理。
  • 集群可视化管理,监控可视化。
  • 平台中的所有功能都是可插拔与松耦合,可以根据业务场景可选安装所需功能组件。

落地实践、效果

平台微服务架构部署

KubeSphere 生产环境规划与安装

生产环的配置规划是: 3 个 Master Node:8C 16G 100G 磁盘, 10+ Worker Node(初期),20+ Worker Node(后续增加)。

部署 SpringCloud 的微服务套件,包括 Eureka,Redis, 电商平台的微服务,如商品、订单、会员等。ToB 微服务,企业数字化 10+ 项目。

KubeSphere 的使用规则

团队及项目划分
  • 按子公司及不同的端建立不同的企业空间 -- 企业空间。
  • 在项目管理中按不同的业务线,建立不同的项目组合。
  • 创建的用户,按 platform-regular 的角色。
  • 在企业空间、项目管理、流水线中添加成员。

节点管理及部署
  • 节点标签,为每个节点配置标签,和 yml 配合使用。
  • 不使用主机网络模式。
  • 重要数据文件采用挂载宿主机目录。
  • 对外服务需提供 NodePort 配置。

KubeSphere 集群

KubeSphere 应用部署与流水线

KubeSphere 使用效果

  • 全流程的 DevOps,释放开发频繁打包部署的工作,专注于研发。
  • 可视化的资源监控,配合告警等措施,提升运维的能力。
  • 多租户,多空间,项目的隔离,使用者权限的分管,让跨业务团队的管理更精准。
  • 缩减原来的虚拟主机(4C 8G),组成资源更大的节点,资源利用率提升。
  • 支持在线化的动态扩容,操作方便,想增加或减少实例,操作一下就搞定。
  • 前端也实现容器化部署,释放手动打包上传的工作量。

存在问题及解决方法

当时官方提供的 Maven 版本不是 3.6 的版本,如何解决?

解决:自己制作了一个 3.6 的 Maven 基础镜像,然后在 Clusterconfiguration,找到 Maven 的 image,修改即可。

自建了 nexus,如何修改 maven setting.xml?

解决:在 CRDs 筛选 kubesphere-devops-system,找到 ks-install,修改里面的 maven setting.xml 即可,修改后,要登录 Jenkins,重新 reload 配置。

如何访问 Jenkins?

解决:Master 的 ip + 30180,登录账号密码和 KubeSphere 的管理员。可以参考文件:https://juejin.cn/post/7124589639536476190

在容器中如何访问共享文件?

解决:通过挂载 NFS 系统来访问。

容器中的文件随着容器销毁而消失,想要保存更长时间文件?

解决:通过挂载宿主机的文件/或磁盘。

容器在滚动部署过程中会被销毁,其他服务调用还是走旧 IP 访问,404?

解决:通过在 Kubernetes 的 Service 来调用(SVC)。

DevOps 与自建 Gitlab 搭配怎么触发构建?

解决:进入 Jenkins 在流水线上使用通用钩子触发。

未来规划

通过引入 KubeSphere 中间件管理平台,极大地提交了整体的交付效率,节省在部署环节的时间支付,通过工具更好的实现了 CI/CD;提供了可视化的资源界面,能更清楚地知道各个服务器的资源使用情况,做到很好的监控。

随着平台的使用成熟,越来越多的业务将迁入平台,包括前端、.net、或者其他子公司的业务。KubeSphere 的更多功能,将为业务的发展提供很好的基础。

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

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

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

相关文章

YOLOv8改进 | 主干篇 | 轻量级网络ShuffleNetV2(附代码+修改教程)

一、本文内容 本文给大家带来的改进内容是ShuffleNetV2,这是一种为移动设备设计的高效CNN架构。其在ShuffleNetV1的基础上强调除了FLOPs之外,还应考虑速度、内存访问成本和平台特性。(我在YOLOv8n上修改该主干降低了GFLOPs,但是参数量还是有一定上涨&am…

【Docker】基础篇

文章目录 Docker为什么出现容器和虚拟机关于虚拟机关于Docker二者区别: Docker的基本组成相关概念-镜像,容器,仓库安装Docker卸载docker阿里云镜像加速docker run的原理**为什么容器比虚拟机快**Docker的常用命令1.帮助命令2.镜像相关命令3.容…

C语言—每日选择题—Day51

第一题 1. 对于函数void f(int x);,下面调用正确的是() A:int y f(9); B:f(9); C:f( f(9) ); D:xf(); 答案及解析 B 函数调用要看返回值和传参是否正确; A:错误&#xf…

【ArcGIS微课1000例】0081:ArcGIS指北针乱码解决方案

问题描述: ArcGIS软件在作图模式下插入指北针,出现指北针乱码,如下图所示: 问题解决 下载并安装字体(配套实验数据包0081.rar中获取)即可解决该问题。 正常的指北针选择器: 专栏介绍&#xff…

Hadoop3.x完全分布式模式下slaveDataNode节点未启动调整

目录 前言 一、问题重现 1、查询Hadoop版本 2、集群启动Hadoop 二、问题分析 三、Hadoop3.x的集群配置 1、停止Hadoop服务 2、配置workers 3、从节点检测 4、WebUI监控 总结 前言 在大数据的世界里,Hadoop绝对是一个值得学习的框架。关于Hadoop的知识&…

elementui中的el-table,当使用fixed属性时,table主体会遮挡住滚动条的大半部分,导致很难选中。

情况&#xff1a; 解决&#xff1a; el-table加个类&#xff0c;这里取为class"table" 然后是样式部分&#xff1a; <style scoped lang"scss"> ::v-deep.table {// 滚动条高度调整::-webkit-scrollbar {height: 15px;}// pointer-events 的基本信…

一款电压检测LVD

一、基本概述 The TX61C series devices are a set of three terminal low power voltage detectors implemented in CMOS technology. Each voltage detector in the series detects a particular fixed voltage ranging from 0.9V to 5.0V. The voltage detectors consist…

使用Axure的中继器的交互动作解决增删改查h

&#x1f3ac; 艳艳耶✌️&#xff1a;个人主页 &#x1f525; 个人专栏 &#xff1a;《产品经理如何画泳道图&流程图》 ⛺️ 越努力 &#xff0c;越幸运 目录 一、中继器的交互 1、什么是中继器的交互 2、Axure中继器的交互 3、如何使用中继器&#xff1f; 二…

✺ch7——光照

目录 光照模型光源材质ADS光照计算实现ADS光照Gouraud着色&#xff08;双线性光强插值法&#xff09; Phong着色Blinn-Phong反射模型结合光照与纹理补充说明 光照模型 光照模型(lighting model)有时也称为着色模型(shading model)&#xff0c;在着色器编程存在的情况下&#x…

Flask重定向后无效果前端无跳转无反应问题

在网上搜了一下并没有什么好的解决方案&#xff0c;有的话也只是告诉你如何修改代码&#xff0c;并没有讲明白其中的原理以及导致问题的核心&#xff0c;因此特意去了解了一下HTTP的规范找到了答案 问题说明 问题出现的流程大致都是前端发送Ajax请求给后端&#xff0c;进行一些…

redis 7.2.3 官方配置文件 redis.conf sentinel.conf

文章目录 Intro解压配置使用等官方配置文件模板redis.conf 仅配置项redis.conf 完整版(配置项注释)sentinel.conf 仅配置项sentinel.conf 完整版(配置项注释) Intro 在下载页面&#xff1a;https://redis.io/download/ 下载最新版本的redis&#xff1a; https://github.com/re…

K8s攻击案例:RBAC配置不当导致集群接管

01、概述 Service Account本质是服务账号&#xff0c;是Pod连接K8s集群的凭证。在默认情况下&#xff0c;系统会为创建的Pod提供一个默认的Service Account&#xff0c;用户也可以自定义Service Account&#xff0c;与Service Account关联的凭证会自动挂载到Pod的文件系统中。 …

xxl-job 分布式调度学习笔记

1.概述 1.1什么是任务调度 业务场景&#xff1a; 上午10点&#xff0c;下午2点发放一批优惠券 银行系统需要在信用卡到期还款日的前三天进行短信提醒 财务系统需要在每天凌晨0:10分结算前一天的财务数据&#xff0c;统计汇总 不同系统间的数据需要保持一致&#xff0c;这时…

【论文解读】Comparing VVC, HEVC and AV1 using Objective and Subjective Assessments

时间&#xff1a;2020 级别&#xff1a;IEEE 机构&#xff1a; IEEE 组织 摘要&#xff1a; 对3种最新的视频编码标准HEVC (High Efficiency video Coding)测试模型HM (High Efficiency video Coding)、amedia video 1 (AV1)和Versatile video Coding测试模型 (VTM)进行了客观和…

MCU为什么上电不启动?

都遇到过这样的问题吧&#xff0c;自信满满的把程序下载到板子上&#xff0c;结果发现MCU居然没启动。 出现这个问题有很多原因&#xff0c;总结为以下五点&#xff1a; 第一&#xff0c;boot引脚电平不对&#xff0c;例如在GD32的MCU上&#xff0c;boot引脚决定了MCU的启动方式…

CentOS 8离线安装telnet

下载telnet rpm安装包&#xff0c;可从https://www.rpmfind.net/linux/rpm2html/search.php?querytelnet&submitSearch…&systemcentos&arch 根据自己的操作系统下载对应的包&#xff0c;这里以CentOS8为例,分别下载如下的rtp包 xinetd-2.3.15-24.el8.x86_64.rpm…

ansible模块 (7-13)

模块 7、hostname模块&#xff1a; 远程主机名管理模块 ansible 192.168.10.202 -m hostname -a nameliu 8、copy模块&#xff1a; 用于复制指定的主机文件到远程主机的模块 常用参数&#xff1a; dest: 指出要复制的文件在哪&#xff0c;必须使用绝对路径。如果源目标是…

需求:通过按钮的点击事件控制另一个输出框/按钮的点击

目录 第一章 接到需求 第二章 了解需求 第三章 解决需求 第四章 优化代码 第五章 解决问题 第一章 接到需求 最近开发的时候遇到这么一个事&#xff0c;技术经理是个全栈&#xff0c;已经把接口生成了&#xff0c;而且前端页面也写好了一个初稿&#xff0c;操作什么的功…

MySQL数据库——SQL语法

Structured Query Language&#xff08;结构化查询语言&#xff09;&#xff0c;简称SQL&#xff0c;是用于操作关系型数据库的标准编程语言。SQL提供了一种与数据库交互的方式&#xff0c;可以用于查询、插入、更新和删除数据库中的数据。 1. SQL通用语法 SQL语句可以写在一…